Merge remote-tracking branch 'origin/master' into staging.
Conflicts: pkgs/desktops/e18/enlightenment.nix
This commit is contained in:
commit
2d326e5032
@ -92,6 +92,7 @@
|
|||||||
skeidel = "Sven Keidel <svenkeidel@gmail.com>";
|
skeidel = "Sven Keidel <svenkeidel@gmail.com>";
|
||||||
smironov = "Sergey Mironov <ierton@gmail.com>";
|
smironov = "Sergey Mironov <ierton@gmail.com>";
|
||||||
sprock = "Roger Mason <rmason@mun.ca>";
|
sprock = "Roger Mason <rmason@mun.ca>";
|
||||||
|
tailhook = "Paul Colomiets <paul@colomiets.name>";
|
||||||
thammers = "Tobias Hammerschmidt <jawr@gmx.de>";
|
thammers = "Tobias Hammerschmidt <jawr@gmx.de>";
|
||||||
the-kenny = "Moritz Ulrich <moritz@tarn-vedra.de>";
|
the-kenny = "Moritz Ulrich <moritz@tarn-vedra.de>";
|
||||||
thoughtpolice = "Austin Seipp <aseipp@pobox.com>";
|
thoughtpolice = "Austin Seipp <aseipp@pobox.com>";
|
||||||
|
@ -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)
|
|
||||||
)
|
|
@ -1036,21 +1036,22 @@ users.extraUsers.alice =
|
|||||||
{ createHome = true;
|
{ createHome = true;
|
||||||
home = "/home/alice";
|
home = "/home/alice";
|
||||||
description = "Alice Foobar";
|
description = "Alice Foobar";
|
||||||
extraGroups = [ "wheel" ];
|
extraGroups = [ "wheel" "networkmanager" ];
|
||||||
useDefaultShell = true;
|
useDefaultShell = true;
|
||||||
openssh.authorizedKeys.keys = [ "ssh-dss AAAAB3Nza... alice@foobar" ];
|
openssh.authorizedKeys.keys = [ "ssh-dss AAAAB3Nza... alice@foobar" ];
|
||||||
};
|
};
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
Note that <literal>alice</literal> is a member of the
|
Note that <literal>alice</literal> is a member of the
|
||||||
<literal>wheel</literal> group, which allows her to use
|
<literal>wheel</literal> and <literal>networkmanager</literal> groups,
|
||||||
<command>sudo</command> to execute commands as
|
which allows her to use <command>sudo</command> to execute commands as
|
||||||
<literal>root</literal>. Also note the SSH public key that allows
|
<literal>root</literal> and to configure the network, respectively.
|
||||||
remote logins with the corresponding private key. Users created in
|
Also note the SSH public key that allows remote logins with the
|
||||||
this way do not have a password by default, so they cannot log in via
|
corresponding private key. Users created in this way do not have a
|
||||||
mechanisms that require a password. However, you can use the
|
password by default, so they cannot log in via mechanisms that require
|
||||||
<command>passwd</command> program to set a password, which is retained
|
a password. However, you can use the <command>passwd</command> program
|
||||||
across invocations of <command>nixos-rebuild</command>.</para>
|
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
|
<para>A user ID (uid) is assigned automatically. You can also specify
|
||||||
a uid manually by adding
|
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-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>
|
<section xml:id="sec-ssh"><title>Secure shell access</title>
|
||||||
|
|
||||||
<para>Secure shell (SSH) access to your machine can be enabled by
|
<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>
|
<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>
|
<para>
|
||||||
NixOS will start wpa_supplicant for you if you enable this setting:
|
NixOS will start wpa_supplicant for you if you enable this setting:
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ rec {
|
|||||||
|
|
||||||
report = releaseTools.gcovReport { coverageRuns = [ test ]; };
|
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 =
|
runInMachine =
|
||||||
|
@ -179,7 +179,6 @@ in
|
|||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" =
|
||||||
{ fsType = "tmpfs";
|
{ fsType = "tmpfs";
|
||||||
device = "none";
|
|
||||||
options = "mode=0755";
|
options = "mode=0755";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -192,6 +191,8 @@ in
|
|||||||
noCheck = true;
|
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" =
|
fileSystems."/nix/.ro-store" =
|
||||||
{ fsType = "squashfs";
|
{ fsType = "squashfs";
|
||||||
device = "/iso/nix-store.squashfs";
|
device = "/iso/nix-store.squashfs";
|
||||||
@ -201,23 +202,20 @@ in
|
|||||||
|
|
||||||
fileSystems."/nix/.rw-store" =
|
fileSystems."/nix/.rw-store" =
|
||||||
{ fsType = "tmpfs";
|
{ fsType = "tmpfs";
|
||||||
device = "none";
|
|
||||||
options = "mode=0755";
|
options = "mode=0755";
|
||||||
neededForBoot = true;
|
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.availableKernelModules = [ "squashfs" "iso9660" ];
|
||||||
|
|
||||||
boot.initrd.kernelModules = [ "loop" ];
|
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
|
# Closures to be copied to the Nix store on the CD, namely the init
|
||||||
# script and the top-level system configuration directory.
|
# script and the top-level system configuration directory.
|
||||||
isoImage.storeContents =
|
isoImage.storeContents =
|
||||||
@ -313,8 +311,8 @@ in
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
# Add vfat support to the initrd to enable people to copy the
|
# 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
|
# contents of the CD to a bootable USB stick.
|
||||||
boot.initrd.supportedFilesystems = [ "vfat" "unionfs-fuse" ];
|
boot.initrd.supportedFilesystems = [ "vfat" ];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -137,6 +137,7 @@
|
|||||||
gitolite = 127;
|
gitolite = 127;
|
||||||
znc = 128;
|
znc = 128;
|
||||||
polipo = 129;
|
polipo = 129;
|
||||||
|
mopidy = 130;
|
||||||
|
|
||||||
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
||||||
|
|
||||||
@ -248,6 +249,8 @@
|
|||||||
firebird = 127;
|
firebird = 127;
|
||||||
znc = 128;
|
znc = 128;
|
||||||
polipo = 129;
|
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!
|
# When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399!
|
||||||
|
|
||||||
|
@ -79,6 +79,7 @@
|
|||||||
./services/audio/alsa.nix
|
./services/audio/alsa.nix
|
||||||
./services/audio/fuppes.nix
|
./services/audio/fuppes.nix
|
||||||
./services/audio/mpd.nix
|
./services/audio/mpd.nix
|
||||||
|
./services/audio/mopidy.nix
|
||||||
./services/backup/almir.nix
|
./services/backup/almir.nix
|
||||||
./services/backup/bacula.nix
|
./services/backup/bacula.nix
|
||||||
./services/backup/mysql-backup.nix
|
./services/backup/mysql-backup.nix
|
||||||
@ -296,6 +297,7 @@
|
|||||||
./services/x11/xserver.nix
|
./services/x11/xserver.nix
|
||||||
./system/activation/activation-script.nix
|
./system/activation/activation-script.nix
|
||||||
./system/activation/top-level.nix
|
./system/activation/top-level.nix
|
||||||
|
./system/boot/emergency-mode.nix
|
||||||
./system/boot/kernel.nix
|
./system/boot/kernel.nix
|
||||||
./system/boot/kexec.nix
|
./system/boot/kexec.nix
|
||||||
./system/boot/loader/efi.nix
|
./system/boot/loader/efi.nix
|
||||||
@ -311,15 +313,17 @@
|
|||||||
./system/boot/stage-1.nix
|
./system/boot/stage-1.nix
|
||||||
./system/boot/stage-2.nix
|
./system/boot/stage-2.nix
|
||||||
./system/boot/systemd.nix
|
./system/boot/systemd.nix
|
||||||
|
./system/boot/tmp.nix
|
||||||
./system/etc/etc.nix
|
./system/etc/etc.nix
|
||||||
./system/upstart/upstart.nix
|
./system/upstart/upstart.nix
|
||||||
./tasks/cpu-freq.nix
|
./tasks/cpu-freq.nix
|
||||||
./tasks/encrypted-devices.nix
|
./tasks/encrypted-devices.nix
|
||||||
|
./tasks/filesystems.nix
|
||||||
./tasks/filesystems/btrfs.nix
|
./tasks/filesystems/btrfs.nix
|
||||||
|
./tasks/filesystems/cifs.nix
|
||||||
./tasks/filesystems/ext.nix
|
./tasks/filesystems/ext.nix
|
||||||
./tasks/filesystems/f2fs.nix
|
./tasks/filesystems/f2fs.nix
|
||||||
./tasks/filesystems/nfs.nix
|
./tasks/filesystems/nfs.nix
|
||||||
./tasks/filesystems.nix
|
|
||||||
./tasks/filesystems/reiserfs.nix
|
./tasks/filesystems/reiserfs.nix
|
||||||
./tasks/filesystems/unionfs-fuse.nix
|
./tasks/filesystems/unionfs-fuse.nix
|
||||||
./tasks/filesystems/vfat.nix
|
./tasks/filesystems/vfat.nix
|
||||||
@ -334,6 +338,7 @@
|
|||||||
./testing/service-runner.nix
|
./testing/service-runner.nix
|
||||||
./virtualisation/container-config.nix
|
./virtualisation/container-config.nix
|
||||||
./virtualisation/containers.nix
|
./virtualisation/containers.nix
|
||||||
|
./virtualisation/docker.nix
|
||||||
./virtualisation/libvirtd.nix
|
./virtualisation/libvirtd.nix
|
||||||
#./virtualisation/nova.nix
|
#./virtualisation/nova.nix
|
||||||
./virtualisation/virtualbox-guest.nix
|
./virtualisation/virtualbox-guest.nix
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
# Include some utilities that are useful for installing or repairing
|
# Include some utilities that are useful for installing or repairing
|
||||||
# the system.
|
# the system.
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.subversion # for nixos-checkout
|
|
||||||
pkgs.w3m # needed for the manual anyway
|
pkgs.w3m # needed for the manual anyway
|
||||||
pkgs.testdisk # useful for repairing boot problems
|
pkgs.testdisk # useful for repairing boot problems
|
||||||
pkgs.mssys # for writing Microsoft boot sectors / MBRs
|
pkgs.mssys # for writing Microsoft boot sectors / MBRs
|
||||||
|
@ -13,8 +13,9 @@ with lib;
|
|||||||
];
|
];
|
||||||
|
|
||||||
environment.sessionVariables =
|
environment.sessionVariables =
|
||||||
{ OPENSSL_X509_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
|
{ SSL_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
|
||||||
CURL_CA_BUNDLE = "/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";
|
GIT_SSL_CAINFO = "/etc/ssl/certs/ca-bundle.crt";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
107
nixos/modules/services/audio/mopidy.nix
Normal file
107
nixos/modules/services/audio/mopidy.nix
Normal 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;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -22,14 +22,11 @@ let
|
|||||||
|
|
||||||
nixConf =
|
nixConf =
|
||||||
let
|
let
|
||||||
# Tricky: if we're using a chroot for builds, then we need
|
# If we're using a chroot for builds, then provide /bin/sh in
|
||||||
# /bin/sh in the chroot (our own compromise to purity).
|
# the chroot as a bind-mount to bash. This means we also need to
|
||||||
# However, since /bin/sh is a symlink to some path in the
|
# include the entire closure of bash.
|
||||||
# Nix store, which furthermore has runtime dependencies on
|
sh = pkgs.stdenv.shell;
|
||||||
# other paths in the store, we need the closure of /bin/sh
|
binshDeps = pkgs.writeReferencesToFile sh;
|
||||||
# in `build-chroot-dirs' - otherwise any builder that uses
|
|
||||||
# /bin/sh won't work.
|
|
||||||
binshDeps = pkgs.writeReferencesToFile config.system.build.binsh;
|
|
||||||
in
|
in
|
||||||
pkgs.runCommand "nix.conf" {extraOptions = cfg.extraOptions; } ''
|
pkgs.runCommand "nix.conf" {extraOptions = cfg.extraOptions; } ''
|
||||||
extraPaths=$(for i in $(cat ${binshDeps}); do if test -d $i; then echo $i; fi; done)
|
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-users-group = nixbld
|
||||||
build-max-jobs = ${toString (cfg.maxJobs)}
|
build-max-jobs = ${toString (cfg.maxJobs)}
|
||||||
build-use-chroot = ${if cfg.useChroot then "true" else "false"}
|
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}
|
binary-caches = ${toString cfg.binaryCaches}
|
||||||
trusted-binary-caches = ${toString cfg.trustedBinaryCaches}
|
trusted-binary-caches = ${toString cfg.trustedBinaryCaches}
|
||||||
$extraOptions
|
$extraOptions
|
||||||
@ -253,8 +250,6 @@ in
|
|||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
|
||||||
nix.chrootDirs = [ "/bin" ];
|
|
||||||
|
|
||||||
environment.etc."nix/nix.conf".source = nixConf;
|
environment.etc."nix/nix.conf".source = nixConf;
|
||||||
|
|
||||||
# List of machines for distributed Nix builds in the format
|
# List of machines for distributed Nix builds in the format
|
||||||
|
@ -122,9 +122,8 @@ in {
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network-interfaces.target" ];
|
after = [ "network-interfaces.target" ];
|
||||||
environment = { ES_HOME = cfg.dataDir; };
|
environment = { ES_HOME = cfg.dataDir; };
|
||||||
path = [ pkgs.elasticsearch ];
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "elasticsearch -Des.path.conf=${configDir} ${toString cfg.extraCmdLineOptions}";
|
ExecStart = "${pkgs.elasticsearch}/bin/elasticsearch -Des.path.conf=${configDir} ${toString cfg.extraCmdLineOptions}";
|
||||||
User = "elasticsearch";
|
User = "elasticsearch";
|
||||||
PermissionsStartOnly = true;
|
PermissionsStartOnly = true;
|
||||||
};
|
};
|
||||||
|
@ -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
|
# 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 {
|
phpOptions = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
|
@ -29,6 +29,14 @@ ${extraWorkersProperties}
|
|||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
|
options = {
|
||||||
|
extraWorkersProperties = lib.mkOption {
|
||||||
|
default = "";
|
||||||
|
description = "Additional configuration for the workers.properties file.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
extraModules = [
|
extraModules = [
|
||||||
{ name = "jk"; path = "${pkgs.tomcat_connectors}/modules/mod_jk.so"; }
|
{ name = "jk"; path = "${pkgs.tomcat_connectors}/modules/mod_jk.so"; }
|
||||||
];
|
];
|
||||||
|
@ -77,6 +77,11 @@ in
|
|||||||
description = "Whether to enable logging per virtual host.";
|
description = "Whether to enable logging per virtual host.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
jdk = mkOption {
|
||||||
|
default = pkgs.jdk;
|
||||||
|
description = "Which JDK to use.";
|
||||||
|
};
|
||||||
|
|
||||||
axis2 = {
|
axis2 = {
|
||||||
|
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
@ -332,13 +337,13 @@ in
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
script = ''
|
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 =
|
postStop =
|
||||||
''
|
''
|
||||||
echo "Stopping tomcat..."
|
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
|
||||||
'';
|
'';
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
with pkgs.lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
|
@ -41,16 +41,19 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
accelFactor = mkOption {
|
accelFactor = mkOption {
|
||||||
|
type = types.nullOr types.string;
|
||||||
default = "0.001";
|
default = "0.001";
|
||||||
description = "Cursor acceleration (how fast speed increases from minSpeed to maxSpeed).";
|
description = "Cursor acceleration (how fast speed increases from minSpeed to maxSpeed).";
|
||||||
};
|
};
|
||||||
|
|
||||||
minSpeed = mkOption {
|
minSpeed = mkOption {
|
||||||
|
type = types.nullOr types.string;
|
||||||
default = "0.6";
|
default = "0.6";
|
||||||
description = "Cursor speed factor for precision finger motion.";
|
description = "Cursor speed factor for precision finger motion.";
|
||||||
};
|
};
|
||||||
|
|
||||||
maxSpeed = mkOption {
|
maxSpeed = mkOption {
|
||||||
|
type = types.nullOr types.string;
|
||||||
default = "1.0";
|
default = "1.0";
|
||||||
description = "Cursor speed factor for highest-speed finger motion.";
|
description = "Cursor speed factor for highest-speed finger motion.";
|
||||||
};
|
};
|
||||||
@ -120,9 +123,9 @@ in {
|
|||||||
MatchIsTouchpad "on"
|
MatchIsTouchpad "on"
|
||||||
${optionalString (cfg.dev != null) ''MatchDevicePath "${cfg.dev}"''}
|
${optionalString (cfg.dev != null) ''MatchDevicePath "${cfg.dev}"''}
|
||||||
Driver "synaptics"
|
Driver "synaptics"
|
||||||
Option "MinSpeed" "${cfg.minSpeed}"
|
${optionalString (cfg.minSpeed != null) ''Option "MinSpeed" "${cfg.minSpeed}"''}
|
||||||
Option "MaxSpeed" "${cfg.maxSpeed}"
|
${optionalString (cfg.maxSpeed != null) ''Option "MaxSpeed" "${cfg.maxSpeed}"''}
|
||||||
Option "AccelFactor" "${cfg.accelFactor}"
|
${optionalString (cfg.accelFactor != null) ''Option "AccelFactor" "${cfg.accelFactor}"''}
|
||||||
${optionalString cfg.tapButtons tapConfig}
|
${optionalString cfg.tapButtons tapConfig}
|
||||||
Option "ClickFinger1" "${builtins.elemAt cfg.buttonsMap 0}"
|
Option "ClickFinger1" "${builtins.elemAt cfg.buttonsMap 0}"
|
||||||
Option "ClickFinger2" "${builtins.elemAt cfg.buttonsMap 1}"
|
Option "ClickFinger2" "${builtins.elemAt cfg.buttonsMap 1}"
|
||||||
|
37
nixos/modules/system/boot/emergency-mode.nix
Normal file
37
nixos/modules/system/boot/emergency-mode.nix
Normal 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"
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -68,20 +68,15 @@ with lib;
|
|||||||
|
|
||||||
config = mkIf (!config.boot.isContainer) {
|
config = mkIf (!config.boot.isContainer) {
|
||||||
|
|
||||||
environment.etc = [
|
environment.etc."modprobe.d/ubuntu.conf".source = "${pkgs.kmod-blacklist-ubuntu}/modprobe.conf";
|
||||||
{ source = "${pkgs.kmod-blacklist-ubuntu}/modprobe.conf";
|
|
||||||
target = "modprobe.d/ubuntu.conf";
|
environment.etc."modprobe.d/nixos.conf".text =
|
||||||
}
|
|
||||||
{ source = pkgs.writeText "modprobe.conf"
|
|
||||||
''
|
''
|
||||||
${flip concatMapStrings config.boot.blacklistedKernelModules (name: ''
|
${flip concatMapStrings config.boot.blacklistedKernelModules (name: ''
|
||||||
blacklist ${name}
|
blacklist ${name}
|
||||||
'')}
|
'')}
|
||||||
${config.boot.extraModprobeConfig}
|
${config.boot.extraModprobeConfig}
|
||||||
'';
|
'';
|
||||||
target = "modprobe.d/nixos.conf";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = [ config.system.sbin.modprobe pkgs.kmod ];
|
environment.systemPackages = [ config.system.sbin.modprobe pkgs.kmod ];
|
||||||
|
|
||||||
|
@ -4,7 +4,8 @@ targetRoot=/mnt-root
|
|||||||
console=tty1
|
console=tty1
|
||||||
|
|
||||||
export LD_LIBRARY_PATH=@extraUtils@/lib
|
export LD_LIBRARY_PATH=@extraUtils@/lib
|
||||||
export PATH=@extraUtils@/bin:@extraUtils@/sbin
|
export PATH=@extraUtils@/bin
|
||||||
|
ln -s @extraUtils@/bin /bin
|
||||||
|
|
||||||
|
|
||||||
fail() {
|
fail() {
|
||||||
@ -262,6 +263,13 @@ mountFS() {
|
|||||||
|
|
||||||
checkFS "$device" "$fsType"
|
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..."
|
echo "mounting $device on $mountPoint..."
|
||||||
|
|
||||||
mkdir -p "/mnt-root$mountPoint" || true
|
mkdir -p "/mnt-root$mountPoint" || true
|
||||||
|
@ -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
|
# 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
|
# 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,
|
# copy what we need. Instead of using statically linked binaries,
|
||||||
@ -51,6 +35,7 @@ let
|
|||||||
}
|
}
|
||||||
''
|
''
|
||||||
mkdir -p $out/bin $out/lib
|
mkdir -p $out/bin $out/lib
|
||||||
|
ln -s $out/bin $out/sbin
|
||||||
|
|
||||||
# Copy what we need from Glibc.
|
# Copy what we need from Glibc.
|
||||||
cp -pv ${pkgs.glibc}/lib/ld*.so.? $out/lib
|
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
|
cp -pv ${pkgs.gcc.gcc}/lib*/libgcc_s.so.* $out/lib
|
||||||
|
|
||||||
# Copy BusyBox.
|
# Copy BusyBox.
|
||||||
cp -rvd ${busybox}/{bin,sbin} $out/
|
cp -pvd ${pkgs.busybox}/bin/* ${pkgs.busybox}/sbin/* $out/bin/
|
||||||
chmod -R u+w $out
|
|
||||||
|
|
||||||
# Copy some utillinux stuff.
|
# 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/libblkid*.so.* $out/lib
|
||||||
cp -pdv ${pkgs.utillinux}/lib/libuuid*.so.* $out/lib
|
cp -pdv ${pkgs.utillinux}/lib/libuuid*.so.* $out/lib
|
||||||
|
|
||||||
@ -89,12 +73,7 @@ let
|
|||||||
|
|
||||||
# Copy modprobe.
|
# Copy modprobe.
|
||||||
cp -v ${pkgs.kmod}/bin/kmod $out/bin/
|
cp -v ${pkgs.kmod}/bin/kmod $out/bin/
|
||||||
ln -s kmod $out/bin/modprobe
|
ln -sf kmod $out/bin/modprobe
|
||||||
|
|
||||||
# Maybe copy cifs utils
|
|
||||||
${optionalString needsCifsUtils ''
|
|
||||||
cp -v ${pkgs.cifs_utils}/sbin/mount.cifs $out/bin
|
|
||||||
''}
|
|
||||||
|
|
||||||
${config.boot.initrd.extraUtilsCommands}
|
${config.boot.initrd.extraUtilsCommands}
|
||||||
|
|
||||||
@ -313,6 +292,13 @@ in
|
|||||||
example = "xz";
|
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 {
|
fileSystems = mkOption {
|
||||||
options.neededForBoot = mkOption {
|
options.neededForBoot = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
@ -347,5 +333,7 @@ in
|
|||||||
# Prevent systemd from waiting for the /dev/root symlink.
|
# Prevent systemd from waiting for the /dev/root symlink.
|
||||||
systemd.units."dev-root.device".text = "";
|
systemd.units."dev-root.device".text = "";
|
||||||
|
|
||||||
|
boot.initrd.supportedFilesystems = map (fs: fs.fsType) fileSystems;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ setPath "@path@"
|
|||||||
# Normally, stage 1 mounts the root filesystem read/writable.
|
# Normally, stage 1 mounts the root filesystem read/writable.
|
||||||
# However, in some environments, stage 2 is executed directly, and the
|
# However, in some environments, stage 2 is executed directly, and the
|
||||||
# root is read-only. So make it writable here.
|
# 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
|
# 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 -rf /var/run /var/lock
|
||||||
rm -f /etc/{group,passwd,shadow}.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.
|
# Also get rid of temporary GC roots.
|
||||||
rm -rf /nix/var/nix/gcroots/tmp /nix/var/nix/temproots
|
rm -rf /nix/var/nix/gcroots/tmp /nix/var/nix/temproots
|
||||||
|
@ -17,7 +17,7 @@ let
|
|||||||
src = ./stage-2-init.sh;
|
src = ./stage-2-init.sh;
|
||||||
shellDebug = "${pkgs.bashInteractive}/bin/bash";
|
shellDebug = "${pkgs.bashInteractive}/bin/bash";
|
||||||
isExecutable = true;
|
isExecutable = true;
|
||||||
inherit (config.boot) devShmSize runSize cleanTmpDir;
|
inherit (config.boot) devShmSize runSize;
|
||||||
inherit (config.nix) readOnlyStore;
|
inherit (config.nix) readOnlyStore;
|
||||||
inherit (config.networking) useHostResolvConf;
|
inherit (config.networking) useHostResolvConf;
|
||||||
ttyGid = config.ids.gids.tty;
|
ttyGid = config.ids.gids.tty;
|
||||||
@ -26,8 +26,7 @@ let
|
|||||||
pkgs.utillinux
|
pkgs.utillinux
|
||||||
pkgs.sysvtools
|
pkgs.sysvtools
|
||||||
pkgs.openresolv
|
pkgs.openresolv
|
||||||
] ++ (optional config.boot.cleanTmpDir pkgs.findutils)
|
] ++ optional config.nix.readOnlyStore readonlyMountpoint;
|
||||||
++ optional config.nix.readOnlyStore readonlyMountpoint;
|
|
||||||
postBootCommands = pkgs.writeText "local-cmds"
|
postBootCommands = pkgs.writeText "local-cmds"
|
||||||
''
|
''
|
||||||
${config.boot.postBootCommands}
|
${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.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -162,10 +162,7 @@ let
|
|||||||
"systemd-sysctl.service"
|
"systemd-sysctl.service"
|
||||||
]
|
]
|
||||||
|
|
||||||
++ optionals cfg.enableEmergencyMode [
|
++ cfg.additionalUpstreamSystemUnits;
|
||||||
"emergency.target"
|
|
||||||
"emergency.service"
|
|
||||||
];
|
|
||||||
|
|
||||||
upstreamSystemWants =
|
upstreamSystemWants =
|
||||||
[ #"basic.target.wants"
|
[ #"basic.target.wants"
|
||||||
@ -317,7 +314,9 @@ let
|
|||||||
''
|
''
|
||||||
[Service]
|
[Service]
|
||||||
${let env = cfg.globalEnvironment // def.environment;
|
${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 ''
|
${if def.reloadIfChanged then ''
|
||||||
X-ReloadIfChanged=true
|
X-ReloadIfChanged=true
|
||||||
'' else if !def.restartIfChanged then ''
|
'' 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 {
|
systemd.tmpfiles.rules = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [];
|
||||||
@ -690,6 +676,15 @@ in
|
|||||||
description = "Definition of systemd per-user socket units.";
|
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.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
39
nixos/modules/system/boot/tmp.nix
Normal file
39
nixos/modules/system/boot/tmp.nix
Normal 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";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -9,7 +9,7 @@ let
|
|||||||
|
|
||||||
prioOption = prio: optionalString (prio !=null) " pri=${toString prio}";
|
prioOption = prio: optionalString (prio !=null) " pri=${toString prio}";
|
||||||
|
|
||||||
fileSystemOpts = { name, ... }: {
|
fileSystemOpts = { name, config, ... }: {
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
|
|
||||||
@ -68,6 +68,7 @@ let
|
|||||||
|
|
||||||
config = {
|
config = {
|
||||||
mountPoint = mkDefault name;
|
mountPoint = mkDefault name;
|
||||||
|
device = mkIf (config.fsType == "tmpfs") (mkDefault config.fsType);
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -124,13 +125,6 @@ in
|
|||||||
description = "Names of supported filesystem types.";
|
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.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.
|
# Add the mount helpers to the system path so that `mount' can find them.
|
||||||
system.fsPackages = [ pkgs.dosfstools ];
|
system.fsPackages = [ pkgs.dosfstools ];
|
||||||
|
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
[ pkgs.ntfs3g pkgs.cifs_utils pkgs.fuse ]
|
[ pkgs.ntfs3g pkgs.fuse ]
|
||||||
++ config.system.fsPackages;
|
++ config.system.fsPackages;
|
||||||
|
|
||||||
environment.etc.fstab.text =
|
environment.etc.fstab.text =
|
||||||
@ -157,7 +147,9 @@ in
|
|||||||
|
|
||||||
# Filesystems.
|
# Filesystems.
|
||||||
${flip concatMapStrings fileSystems (fs:
|
${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.mountPoint
|
||||||
+ " " + fs.fsType
|
+ " " + fs.fsType
|
||||||
+ " " + fs.options
|
+ " " + fs.options
|
||||||
|
25
nixos/modules/tasks/filesystems/cifs.nix
Normal file
25
nixos/modules/tasks/filesystems/cifs.nix
Normal 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
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
@ -2,12 +2,19 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
config = lib.mkMerge [
|
config = lib.mkMerge [
|
||||||
|
|
||||||
(lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.initrd.supportedFilesystems) {
|
(lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.initrd.supportedFilesystems) {
|
||||||
boot.initrd.kernelModules = [ "fuse" ];
|
boot.initrd.kernelModules = [ "fuse" ];
|
||||||
|
|
||||||
boot.initrd.extraUtilsCommands = ''
|
boot.initrd.extraUtilsCommands = ''
|
||||||
cp -v ${pkgs.fuse}/lib/libfuse* $out/lib
|
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
|
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 = ''
|
boot.initrd.postDeviceCommands = ''
|
||||||
@ -17,8 +24,10 @@
|
|||||||
ln -s $(which umount) /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.utillinux.name}/bin
|
ln -s $(which umount) /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.utillinux.name}/bin
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
||||||
(lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.supportedFilesystems) {
|
(lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.supportedFilesystems) {
|
||||||
system.fsPackages = [ pkgs.unionfs-fuse ];
|
system.fsPackages = [ pkgs.unionfs-fuse ];
|
||||||
})
|
})
|
||||||
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -46,21 +46,15 @@ with lib;
|
|||||||
|
|
||||||
config = mkIf config.hardware.trackpoint.enable {
|
config = mkIf config.hardware.trackpoint.enable {
|
||||||
|
|
||||||
jobs.trackpoint =
|
services.udev.extraRules =
|
||||||
{ description = "Initialize trackpoint";
|
''
|
||||||
|
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";
|
system.activationScripts.trackpoint =
|
||||||
|
''
|
||||||
task = true;
|
${config.systemd.package}/bin/udevadm trigger --attr-match=name="TPPS/2 IBM TrackPoint"
|
||||||
|
|
||||||
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
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -172,7 +172,7 @@ in
|
|||||||
boot.initrd.extraUtilsCommands =
|
boot.initrd.extraUtilsCommands =
|
||||||
''
|
''
|
||||||
# We need swapon in the initrd.
|
# 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
|
# Don't put old configurations in the GRUB menu. The user has no
|
||||||
|
109
nixos/modules/virtualisation/docker.nix
Normal file
109
nixos/modules/virtualisation/docker.nix
Normal 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;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
@ -121,19 +121,6 @@ in
|
|||||||
|
|
||||||
networking.usePredictableInterfaceNames = false;
|
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 =
|
systemd.services.fetch-ssh-keys =
|
||||||
{ description = "Fetch host keys and authorized_keys for root user";
|
{ description = "Fetch host keys and authorized_keys for root user";
|
||||||
|
|
||||||
@ -142,14 +129,15 @@ in
|
|||||||
after = [ "network-online.target" ];
|
after = [ "network-online.target" ];
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
|
|
||||||
path = [ pkgs.curl ];
|
path = [ pkgs.wget ];
|
||||||
script =
|
script =
|
||||||
''
|
''
|
||||||
|
wget="wget --retry-connrefused -t 6 --waitretry=10"
|
||||||
# Don't download the SSH key if it has already been downloaded
|
# Don't download the SSH key if it has already been downloaded
|
||||||
if ! [ -e /root/.ssh/authorized_keys ]; then
|
if ! [ -e /root/.ssh/authorized_keys ]; then
|
||||||
echo "obtaining SSH key..."
|
echo "obtaining SSH key..."
|
||||||
mkdir -p /root/.ssh
|
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
|
if [ $? -eq 0 -a -e /root/authorized-keys-metadata ]; then
|
||||||
cat /root/authorized-keys-metadata | cut -d: -f2- > /root/key.pub
|
cat /root/authorized-keys-metadata | cut -d: -f2- > /root/key.pub
|
||||||
if ! grep -q -f /root/key.pub /root/.ssh/authorized_keys; then
|
if ! grep -q -f /root/key.pub /root/.ssh/authorized_keys; then
|
||||||
@ -162,7 +150,7 @@ in
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "obtaining SSH private host key..."
|
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
|
if [ $? -eq 0 -a -e /root/ssh_host_ecdsa_key ]; then
|
||||||
mv -f /root/ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key
|
mv -f /root/ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key
|
||||||
echo "downloaded ssh_host_ecdsa_key"
|
echo "downloaded ssh_host_ecdsa_key"
|
||||||
@ -170,7 +158,7 @@ in
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "obtaining SSH public host key..."
|
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
|
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
|
mv -f /root/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
|
||||||
echo "downloaded ssh_host_ecdsa_key.pub"
|
echo "downloaded ssh_host_ecdsa_key.pub"
|
||||||
@ -179,7 +167,7 @@ in
|
|||||||
'';
|
'';
|
||||||
serviceConfig.Type = "oneshot";
|
serviceConfig.Type = "oneshot";
|
||||||
serviceConfig.RemainAfterExit = true;
|
serviceConfig.RemainAfterExit = true;
|
||||||
|
serviceConfig.StandardError = "journal+console";
|
||||||
|
serviceConfig.StandardOutput = "journal+console";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -275,12 +275,10 @@ in
|
|||||||
|
|
||||||
boot.loader.grub.device = mkVMOverride "/dev/vda";
|
boot.loader.grub.device = mkVMOverride "/dev/vda";
|
||||||
|
|
||||||
boot.initrd.supportedFilesystems = optional cfg.writableStore "unionfs-fuse";
|
|
||||||
|
|
||||||
boot.initrd.extraUtilsCommands =
|
boot.initrd.extraUtilsCommands =
|
||||||
''
|
''
|
||||||
# We need mke2fs in the initrd.
|
# We need mke2fs in the initrd.
|
||||||
cp ${pkgs.e2fsprogs}/sbin/mke2fs $out/bin
|
cp -f ${pkgs.e2fsprogs}/sbin/mke2fs $out/bin
|
||||||
'';
|
'';
|
||||||
|
|
||||||
boot.initrd.postDeviceCommands =
|
boot.initrd.postDeviceCommands =
|
||||||
@ -303,20 +301,6 @@ in
|
|||||||
chmod 1777 $targetRoot/tmp
|
chmod 1777 $targetRoot/tmp
|
||||||
|
|
||||||
mkdir -p $targetRoot/boot
|
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
|
# After booting, register the closure of the paths in
|
||||||
@ -343,12 +327,13 @@ in
|
|||||||
# configuration, where the regular value for the `fileSystems'
|
# configuration, where the regular value for the `fileSystems'
|
||||||
# attribute should be disregarded for the purpose of building a VM
|
# attribute should be disregarded for the purpose of building a VM
|
||||||
# test image (since those filesystems don't exist in the VM).
|
# test image (since those filesystems don't exist in the VM).
|
||||||
fileSystems = mkVMOverride
|
fileSystems = mkVMOverride (
|
||||||
{ "/".device = "/dev/vda";
|
{ "/".device = "/dev/vda";
|
||||||
"/nix/store" =
|
${if cfg.writableStore then "/nix/.ro-store" else "/nix/store"} =
|
||||||
{ device = "store";
|
{ device = "store";
|
||||||
fsType = "9p";
|
fsType = "9p";
|
||||||
options = "trans=virtio,version=9p2000.L,msize=1048576,cache=loose";
|
options = "trans=virtio,version=9p2000.L,msize=1048576,cache=loose";
|
||||||
|
neededForBoot = true;
|
||||||
};
|
};
|
||||||
"/tmp/xchg" =
|
"/tmp/xchg" =
|
||||||
{ device = "xchg";
|
{ device = "xchg";
|
||||||
@ -362,6 +347,18 @@ in
|
|||||||
options = "trans=virtio,version=9p2000.L,msize=1048576";
|
options = "trans=virtio,version=9p2000.L,msize=1048576";
|
||||||
neededForBoot = true;
|
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
|
} // optionalAttrs cfg.useBootLoader
|
||||||
{ "/boot" =
|
{ "/boot" =
|
||||||
{ device = "/dev/disk/by-label/boot";
|
{ device = "/dev/disk/by-label/boot";
|
||||||
@ -369,7 +366,7 @@ in
|
|||||||
options = "ro";
|
options = "ro";
|
||||||
noCheck = true; # fsck fails on a r/o filesystem
|
noCheck = true; # fsck fails on a r/o filesystem
|
||||||
};
|
};
|
||||||
};
|
});
|
||||||
|
|
||||||
swapDevices = mkVMOverride [ ];
|
swapDevices = mkVMOverride [ ];
|
||||||
boot.initrd.luks.devices = mkVMOverride [];
|
boot.initrd.luks.devices = mkVMOverride [];
|
||||||
|
@ -35,7 +35,7 @@ import ./make-test.nix {
|
|||||||
# multi-user.target, we should now be able to access it.
|
# multi-user.target, we should now be able to access it.
|
||||||
my $ip = $machine->succeed("nixos-container show-ip webserver");
|
my $ip = $machine->succeed("nixos-container show-ip webserver");
|
||||||
chomp $ip;
|
chomp $ip;
|
||||||
$machine->succeed("ping -c1 $ip");
|
#$machine->succeed("ping -c1 $ip"); # FIXME
|
||||||
$machine->succeed("curl --fail http://$ip/ > /dev/null");
|
$machine->succeed("curl --fail http://$ip/ > /dev/null");
|
||||||
|
|
||||||
# Stop the container.
|
# Stop the container.
|
||||||
|
@ -12,8 +12,7 @@ import ./make-test.nix {
|
|||||||
services.nixosManual.enable = mkOverride 0 true;
|
services.nixosManual.enable = mkOverride 0 true;
|
||||||
systemd.tmpfiles.rules = [ "d /tmp 1777 root root 10d" ];
|
systemd.tmpfiles.rules = [ "d /tmp 1777 root root 10d" ];
|
||||||
fileSystems = mkVMOverride { "/tmp2" =
|
fileSystems = mkVMOverride { "/tmp2" =
|
||||||
{ device = "none";
|
{ fsType = "tmpfs";
|
||||||
fsType = "tmpfs";
|
|
||||||
options = "mode=1777,noauto";
|
options = "mode=1777,noauto";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -61,7 +61,7 @@ in
|
|||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "http://lly.org/~rcw/abcde/page/";
|
homepage = "http://lly.org/~rcw/abcde/page/";
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
description = "Command-line audio CD ripper";
|
description = "Command-line audio CD ripper";
|
||||||
|
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
|
@ -47,6 +47,21 @@ stdenv.mkDerivation rec {
|
|||||||
mkdir -pv $out/gtk2/engines
|
mkdir -pv $out/gtk2/engines
|
||||||
cp build/libs/clearlooks-newer/libclearlooks.so $out/gtk2/engines/
|
cp build/libs/clearlooks-newer/libclearlooks.so $out/gtk2/engines/
|
||||||
wrapProgram $out/bin/ardour3 --prefix GTK_PATH : $out/gtk2
|
wrapProgram $out/bin/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; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Sound editor with graphical UI";
|
description = "Sound editor with graphical UI";
|
||||||
homepage = http://audacity.sourceforge.net;
|
homepage = http://audacity.sourceforge.net;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
platforms = with stdenv.lib.platforms; linux;
|
platforms = with stdenv.lib.platforms; linux;
|
||||||
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
|
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
|
||||||
};
|
};
|
||||||
|
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
|
|||||||
the command line or a script.
|
the command line or a script.
|
||||||
'';
|
'';
|
||||||
homepage = http://www.jpj.net/~trevor/aumix.html;
|
homepage = http://www.jpj.net/~trevor/aumix.html;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
maintainers = [ stdenv.lib.maintainers.ludo ];
|
maintainers = [ stdenv.lib.maintainers.ludo ];
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = stdenv.lib.platforms.linux;
|
||||||
|
@ -19,7 +19,7 @@ in
|
|||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = http://lly.org/~rcw/cd-discid/;
|
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";
|
description = "cd-discid, a command-line utility to retrieve a disc's CDDB ID";
|
||||||
|
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "drumkv1-${version}";
|
name = "drumkv1-${version}";
|
||||||
version = "0.4.2";
|
version = "0.5.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/drumkv1/${name}.tar.gz";
|
url = "mirror://sourceforge/drumkv1/${name}.tar.gz";
|
||||||
sha256 = "18rvfgblynlmklk25azmppibn1bdjid97hipa323gnzmxgq0rfjq";
|
sha256 = "16bjkp22hfpmzj5di98dddzslavgvhw5z7pgjzmjqz9dxvbqwq1k";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ jack2 libsndfile lv2 qt4 ];
|
buildInputs = [ jack2 libsndfile lv2 qt4 ];
|
||||||
|
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Compact open source software speech synthesizer";
|
description = "Compact open source software speech synthesizer";
|
||||||
homepage = http://espeak.sourceforge.net/;
|
homepage = http://espeak.sourceforge.net/;
|
||||||
license = "GPLv3+";
|
license = licenses.gpl3Plus;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Phoneme editor for espeak";
|
description = "Phoneme editor for espeak";
|
||||||
homepage = http://espeak.sourceforge.net/;
|
homepage = http://espeak.sourceforge.net/;
|
||||||
license = "GPLv3+";
|
license = licenses.gpl3Plus;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,6 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
homepage = http://wejp.k.vu/projects/gmu;
|
homepage = http://wejp.k.vu/projects/gmu;
|
||||||
description = "Open source music player for portable gaming consoles and handhelds";
|
description = "Open source music player for portable gaming consoles and handhelds";
|
||||||
license = "GPLv2";
|
license = stdenv.lib.licenses.gpl2;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,25 +1,43 @@
|
|||||||
{ stdenv, fetchurl, pkgconfig, libgpod, gtk, glib, gettext, perl, perlXMLParser
|
{ stdenv, fetchurl, pkgconfig, makeWrapper, intltool, libgpod, curl, flac,
|
||||||
, libglade, flex, libid3tag, libvorbis, intltool }:
|
gnome3_12, gtk3, glib, gettext, perl, perlXMLParser , libglade, flex, libid3tag,
|
||||||
|
libvorbis, hicolor_icon_theme, gdk_pixbuf }:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
let
|
||||||
name = "gtkpod-1.0.0";
|
gnome = gnome3_12;
|
||||||
|
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
|
version = "2.1.4";
|
||||||
|
name = "gtkpod-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = mirror://sourceforge/gtkpod/gtkpod-1.0.0.tar.gz;
|
url = "mirror://sourceforge/gtkpod/${name}.tar.gz";
|
||||||
sha256 = "04jzybs55c27kyp7r9c58prcq0q4ssvj5iggva857f49s1ar826q";
|
sha256 = "ba12b35f3f24a155b68f0ffdaf4d3c5c7d1b8df04843a53306e1c83fc811dfaa";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ pkgconfig libgpod gettext perl perlXMLParser gtk libglade flex
|
propagatedUserEnvPkgs = [ gnome.gnome_themes_standard ];
|
||||||
libid3tag libvorbis intltool ];
|
|
||||||
|
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 = ''
|
patchPhase = ''
|
||||||
sed -i 's/which/type -P/' scripts/*.sh
|
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";
|
description = "GTK Manager for an Apple ipod";
|
||||||
homepage = http://gtkpod.sourceforge.net;
|
homepage = http://gtkpod.sourceforge.net;
|
||||||
license = "GPLv2+";
|
license = licenses.gpl2Plus;
|
||||||
platforms = with stdenv.lib.platforms; linux;
|
platforms = platforms.linux;
|
||||||
|
maintainers = [ maintainers.skeidel ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,6 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "A command line editor for id3v2 tags";
|
description = "A command line editor for id3v2 tags";
|
||||||
homepage = http://id3v2.sourceforge.net/;
|
homepage = http://id3v2.sourceforge.net/;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Console jack loudness meter";
|
description = "Console jack loudness meter";
|
||||||
homepage = http://www.aelius.com/njh/jackmeter/;
|
homepage = http://www.aelius.com/njh/jackmeter/;
|
||||||
license = "GPLv2";
|
license = stdenv.lib.licenses.gpl2;
|
||||||
maintainers = [ stdenv.lib.maintainers.marcweber ];
|
maintainers = [ stdenv.lib.maintainers.marcweber ];
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = stdenv.lib.platforms.linux;
|
||||||
};
|
};
|
||||||
|
@ -15,7 +15,7 @@ stdenv.mkDerivation {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Not a Guitar-Only tuner";
|
description = "Not a Guitar-Only tuner";
|
||||||
homepage = http://www.nongnu.org/lingot/;
|
homepage = http://www.nongnu.org/lingot/;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
platforms = with stdenv.lib.platforms; linux;
|
platforms = with stdenv.lib.platforms; linux;
|
||||||
maintainers = with stdenv.lib.maintainers; [viric];
|
maintainers = with stdenv.lib.maintainers; [viric];
|
||||||
};
|
};
|
||||||
|
@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Tracker music player for the terminal";
|
description = "Tracker music player for the terminal";
|
||||||
homepage = http://mikmod.shlomifish.org/;
|
homepage = http://mikmod.shlomifish.org/;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
maintainers = with stdenv.lib.maintainers; [ viric ];
|
maintainers = with stdenv.lib.maintainers; [ viric ];
|
||||||
platforms = with stdenv.lib.platforms; linux;
|
platforms = with stdenv.lib.platforms; linux;
|
||||||
};
|
};
|
||||||
|
24
pkgs/applications/audio/mopidy-moped/default.nix
Normal file
24
pkgs/applications/audio/mopidy-moped/default.nix
Normal 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 = [];
|
||||||
|
};
|
||||||
|
}
|
@ -3,11 +3,11 @@
|
|||||||
pythonPackages.buildPythonPackage rec {
|
pythonPackages.buildPythonPackage rec {
|
||||||
name = "mopidy-spotify-${version}";
|
name = "mopidy-spotify-${version}";
|
||||||
|
|
||||||
version = "1.1.3";
|
version = "1.2.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/mopidy/mopidy-spotify/archive/v${version}.tar.gz";
|
url = "https://github.com/mopidy/mopidy-spotify/archive/v${version}.tar.gz";
|
||||||
sha256 = "09s6841qb24nrmlc2izb8vxbgv185ddra6ndskrsw907hfli2kl6";
|
sha256 = "1fgxakylsx0nggis11v6bxfy8h3dl1n1v86liyfcj0xazb1mx69m";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ mopidy pythonPackages.pyspotify ];
|
propagatedBuildInputs = [ mopidy pythonPackages.pyspotify ];
|
||||||
|
@ -5,15 +5,15 @@
|
|||||||
pythonPackages.buildPythonPackage rec {
|
pythonPackages.buildPythonPackage rec {
|
||||||
name = "mopidy-${version}";
|
name = "mopidy-${version}";
|
||||||
|
|
||||||
version = "0.18.3";
|
version = "0.19.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/mopidy/mopidy/archive/v${version}.tar.gz";
|
url = "https://github.com/mopidy/mopidy/archive/v${version}.tar.gz";
|
||||||
sha256 = "0b8ss6qjzj1pawd8469i5310ily3rad0ashfy87vdyj6xdyfyp0q";
|
sha256 = "10cnc1bipr0brk7478201cgm71lp5bci3qiaadyxv9hhcn0nmn9b";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = with pythonPackages; [
|
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
|
# There are no tests
|
||||||
|
@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
homepage = http://www.ibiblio.org/mp3info/;
|
homepage = http://www.ibiblio.org/mp3info/;
|
||||||
|
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
maintainers = [ stdenv.lib.maintainers.ludo ];
|
maintainers = [ stdenv.lib.maintainers.ludo ];
|
||||||
platforms = stdenv.lib.platforms.unix;
|
platforms = stdenv.lib.platforms.unix;
|
||||||
|
@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "A minimalist command line interface to MPD";
|
description = "A minimalist command line interface to MPD";
|
||||||
homepage = http://www.musicpd.org/clients/mpc/;
|
homepage = http://www.musicpd.org/clients/mpc/;
|
||||||
license = "GPL2";
|
license = stdenv.lib.licenses.gpl2;
|
||||||
maintainers = [ stdenv.lib.maintainers.algorith ];
|
maintainers = [ stdenv.lib.maintainers.algorith ];
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = stdenv.lib.platforms.linux;
|
||||||
};
|
};
|
||||||
|
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
description = "mpc123, a Musepack (.mpc) audio player";
|
description = "mpc123, a Musepack (.mpc) audio player";
|
||||||
|
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
maintainers = [ ];
|
maintainers = [ ];
|
||||||
platforms = stdenv.lib.platforms.gnu; # arbitrary choice
|
platforms = stdenv.lib.platforms.gnu; # arbitrary choice
|
||||||
|
@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "mpg321, a command-line MP3 player";
|
description = "mpg321, a command-line MP3 player";
|
||||||
homepage = http://mpg321.sourceforge.net/;
|
homepage = http://mpg321.sourceforge.net/;
|
||||||
license = "GPLv2";
|
license = stdenv.lib.licenses.gpl2;
|
||||||
maintainers = [ ];
|
maintainers = [ ];
|
||||||
platforms = stdenv.lib.platforms.gnu;
|
platforms = stdenv.lib.platforms.gnu;
|
||||||
};
|
};
|
||||||
|
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
homepage = http://freedesktop.org/software/pulseaudio/pavucontrol/ ;
|
homepage = http://freedesktop.org/software/pulseaudio/pavucontrol/ ;
|
||||||
|
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
maintainers = [ ];
|
maintainers = [ ];
|
||||||
platforms = stdenv.lib.platforms.gnu; # arbitrary choice
|
platforms = stdenv.lib.platforms.gnu; # arbitrary choice
|
||||||
|
@ -22,7 +22,7 @@ stdenv.mkDerivation {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Doing phonetics by computer";
|
description = "Doing phonetics by computer";
|
||||||
homepage = http://www.fon.hum.uva.nl/praat/;
|
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;
|
platforms = stdenv.lib.platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -3,12 +3,12 @@
|
|||||||
, libtool, libvorbis, pkgconfig, qt4, rubberband, stdenv }:
|
, libtool, libvorbis, pkgconfig, qt4, rubberband, stdenv }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "0.6.1";
|
version = "0.6.2";
|
||||||
name = "qtractor-${version}";
|
name = "qtractor-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/qtractor/${name}.tar.gz";
|
url = "mirror://sourceforge/qtractor/${name}.tar.gz";
|
||||||
sha256 = "09lyz1pn2dadr1ii2msyv3n13kq3mbgpcwcyfm0brm01c2fnh6wc";
|
sha256 = "08cr4lgm8bkkmsvfljszcqij3i52n989s7ncrbrn17n61rmgf8yw";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "samplv1-${version}";
|
name = "samplv1-${version}";
|
||||||
version = "0.4.2";
|
version = "0.5.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/samplv1/${name}.tar.gz";
|
url = "mirror://sourceforge/samplv1/${name}.tar.gz";
|
||||||
sha256 = "1vr6jbqnsgdq3v2h1ndp4pirnil3119dqwlq0k0kdscmcskvb9j4";
|
sha256 = "02mm5y1yzklvs5bpxl86y3dqcg7migfybmin8llk91pws6rl9b41";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ jack2 libsndfile lv2 qt4 ];
|
buildInputs = [ jack2 libsndfile lv2 qt4 ];
|
||||||
|
@ -8,14 +8,14 @@ assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
|
|||||||
let
|
let
|
||||||
version = if stdenv.system == "i686-linux"
|
version = if stdenv.system == "i686-linux"
|
||||||
then "0.9.4.183.g644e24e.428"
|
then "0.9.4.183.g644e24e.428"
|
||||||
else "0.9.10.17.g4129e1c.78";
|
else "0.9.11.27.g2b1a638.81";
|
||||||
|
|
||||||
qt4webkit =
|
qt4webkit =
|
||||||
if stdenv.system == "i686-linux" then
|
if stdenv.system == "i686-linux" then
|
||||||
fetchurl {
|
fetchurl {
|
||||||
name = "libqtwebkit4_2.3.2_i386.deb";
|
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;
|
url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.3.2-0ubuntu7_i386.deb;
|
||||||
sha256 = "0hi6cwx2b2cwa4nv5phqqw526lc8p9x7kjkcza9x47ny3npw2924";
|
sha256 = "0q4abhczx91ma57fjss0gn8j6nkfbfsbsh6kxhykzj88dih2s8rn";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fetchurl {
|
fetchurl {
|
||||||
@ -73,7 +73,7 @@ stdenv.mkDerivation {
|
|||||||
else if stdenv.system == "x86_64-linux" then
|
else if stdenv.system == "x86_64-linux" then
|
||||||
fetchurl {
|
fetchurl {
|
||||||
url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}-1_amd64.deb";
|
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.";
|
else throw "Spotify not supported on this platform.";
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ stdenv.mkDerivation {
|
|||||||
meta = {
|
meta = {
|
||||||
homepage = https://www.spotify.com/;
|
homepage = https://www.spotify.com/;
|
||||||
description = "Spotify for Linux allows you to play music from the Spotify music service";
|
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 ];
|
maintainers = [ stdenv.lib.maintainers.eelco ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "synthv1-${version}";
|
name = "synthv1-${version}";
|
||||||
version = "0.4.2";
|
version = "0.5.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/synthv1/${name}.tar.gz";
|
url = "mirror://sourceforge/synthv1/${name}.tar.gz";
|
||||||
sha256 = "1r4fszbzwd0yfcch0mcsmh7781zw1317hiljn85w79721fs2m8hc";
|
sha256 = "011kjccrdwb62rpck5gb8h4kvvm8rk6n77lj78ykxz4pxip5hf14";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ qt4 jack2 lv2 ];
|
buildInputs = [ qt4 jack2 lv2 ];
|
||||||
|
@ -16,6 +16,6 @@ stdenv.mkDerivation {
|
|||||||
files, notably the `ogg123' player and the `oggenc' encoder.
|
files, notably the `ogg123' player and the `oggenc' encoder.
|
||||||
'';
|
'';
|
||||||
homepage = http://xiph.org/vorbis/;
|
homepage = http://xiph.org/vorbis/;
|
||||||
license = "GPLv2";
|
license = stdenv.lib.licenses.gpl2;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -6,11 +6,11 @@ assert stdenv ? glibc;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "yoshimi-${version}";
|
name = "yoshimi-${version}";
|
||||||
version = "1.2.0";
|
version = "1.2.2";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/yoshimi/${name}.tar.bz2";
|
url = "mirror://sourceforge/yoshimi/${name}.tar.bz2";
|
||||||
sha256 = "0p4v39kxxzzfvaazzxarx54i164ghpfxq0ljkavlgr8fnix5v3mx";
|
sha256 = "1w23ral1qrbg9gqx833giqmchx7952f18yaa52aya9shsdlla83c";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -13,6 +13,6 @@ stdenv.mkDerivation {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Hex editor with vim style keybindings";
|
description = "Hex editor with vim style keybindings";
|
||||||
homepage = http://bvi.sourceforge.net/download.html;
|
homepage = http://bvi.sourceforge.net/download.html;
|
||||||
license = "GPL2";
|
license = stdenv.lib.licenses.gpl2;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
|
|||||||
full-screen editors such as GNU Emacs or GNU Moe.
|
full-screen editors such as GNU Emacs or GNU Moe.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
license = "GPLv3+";
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
homepage = http://www.gnu.org/software/ed/;
|
homepage = http://www.gnu.org/software/ed/;
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Auto-complete extension for Emacs";
|
description = "Auto-complete extension for Emacs";
|
||||||
homepage = http://cx4a.org/software/auto-complete/;
|
homepage = http://cx4a.org/software/auto-complete/;
|
||||||
license = "GPLv3+";
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "A calendar framework for Emacs";
|
description = "A calendar framework for Emacs";
|
||||||
|
|
||||||
license = "GPLv3+";
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
maintainers = with stdenv.lib.maintainers; [ chaoflow ];
|
maintainers = with stdenv.lib.maintainers; [ chaoflow ];
|
||||||
platforms = stdenv.lib.platforms.gnu;
|
platforms = stdenv.lib.platforms.gnu;
|
||||||
|
@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
|
|||||||
Development Environment), and COGRE (COnnected GRaph Editor).
|
Development Environment), and COGRE (COnnected GRaph Editor).
|
||||||
'';
|
'';
|
||||||
|
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
homepage = http://cedet.sourceforge.net/;
|
homepage = http://cedet.sourceforge.net/;
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Emacs major mode for CoffeeScript, unfancy JavaScript";
|
description = "Emacs major mode for CoffeeScript, unfancy JavaScript";
|
||||||
homepage = https://github.com/defunkt/coffee-mode;
|
homepage = https://github.com/defunkt/coffee-mode;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Emacs-lisp mode for skinning your Emacs";
|
description = "Emacs-lisp mode for skinning your Emacs";
|
||||||
homepage = http://www.nongnu.org/color-theme;
|
homepage = http://www.nongnu.org/color-theme;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -28,7 +28,7 @@ stdenv.mkDerivation {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "A pcl-cvs like interface for managing darcs patches.";
|
description = "A pcl-cvs like interface for managing darcs patches.";
|
||||||
homepage = "http://hub.darcs.net/simon/darcsum";
|
homepage = "http://hub.darcs.net/simon/darcsum";
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
maintainers = [ stdenv.lib.maintainers.falsifian ];
|
maintainers = [ stdenv.lib.maintainers.falsifian ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
|
|||||||
navigation and overview.
|
navigation and overview.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
homepage = http://ecb.sourceforge.net/;
|
homepage = http://ecb.sourceforge.net/;
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ clangStdenv.mkDerivation {
|
|||||||
meta = {
|
meta = {
|
||||||
homepage = "https://github.com/Golevka/emacs-clang-complete-async";
|
homepage = "https://github.com/Golevka/emacs-clang-complete-async";
|
||||||
description = "An emacs plugin to complete C and C++ code using libclang";
|
description = "An emacs plugin to complete C and C++ code using libclang";
|
||||||
license = "GPLv3+";
|
license = clangStdenv.lib.licenses.gpl3Plus;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
|
|||||||
developed a simple Emacs interface to w3m.
|
developed a simple Emacs interface to w3m.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
homepage = http://emacs-w3m.namazu.org/;
|
homepage = http://emacs-w3m.namazu.org/;
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
homepage = http://www.gnu.org/software/emms/;
|
homepage = http://www.gnu.org/software/emms/;
|
||||||
|
|
||||||
license = "GPLv3+";
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
maintainers = [ stdenv.lib.maintainers.ludo ];
|
maintainers = [ stdenv.lib.maintainers.ludo ];
|
||||||
platforms = stdenv.lib.platforms.unix;
|
platforms = stdenv.lib.platforms.unix;
|
||||||
|
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "A (very early) GitHub client library for Emacs";
|
description = "A (very early) GitHub client library for Emacs";
|
||||||
homepage = https://github.com/sigma/gh.el;
|
homepage = https://github.com/sigma/gh.el;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Emacs integration for gist.github.com";
|
description = "Emacs integration for gist.github.com";
|
||||||
homepage = https://github.com/sigma/gist.el;
|
homepage = https://github.com/sigma/gist.el;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Emacs major mode for Idris";
|
description = "Emacs major mode for Idris";
|
||||||
homepage = https://github.com/idris-hackers/idris-mode;
|
homepage = https://github.com/idris-hackers/idris-mode;
|
||||||
license = "GPLv3";
|
license = stdenv.lib.licenses.gpl3;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,7 @@ stdenv.mkDerivation {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Emacs major mode for jade and stylus";
|
description = "Emacs major mode for jade and stylus";
|
||||||
homepage = https://github.com/brianc/jade-mode;
|
homepage = https://github.com/brianc/jade-mode;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -89,7 +89,7 @@ in
|
|||||||
* Java source interpreter (Pat Neimeyer's BeanShell)
|
* Java source interpreter (Pat Neimeyer's BeanShell)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
maintainers = [ ];
|
maintainers = [ ];
|
||||||
platforms = stdenv.lib.platforms.gnu; # arbitrary choice
|
platforms = stdenv.lib.platforms.gnu; # arbitrary choice
|
||||||
|
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "tiny logging framework for Emacs";
|
description = "tiny logging framework for Emacs";
|
||||||
homepage = https://github.com/sigma/logito;
|
homepage = https://github.com/sigma/logito;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Insert dummy pseudo Latin text for Emacs";
|
description = "Insert dummy pseudo Latin text for Emacs";
|
||||||
homepage = http://www.emacswiki.org/emacs/LoremIpsum;
|
homepage = http://www.emacswiki.org/emacs/LoremIpsum;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
homepage = "https://github.com/magit/magit";
|
homepage = "https://github.com/magit/magit";
|
||||||
description = "Magit, an Emacs interface to Git";
|
description = "Magit, an Emacs interface to Git";
|
||||||
license = "GPLv3+";
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
With Magit, you can inspect and modify your Git repositories with
|
With Magit, you can inspect and modify your Git repositories with
|
||||||
|
@ -13,7 +13,7 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Emacs mode for the programming language Maude";
|
description = "Emacs mode for the programming language Maude";
|
||||||
license = "GPLv2";
|
license = stdenv.lib.licenses.gpl2;
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
maintainers = [ stdenv.lib.maintainers.simons ];
|
maintainers = [ stdenv.lib.maintainers.simons ];
|
||||||
};
|
};
|
||||||
|
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "an emacs library to access metaweblog based weblogs";
|
description = "an emacs library to access metaweblog based weblogs";
|
||||||
homepage = https://github.com/punchagan/metaweblog;
|
homepage = https://github.com/punchagan/metaweblog;
|
||||||
license = "GPLv3+";
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
, texLiveAggregationFun }:
|
, texLiveAggregationFun }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "org-8.2.7b";
|
name = "org-8.2.7c";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://orgmode.org/${name}.tar.gz";
|
url = "http://orgmode.org/${name}.tar.gz";
|
||||||
sha256 = "07hq2q126d967nj7xq46q4mkca5r2rw61bn8d6nzkhksghp8b2v1";
|
sha256 = "0qqf58xqw1kkgjxm9z40s6h7xd209rx3933klla22lryv3yclc1k";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ emacs ];
|
buildInputs = [ emacs ];
|
||||||
@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
|
|||||||
than that found in GNU Emacs.
|
than that found in GNU Emacs.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
license = "GPLv3+";
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
maintainers = with stdenv.lib.maintainers; [ chaoflow pSub ];
|
maintainers = with stdenv.lib.maintainers; [ chaoflow pSub ];
|
||||||
platforms = stdenv.lib.platforms.unix;
|
platforms = stdenv.lib.platforms.unix;
|
||||||
|
@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Publish directly from Emacs’ org-mode to WordPress blogs";
|
description = "Publish directly from Emacs’ org-mode to WordPress blogs";
|
||||||
homepage = https://github.com/punchagan/org2blog;
|
homepage = https://github.com/punchagan/org2blog;
|
||||||
license = "GPLv3+";
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Persistent caching for Emacs";
|
description = "Persistent caching for Emacs";
|
||||||
homepage = https://github.com/sigma/pcache.el;
|
homepage = https://github.com/sigma/pcache.el;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -48,7 +48,7 @@ stdenv.mkDerivation (rec {
|
|||||||
interactive theorem provers), based on the customizable text editor Emacs.
|
interactive theorem provers), based on the customizable text editor Emacs.
|
||||||
'';
|
'';
|
||||||
homepage = http://proofgeneral.inf.ed.ac.uk;
|
homepage = http://proofgeneral.inf.ed.ac.uk;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
platforms = stdenv.lib.platforms.unix; # arbitrary choice
|
platforms = stdenv.lib.platforms.unix; # arbitrary choice
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
@ -26,7 +26,7 @@ stdenv.mkDerivation {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Enhanced Emacs support for editing and running Scheme code";
|
description = "Enhanced Emacs support for editing and running Scheme code";
|
||||||
homepage = http://www.neilvandyke.org/quack/;
|
homepage = http://www.neilvandyke.org/quack/;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
maintainers = [ ];
|
maintainers = [ ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Mark a rectangle of text with highlighting";
|
description = "Mark a rectangle of text with highlighting";
|
||||||
homepage = http://emacswiki.org/emacs/RectangleMark;
|
homepage = http://emacswiki.org/emacs/RectangleMark;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -40,6 +40,6 @@ stdenv.mkDerivation rec {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
homepage = http://gna.org/projects/remember-el/;
|
homepage = http://gna.org/projects/remember-el/;
|
||||||
license = "GPLv2+";
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Two-pane file manager for Emacs based on Dired and inspired by MC";
|
description = "Two-pane file manager for Emacs based on Dired and inspired by MC";
|
||||||
homepage = http://www.emacswiki.org/emacs/Sunrise_Commander;
|
homepage = http://www.emacswiki.org/emacs/Sunrise_Commander;
|
||||||
license = "GPLv3+";
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -25,6 +25,6 @@ in stdenv.mkDerivation {
|
|||||||
homepage = https://github.com/bnbeckwith/writegood-mode;
|
homepage = https://github.com/bnbeckwith/writegood-mode;
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
maintainers = [ stdenv.lib.maintainers.pSub ];
|
maintainers = [ stdenv.lib.maintainers.pSub ];
|
||||||
license = "GPL3";
|
license = stdenv.lib.licenses.gpl3;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Elisp implementation of clientside XML-RPC";
|
description = "Elisp implementation of clientside XML-RPC";
|
||||||
homepage = https://launchpad.net/xml-rpc-el;
|
homepage = https://launchpad.net/xml-rpc-el;
|
||||||
license = "GPLv3+";
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.all;
|
platforms = stdenv.lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -13,7 +13,7 @@ stdenv.mkDerivation {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "WYSIWYG PostScript annotator";
|
description = "WYSIWYG PostScript annotator";
|
||||||
homepage = "http://http://flpsed.org/flpsed.html";
|
homepage = "http://http://flpsed.org/flpsed.html";
|
||||||
license = "GPLv3";
|
license = stdenv.lib.licenses.gpl3;
|
||||||
platforms = stdenv.lib.platforms.mesaPlatforms;
|
platforms = stdenv.lib.platforms.mesaPlatforms;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ in stdenv.mkDerivation rec {
|
|||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
homepage = http://gobby.0x539.de/;
|
homepage = http://gobby.0x539.de/;
|
||||||
description = "A GTK-based collaborative editor supporting multiple documents in one session and a multi-user chat";
|
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 ];
|
maintainers = [ maintainers.phreedom ];
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -35,6 +35,6 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Sophisticated text editor for code, markup and prose";
|
description = "Sophisticated text editor for code, markup and prose";
|
||||||
license = "unfree";
|
license = stdenv.lib.licenses.unfree;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,6 @@ in stdenv.mkDerivation {
|
|||||||
meta = {
|
meta = {
|
||||||
description = "Sophisticated text editor for code, markup and prose";
|
description = "Sophisticated text editor for code, markup and prose";
|
||||||
maintainers = stdenv.lib.maintainers.wmertens;
|
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
Loading…
Reference in New Issue
Block a user