Merge master into staging-next
This commit is contained in:
commit
826ab7026e
@ -2500,17 +2500,17 @@ addEnvHooks "$hostOffset" myBashFunction
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
This hook will make a build pause instead of stopping when a failure
|
This hook will make a build pause instead of stopping when a failure
|
||||||
happen. It prevents nix to cleanup the build environment immediatly and
|
happens. It prevents nix from cleaning up the build environment immediately and
|
||||||
allows the user to attach to a build environment using the
|
allows the user to attach to a build environment using the
|
||||||
<command>cntr</command> command. On build error it will print the
|
<command>cntr</command> command. Upon build error it will print
|
||||||
instruction that are neccessary for <command>cntr</command>. Installing
|
instructions on how to use <command>cntr</command>. Installing
|
||||||
cntr and running the command will provide shell access to the build
|
cntr and running the command will provide shell access to the build
|
||||||
sandbox of failed build. At <filename>/var/lib/cntr</filename> the
|
sandbox of failed build. At <filename>/var/lib/cntr</filename> the
|
||||||
sandbox filesystem is mounted. All commands and files of the system are
|
sandboxed filesystem is mounted. All commands and files of the system are
|
||||||
still accessible within the shell. To execute commands from the sandbox
|
still accessible within the shell. To execute commands from the sandbox
|
||||||
use the cntr exec subcommand. Note that <command>cntr</command> also
|
use the cntr exec subcommand. Note that <command>cntr</command> also
|
||||||
needs to be executed on the machine that is doing the build, which might
|
needs to be executed on the machine that is doing the build, which might
|
||||||
be not the case when remote builders are enabled.
|
not be the case when remote builders are enabled.
|
||||||
<command>cntr</command> is only supported on Linux-based platforms. To
|
<command>cntr</command> is only supported on Linux-based platforms. To
|
||||||
use it first add <literal>cntr</literal> to your
|
use it first add <literal>cntr</literal> to your
|
||||||
<literal>environment.systemPackages</literal> on NixOS or alternatively to
|
<literal>environment.systemPackages</literal> on NixOS or alternatively to
|
||||||
|
@ -94,6 +94,15 @@ rec {
|
|||||||
attrValues = builtins.attrValues or (attrs: attrVals (attrNames attrs) attrs);
|
attrValues = builtins.attrValues or (attrs: attrVals (attrNames attrs) attrs);
|
||||||
|
|
||||||
|
|
||||||
|
/* Given a set of attribute names, return the set of the corresponding
|
||||||
|
attributes from the given set.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
getAttrs [ "a" "b" ] { a = 1; b = 2; c = 3; }
|
||||||
|
=> { a = 1; b = 2; }
|
||||||
|
*/
|
||||||
|
getAttrs = names: attrs: genAttrs names (name: attrs.${name});
|
||||||
|
|
||||||
/* Collect each attribute named `attr' from a list of attribute
|
/* Collect each attribute named `attr' from a list of attribute
|
||||||
sets. Sets that don't contain the named attribute are ignored.
|
sets. Sets that don't contain the named attribute are ignored.
|
||||||
|
|
||||||
|
@ -61,10 +61,10 @@ let
|
|||||||
boolToString mergeAttrs flip mapNullable inNixShell min max
|
boolToString mergeAttrs flip mapNullable inNixShell min max
|
||||||
importJSON warn info nixpkgsVersion version mod compare
|
importJSON warn info nixpkgsVersion version mod compare
|
||||||
splitByAndCompare functionArgs setFunctionArgs isFunction;
|
splitByAndCompare functionArgs setFunctionArgs isFunction;
|
||||||
inherit (fixedPoints) fix fix' extends composeExtensions
|
inherit (fixedPoints) fix fix' converge extends composeExtensions
|
||||||
makeExtensible makeExtensibleWithCustomName;
|
makeExtensible makeExtensibleWithCustomName;
|
||||||
inherit (attrsets) attrByPath hasAttrByPath setAttrByPath
|
inherit (attrsets) attrByPath hasAttrByPath setAttrByPath
|
||||||
getAttrFromPath attrVals attrValues catAttrs filterAttrs
|
getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs
|
||||||
filterAttrsRecursive foldAttrs collect nameValuePair mapAttrs
|
filterAttrsRecursive foldAttrs collect nameValuePair mapAttrs
|
||||||
mapAttrs' mapAttrsToList mapAttrsRecursive mapAttrsRecursiveCond
|
mapAttrs' mapAttrsToList mapAttrsRecursive mapAttrsRecursiveCond
|
||||||
genAttrs isDerivation toDerivation optionalAttrs
|
genAttrs isDerivation toDerivation optionalAttrs
|
||||||
|
@ -24,6 +24,16 @@ rec {
|
|||||||
# for a concrete example.
|
# for a concrete example.
|
||||||
fix' = f: let x = f x // { __unfix__ = f; }; in x;
|
fix' = f: let x = f x // { __unfix__ = f; }; in x;
|
||||||
|
|
||||||
|
# Return the fixpoint that `f` converges to when called recursively, starting
|
||||||
|
# with the input `x`.
|
||||||
|
#
|
||||||
|
# nix-repl> converge (x: x / 2) 16
|
||||||
|
# 0
|
||||||
|
converge = f: x:
|
||||||
|
if (f x) == x
|
||||||
|
then x
|
||||||
|
else converge f (f x);
|
||||||
|
|
||||||
# Modify the contents of an explicitly recursive attribute set in a way that
|
# Modify the contents of an explicitly recursive attribute set in a way that
|
||||||
# honors `self`-references. This is accomplished with a function
|
# honors `self`-references. This is accomplished with a function
|
||||||
#
|
#
|
||||||
|
@ -505,6 +505,12 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
|
|||||||
free = false;
|
free = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nasa13 = spdx {
|
||||||
|
spdxId = "NASA-1.3";
|
||||||
|
fullName = "NASA Open Source Agreement 1.3";
|
||||||
|
free = false;
|
||||||
|
};
|
||||||
|
|
||||||
ncsa = spdx {
|
ncsa = spdx {
|
||||||
spdxId = "NCSA";
|
spdxId = "NCSA";
|
||||||
fullName = "University of Illinois/NCSA Open Source License";
|
fullName = "University of Illinois/NCSA Open Source License";
|
||||||
|
@ -401,6 +401,11 @@
|
|||||||
github = "aszlig";
|
github = "aszlig";
|
||||||
name = "aszlig";
|
name = "aszlig";
|
||||||
};
|
};
|
||||||
|
atnnn = {
|
||||||
|
email = "etienne@atnnn.com";
|
||||||
|
github = "atnnn";
|
||||||
|
name = "Etienne Laurin";
|
||||||
|
};
|
||||||
auntie = {
|
auntie = {
|
||||||
email = "auntieNeo@gmail.com";
|
email = "auntieNeo@gmail.com";
|
||||||
github = "auntie";
|
github = "auntie";
|
||||||
@ -1889,6 +1894,11 @@
|
|||||||
github = "ironpinguin";
|
github = "ironpinguin";
|
||||||
name = "Michele Catalano";
|
name = "Michele Catalano";
|
||||||
};
|
};
|
||||||
|
ivan = {
|
||||||
|
email = "ivan@ludios.org";
|
||||||
|
github = "ivan";
|
||||||
|
name = "Ivan Kozik";
|
||||||
|
};
|
||||||
ivan-tkatchev = {
|
ivan-tkatchev = {
|
||||||
email = "tkatchev@gmail.com";
|
email = "tkatchev@gmail.com";
|
||||||
name = "Ivan Tkatchev";
|
name = "Ivan Tkatchev";
|
||||||
@ -1918,6 +1928,11 @@
|
|||||||
github = "jagajaga";
|
github = "jagajaga";
|
||||||
name = "Arseniy Seroka";
|
name = "Arseniy Seroka";
|
||||||
};
|
};
|
||||||
|
jakelogemann = {
|
||||||
|
email = "jake.logemann@gmail.com";
|
||||||
|
github = "jakelogemann";
|
||||||
|
name = "Jake Logemann";
|
||||||
|
};
|
||||||
jammerful = {
|
jammerful = {
|
||||||
email = "jammerful@gmail.com";
|
email = "jammerful@gmail.com";
|
||||||
github = "jammerful";
|
github = "jammerful";
|
||||||
@ -3414,6 +3429,11 @@
|
|||||||
github = "pkmx";
|
github = "pkmx";
|
||||||
name = "Chih-Mao Chen";
|
name = "Chih-Mao Chen";
|
||||||
};
|
};
|
||||||
|
plchldr = {
|
||||||
|
email = "mail@oddco.de";
|
||||||
|
github = "plchldr";
|
||||||
|
name = "Jonas Beyer";
|
||||||
|
};
|
||||||
plcplc = {
|
plcplc = {
|
||||||
email = "plcplc@gmail.com";
|
email = "plcplc@gmail.com";
|
||||||
github = "plcplc";
|
github = "plcplc";
|
||||||
@ -4278,6 +4298,11 @@
|
|||||||
github = "talyz";
|
github = "talyz";
|
||||||
name = "Kim Lindberger";
|
name = "Kim Lindberger";
|
||||||
};
|
};
|
||||||
|
taneb = {
|
||||||
|
email = "nvd1234@gmail.com";
|
||||||
|
github = "Taneb";
|
||||||
|
name = "Nathan van Doorn";
|
||||||
|
};
|
||||||
tari = {
|
tari = {
|
||||||
email = "peter@taricorp.net";
|
email = "peter@taricorp.net";
|
||||||
github = "tari";
|
github = "tari";
|
||||||
|
@ -245,6 +245,65 @@
|
|||||||
options.
|
options.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The <literal>nscd</literal> service now disables all caching of
|
||||||
|
<literal>passwd</literal> and <literal>group</literal> databases by
|
||||||
|
default. This was interferring with the correct functioning of the
|
||||||
|
<literal>libnss_systemd.so</literal> module which is used by
|
||||||
|
<literal>systemd</literal> to manage uids and usernames in the presence of
|
||||||
|
<literal>DynamicUser=</literal> in systemd services. This was already the
|
||||||
|
default behaviour in presence of <literal>services.sssd.enable =
|
||||||
|
true</literal> because nscd caching would interfere with
|
||||||
|
<literal>sssd</literal> in unpredictable ways as well. Because we're
|
||||||
|
using nscd not for caching, but for convincing glibc to find NSS modules
|
||||||
|
in the nix store instead of an absolute path, we have decided to disable
|
||||||
|
caching globally now, as it's usually not the behaviour the user wants and
|
||||||
|
can lead to surprising behaviour. Furthermore, negative caching of host
|
||||||
|
lookups is also disabled now by default. This should fix the issue of dns
|
||||||
|
lookups failing in the presence of an unreliable network.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
If the old behaviour is desired, this can be restored by setting
|
||||||
|
the <literal>services.nscd.config</literal> option
|
||||||
|
with the desired caching parameters.
|
||||||
|
<programlisting>
|
||||||
|
services.nscd.config =
|
||||||
|
''
|
||||||
|
server-user nscd
|
||||||
|
threads 1
|
||||||
|
paranoia no
|
||||||
|
debug-level 0
|
||||||
|
|
||||||
|
enable-cache passwd yes
|
||||||
|
positive-time-to-live passwd 600
|
||||||
|
negative-time-to-live passwd 20
|
||||||
|
suggested-size passwd 211
|
||||||
|
check-files passwd yes
|
||||||
|
persistent passwd no
|
||||||
|
shared passwd yes
|
||||||
|
|
||||||
|
enable-cache group yes
|
||||||
|
positive-time-to-live group 3600
|
||||||
|
negative-time-to-live group 60
|
||||||
|
suggested-size group 211
|
||||||
|
check-files group yes
|
||||||
|
persistent group no
|
||||||
|
shared group yes
|
||||||
|
|
||||||
|
enable-cache hosts yes
|
||||||
|
positive-time-to-live hosts 600
|
||||||
|
negative-time-to-live hosts 5
|
||||||
|
suggested-size hosts 211
|
||||||
|
check-files hosts yes
|
||||||
|
persistent hosts no
|
||||||
|
shared hosts yes
|
||||||
|
'';
|
||||||
|
</programlisting>
|
||||||
|
See <link xlink:href="https://github.com/NixOS/nixpkgs/pull/50316">#50316</link>
|
||||||
|
for details.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
GitLab Shell previously used the nix store paths for the
|
GitLab Shell previously used the nix store paths for the
|
||||||
@ -299,6 +358,18 @@
|
|||||||
<option>services.kubernetes.addons.dns.replicas</option>.
|
<option>services.kubernetes.addons.dns.replicas</option>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The quassel-webserver package and module was removed from nixpkgs due to the lack
|
||||||
|
of maintainers.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The owncloud server packages and httpd subservice module were removed
|
||||||
|
from nixpkgs due to the lack of maintainers.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
@ -47,7 +47,8 @@ if test -n "$bootable"; then
|
|||||||
|
|
||||||
isoBootFlags="-eltorito-boot ${bootImage}
|
isoBootFlags="-eltorito-boot ${bootImage}
|
||||||
-eltorito-catalog .boot.cat
|
-eltorito-catalog .boot.cat
|
||||||
-no-emul-boot -boot-load-size 4 -boot-info-table"
|
-no-emul-boot -boot-load-size 4 -boot-info-table
|
||||||
|
--sort-weight 1 /isolinux" # Make sure isolinux is near the beginning of the ISO
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -n "$usbBootable"; then
|
if test -n "$usbBootable"; then
|
||||||
@ -112,7 +113,7 @@ xorriso="xorriso
|
|||||||
-r
|
-r
|
||||||
-path-list pathlist
|
-path-list pathlist
|
||||||
--sort-weight 0 /
|
--sort-weight 0 /
|
||||||
--sort-weight 1 /isolinux" # Make sure isolinux is near the beginning of the ISO
|
"
|
||||||
|
|
||||||
$xorriso -output $out/iso/$isoName
|
$xorriso -output $out/iso/$isoName
|
||||||
|
|
||||||
|
@ -156,9 +156,23 @@ in rec {
|
|||||||
test = passMeta (runTests driver);
|
test = passMeta (runTests driver);
|
||||||
report = passMeta (releaseTools.gcovReport { coverageRuns = [ test ]; });
|
report = passMeta (releaseTools.gcovReport { coverageRuns = [ test ]; });
|
||||||
|
|
||||||
in (if makeCoverageReport then report else test) // {
|
nodeNames = builtins.attrNames nodes;
|
||||||
inherit nodes driver test;
|
invalidNodeNames = lib.filter
|
||||||
};
|
(node: builtins.match "^[A-z_][A-z0-9_]+$" node == null) nodeNames;
|
||||||
|
|
||||||
|
in
|
||||||
|
if lib.length invalidNodeNames > 0 then
|
||||||
|
throw ''
|
||||||
|
Cannot create machines out of (${lib.concatStringsSep ", " invalidNodeNames})!
|
||||||
|
All machines are references as perl variables in the testing framework which will break the
|
||||||
|
script when special characters are allowed.
|
||||||
|
|
||||||
|
Please stick to alphanumeric chars and underscores as separation.
|
||||||
|
''
|
||||||
|
else
|
||||||
|
(if makeCoverageReport then report else test) // {
|
||||||
|
inherit nodes driver test;
|
||||||
|
};
|
||||||
|
|
||||||
runInMachine =
|
runInMachine =
|
||||||
{ drv
|
{ drv
|
||||||
|
25
nixos/modules/config/appstream.nix
Normal file
25
nixos/modules/config/appstream.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
appstream.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to install files to support the
|
||||||
|
<link xlink:href="https://www.freedesktop.org/software/appstream/docs/index.html">AppStream metadata specification</link>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf config.appstream.enable {
|
||||||
|
environment.pathsToLink = [
|
||||||
|
# per component metadata
|
||||||
|
"/share/metainfo"
|
||||||
|
# legacy path for above
|
||||||
|
"/share/appdata"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
22
nixos/modules/config/xdg/sounds.nix
Normal file
22
nixos/modules/config/xdg/sounds.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
xdg.sounds.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to install files to support the
|
||||||
|
<link xlink:href="https://www.freedesktop.org/wiki/Specifications/sound-theme-spec/">XDG Sound Theme specification</link>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf config.xdg.sounds.enable {
|
||||||
|
environment.pathsToLink = [
|
||||||
|
"/share/sounds"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -101,8 +101,8 @@ in
|
|||||||
config = mkIf enabled {
|
config = mkIf enabled {
|
||||||
assertions = [
|
assertions = [
|
||||||
{
|
{
|
||||||
assertion = config.services.xserver.displayManager.gdm.wayland;
|
assertion = with config.services.xserver.displayManager; gdm.enable -> !gdm.wayland;
|
||||||
message = "NVIDIA drivers don't support wayland";
|
message = "NVIDIA drivers don't support wayland, set services.xserver.displayManager.gdm.wayland=false";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
assertion = !optimusCfg.enable ||
|
assertion = !optimusCfg.enable ||
|
||||||
|
@ -50,7 +50,7 @@ let
|
|||||||
finalCfg = {
|
finalCfg = {
|
||||||
name = "NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel}";
|
name = "NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel}";
|
||||||
params = "init=${config.system.build.toplevel}/init ${additional} ${toString config.boot.kernelParams}";
|
params = "init=${config.system.build.toplevel}/init ${additional} ${toString config.boot.kernelParams}";
|
||||||
image = "/boot/bzImage";
|
image = "/boot/${config.system.boot.loader.kernelFile}";
|
||||||
initrd = "/boot/initrd";
|
initrd = "/boot/initrd";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
@ -163,7 +163,7 @@ let
|
|||||||
cp -v ${pkgs.refind}/share/refind/refind_x64.efi $out/EFI/boot/
|
cp -v ${pkgs.refind}/share/refind/refind_x64.efi $out/EFI/boot/
|
||||||
''
|
''
|
||||||
else
|
else
|
||||||
"# No refind for ia32"
|
"# No refind for ${targetArch}"
|
||||||
;
|
;
|
||||||
|
|
||||||
grubMenuCfg = ''
|
grubMenuCfg = ''
|
||||||
@ -222,18 +222,34 @@ let
|
|||||||
efiDir = pkgs.runCommand "efi-directory" {} ''
|
efiDir = pkgs.runCommand "efi-directory" {} ''
|
||||||
mkdir -p $out/EFI/boot/
|
mkdir -p $out/EFI/boot/
|
||||||
|
|
||||||
|
# ALWAYS required modules.
|
||||||
MODULES="fat iso9660 part_gpt part_msdos \
|
MODULES="fat iso9660 part_gpt part_msdos \
|
||||||
normal boot linux configfile loopback chain halt \
|
normal boot linux configfile loopback chain halt \
|
||||||
efifwsetup efi_gop efi_uga \
|
efifwsetup efi_gop \
|
||||||
ls search search_label search_fs_uuid search_fs_file \
|
ls search search_label search_fs_uuid search_fs_file \
|
||||||
gfxmenu gfxterm gfxterm_background gfxterm_menu test all_video loadenv \
|
gfxmenu gfxterm gfxterm_background gfxterm_menu test all_video loadenv \
|
||||||
exfat ext2 ntfs btrfs hfsplus udf \
|
exfat ext2 ntfs btrfs hfsplus udf \
|
||||||
videoinfo png \
|
videoinfo png \
|
||||||
echo serial \
|
echo serial \
|
||||||
"
|
"
|
||||||
|
|
||||||
|
echo "Building GRUB with modules:"
|
||||||
|
for mod in $MODULES; do
|
||||||
|
echo " - $mod"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Modules that may or may not be available per-platform.
|
||||||
|
echo "Adding additional modules:"
|
||||||
|
for mod in efi_uga; do
|
||||||
|
if [ -f ${pkgs.grub2_efi}/lib/grub/${pkgs.grub2_efi.grubTarget}/$mod.mod ]; then
|
||||||
|
echo " - $mod"
|
||||||
|
MODULES+=" $mod"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
# Make our own efi program, we can't rely on "grub-install" since it seems to
|
# Make our own efi program, we can't rely on "grub-install" since it seems to
|
||||||
# probe for devices, even with --skip-fs-probe.
|
# probe for devices, even with --skip-fs-probe.
|
||||||
${pkgs.grub2_efi}/bin/grub-mkimage -o $out/EFI/boot/${if targetArch == "x64" then "bootx64" else "bootia32"}.efi -p /EFI/boot -O ${if targetArch == "x64" then "x86_64" else "i386"}-efi \
|
${pkgs.grub2_efi}/bin/grub-mkimage -o $out/EFI/boot/boot${targetArch}.efi -p /EFI/boot -O ${pkgs.grub2_efi.grubTarget} \
|
||||||
$MODULES
|
$MODULES
|
||||||
cp ${pkgs.grub2_efi}/share/grub/unicode.pf2 $out/EFI/boot/
|
cp ${pkgs.grub2_efi}/share/grub/unicode.pf2 $out/EFI/boot/
|
||||||
|
|
||||||
@ -344,12 +360,19 @@ let
|
|||||||
${pkgs.dosfstools}/sbin/fsck.vfat -vn "$out"
|
${pkgs.dosfstools}/sbin/fsck.vfat -vn "$out"
|
||||||
''; # */
|
''; # */
|
||||||
|
|
||||||
targetArch = if pkgs.stdenv.isi686 then
|
# Name used by UEFI for architectures.
|
||||||
"ia32"
|
targetArch =
|
||||||
else if pkgs.stdenv.isx86_64 then
|
if pkgs.stdenv.isi686 then
|
||||||
"x64"
|
"ia32"
|
||||||
else
|
else if pkgs.stdenv.isx86_64 then
|
||||||
throw "Unsupported architecture";
|
"x64"
|
||||||
|
else if pkgs.stdenv.isAarch64 then
|
||||||
|
"aa64"
|
||||||
|
else
|
||||||
|
throw "Unsupported architecture";
|
||||||
|
|
||||||
|
# Syslinux (and isolinux) only supports x86-based architectures.
|
||||||
|
canx86BiosBoot = pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64;
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
@ -483,9 +506,9 @@ in
|
|||||||
# here and it causes a cyclic dependency.
|
# here and it causes a cyclic dependency.
|
||||||
boot.loader.grub.enable = false;
|
boot.loader.grub.enable = false;
|
||||||
|
|
||||||
# !!! Hack - attributes expected by other modules.
|
environment.systemPackages = [ pkgs.grub2 pkgs.grub2_efi ]
|
||||||
system.boot.loader.kernelFile = "bzImage";
|
++ optional canx86BiosBoot pkgs.syslinux
|
||||||
environment.systemPackages = [ pkgs.grub2 pkgs.grub2_efi pkgs.syslinux ];
|
;
|
||||||
|
|
||||||
# In stage 1 of the boot, mount the CD as the root FS by label so
|
# In stage 1 of the boot, mount the CD as the root FS by label so
|
||||||
# that we don't need to know its device. We pass the label of the
|
# that we don't need to know its device. We pass the label of the
|
||||||
@ -556,13 +579,7 @@ in
|
|||||||
# Individual files to be included on the CD, outside of the Nix
|
# Individual files to be included on the CD, outside of the Nix
|
||||||
# store on the CD.
|
# store on the CD.
|
||||||
isoImage.contents =
|
isoImage.contents =
|
||||||
[ { source = pkgs.substituteAll {
|
[
|
||||||
name = "isolinux.cfg";
|
|
||||||
src = pkgs.writeText "isolinux.cfg-in" isolinuxCfg;
|
|
||||||
bootRoot = "/boot";
|
|
||||||
};
|
|
||||||
target = "/isolinux/isolinux.cfg";
|
|
||||||
}
|
|
||||||
{ source = config.boot.kernelPackages.kernel + "/" + config.system.boot.loader.kernelFile;
|
{ source = config.boot.kernelPackages.kernel + "/" + config.system.boot.loader.kernelFile;
|
||||||
target = "/boot/" + config.system.boot.loader.kernelFile;
|
target = "/boot/" + config.system.boot.loader.kernelFile;
|
||||||
}
|
}
|
||||||
@ -572,9 +589,6 @@ in
|
|||||||
{ source = config.system.build.squashfsStore;
|
{ source = config.system.build.squashfsStore;
|
||||||
target = "/nix-store.squashfs";
|
target = "/nix-store.squashfs";
|
||||||
}
|
}
|
||||||
{ source = "${pkgs.syslinux}/share/syslinux";
|
|
||||||
target = "/isolinux";
|
|
||||||
}
|
|
||||||
{ source = config.isoImage.efiSplashImage;
|
{ source = config.isoImage.efiSplashImage;
|
||||||
target = "/EFI/boot/efi-background.png";
|
target = "/EFI/boot/efi-background.png";
|
||||||
}
|
}
|
||||||
@ -584,6 +598,17 @@ in
|
|||||||
{ source = pkgs.writeText "version" config.system.nixos.label;
|
{ source = pkgs.writeText "version" config.system.nixos.label;
|
||||||
target = "/version.txt";
|
target = "/version.txt";
|
||||||
}
|
}
|
||||||
|
] ++ optionals canx86BiosBoot [
|
||||||
|
{ source = pkgs.substituteAll {
|
||||||
|
name = "isolinux.cfg";
|
||||||
|
src = pkgs.writeText "isolinux.cfg-in" isolinuxCfg;
|
||||||
|
bootRoot = "/boot";
|
||||||
|
};
|
||||||
|
target = "/isolinux/isolinux.cfg";
|
||||||
|
}
|
||||||
|
{ source = "${pkgs.syslinux}/share/syslinux";
|
||||||
|
target = "/isolinux";
|
||||||
|
}
|
||||||
] ++ optionals config.isoImage.makeEfiBootable [
|
] ++ optionals config.isoImage.makeEfiBootable [
|
||||||
{ source = efiImg;
|
{ source = efiImg;
|
||||||
target = "/boot/efi.img";
|
target = "/boot/efi.img";
|
||||||
@ -591,7 +616,7 @@ in
|
|||||||
{ source = "${efiDir}/EFI";
|
{ source = "${efiDir}/EFI";
|
||||||
target = "/EFI";
|
target = "/EFI";
|
||||||
}
|
}
|
||||||
] ++ optionals config.boot.loader.grub.memtest86.enable [
|
] ++ optionals (config.boot.loader.grub.memtest86.enable && canx86BiosBoot) [
|
||||||
{ source = "${pkgs.memtest86plus}/memtest.bin";
|
{ source = "${pkgs.memtest86plus}/memtest.bin";
|
||||||
target = "/boot/memtest.bin";
|
target = "/boot/memtest.bin";
|
||||||
}
|
}
|
||||||
@ -606,9 +631,10 @@ in
|
|||||||
# Create the ISO image.
|
# Create the ISO image.
|
||||||
system.build.isoImage = pkgs.callPackage ../../../lib/make-iso9660-image.nix ({
|
system.build.isoImage = pkgs.callPackage ../../../lib/make-iso9660-image.nix ({
|
||||||
inherit (config.isoImage) isoName compressImage volumeID contents;
|
inherit (config.isoImage) isoName compressImage volumeID contents;
|
||||||
bootable = true;
|
bootable = canx86BiosBoot;
|
||||||
bootImage = "/isolinux/isolinux.bin";
|
bootImage = "/isolinux/isolinux.bin";
|
||||||
} // optionalAttrs config.isoImage.makeUsbBootable {
|
syslinux = if canx86BiosBoot then pkgs.syslinux else null;
|
||||||
|
} // optionalAttrs (config.isoImage.makeUsbBootable && canx86BiosBoot) {
|
||||||
usbBootable = true;
|
usbBootable = true;
|
||||||
isohybridMbrImage = "${pkgs.syslinux}/share/syslinux/isohdpfx.bin";
|
isohybridMbrImage = "${pkgs.syslinux}/share/syslinux/isohdpfx.bin";
|
||||||
} // optionalAttrs config.isoImage.makeEfiBootable {
|
} // optionalAttrs config.isoImage.makeEfiBootable {
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
./config/xdg/icons.nix
|
./config/xdg/icons.nix
|
||||||
./config/xdg/menus.nix
|
./config/xdg/menus.nix
|
||||||
./config/xdg/mime.nix
|
./config/xdg/mime.nix
|
||||||
|
./config/appstream.nix
|
||||||
|
./config/xdg/sounds.nix
|
||||||
./config/gtk/gtk-icon-cache.nix
|
./config/gtk/gtk-icon-cache.nix
|
||||||
./config/gnu.nix
|
./config/gnu.nix
|
||||||
./config/i18n.nix
|
./config/i18n.nix
|
||||||
@ -715,7 +717,6 @@
|
|||||||
./services/web-apps/restya-board.nix
|
./services/web-apps/restya-board.nix
|
||||||
./services/web-apps/tt-rss.nix
|
./services/web-apps/tt-rss.nix
|
||||||
./services/web-apps/selfoss.nix
|
./services/web-apps/selfoss.nix
|
||||||
./services/web-apps/quassel-webserver.nix
|
|
||||||
./services/web-apps/virtlyst.nix
|
./services/web-apps/virtlyst.nix
|
||||||
./services/web-apps/youtrack.nix
|
./services/web-apps/youtrack.nix
|
||||||
./services/web-servers/apache-httpd/default.nix
|
./services/web-servers/apache-httpd/default.nix
|
||||||
|
@ -98,7 +98,7 @@ in
|
|||||||
if [ "$TERM" != "dumb" -o -n "$INSIDE_EMACS" ]; then
|
if [ "$TERM" != "dumb" -o -n "$INSIDE_EMACS" ]; then
|
||||||
PROMPT_COLOR="1;31m"
|
PROMPT_COLOR="1;31m"
|
||||||
let $UID && PROMPT_COLOR="1;32m"
|
let $UID && PROMPT_COLOR="1;32m"
|
||||||
PS1="\n\[\033[$PROMPT_COLOR\][\u@\h:\w]\\$\[\033[0m\] "
|
PS1="\n\[\033[$PROMPT_COLOR\][\[\e]0;\u@\h: \w\a\]\u@\h:\w]\$\[\033[0m\] "
|
||||||
if test "$TERM" = "xterm"; then
|
if test "$TERM" = "xterm"; then
|
||||||
PS1="\[\033]2;\h:\u:\w\007\]$PS1"
|
PS1="\[\033]2;\h:\u:\w\007\]$PS1"
|
||||||
fi
|
fi
|
||||||
|
@ -18,13 +18,13 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
strategy = mkOption {
|
strategy = mkOption {
|
||||||
type = types.enum [ "default" "match_prev_cmd" ];
|
type = types.enum [ "history" "match_prev_cmd" ];
|
||||||
default = "default";
|
default = "history";
|
||||||
description = ''
|
description = ''
|
||||||
Set ZSH_AUTOSUGGEST_STRATEGY to choose the strategy for generating suggestions.
|
Set ZSH_AUTOSUGGEST_STRATEGY to choose the strategy for generating suggestions.
|
||||||
There are currently two to choose from:
|
There are currently two to choose from:
|
||||||
|
|
||||||
* default: Chooses the most recent match.
|
* history: Chooses the most recent match.
|
||||||
* match_prev_cmd: Chooses the most recent match whose preceding history item matches
|
* match_prev_cmd: Chooses the most recent match whose preceding history item matches
|
||||||
the most recently executed command (more info). Note that this strategy won't work as
|
the most recently executed command (more info). Note that this strategy won't work as
|
||||||
expected with ZSH options that don't preserve the history order such as
|
expected with ZSH options that don't preserve the history order such as
|
||||||
@ -51,7 +51,7 @@ in
|
|||||||
source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||||
|
|
||||||
export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="${cfg.highlightStyle}"
|
export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="${cfg.highlightStyle}"
|
||||||
export ZSH_AUTOSUGGEST_STRATEGY="${cfg.strategy}"
|
export ZSH_AUTOSUGGEST_STRATEGY=("${cfg.strategy}")
|
||||||
|
|
||||||
${concatStringsSep "\n" (mapAttrsToList (key: value: ''export ${key}="${value}"'') cfg.extraConfig)}
|
${concatStringsSep "\n" (mapAttrsToList (key: value: ''export ${key}="${value}"'') cfg.extraConfig)}
|
||||||
'';
|
'';
|
||||||
|
@ -46,7 +46,7 @@ let
|
|||||||
# in the same directory as slurm.conf
|
# in the same directory as slurm.conf
|
||||||
etcSlurm = pkgs.symlinkJoin {
|
etcSlurm = pkgs.symlinkJoin {
|
||||||
name = "etc-slurm";
|
name = "etc-slurm";
|
||||||
paths = [ configFile cgroupConfig plugStackConfig ];
|
paths = [ configFile cgroupConfig plugStackConfig ] ++ cfg.extraConfigPaths;
|
||||||
};
|
};
|
||||||
|
|
||||||
in
|
in
|
||||||
@ -239,6 +239,17 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraConfigPaths = mkOption {
|
||||||
|
type = with types; listOf path;
|
||||||
|
default = [];
|
||||||
|
description = ''
|
||||||
|
Slurm expects config files for plugins in the same path
|
||||||
|
as <literal>slurm.conf</literal>. Add extra nix store
|
||||||
|
paths that should be merged into same directory as
|
||||||
|
<literal>slurm.conf</literal>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -303,6 +314,7 @@ in
|
|||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "forking";
|
Type = "forking";
|
||||||
|
KillMode = "process";
|
||||||
ExecStart = "${wrappedSlurm}/bin/slurmd";
|
ExecStart = "${wrappedSlurm}/bin/slurmd";
|
||||||
PIDFile = "/run/slurmd.pid";
|
PIDFile = "/run/slurmd.pid";
|
||||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||||
|
@ -54,6 +54,13 @@ in
|
|||||||
description = "The database directory.";
|
description = "The database directory.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
logLevel = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "0";
|
||||||
|
example = "acl trace";
|
||||||
|
description = "The log level selector of slapd.";
|
||||||
|
};
|
||||||
|
|
||||||
configDir = mkOption {
|
configDir = mkOption {
|
||||||
type = types.nullOr types.path;
|
type = types.nullOr types.path;
|
||||||
default = null;
|
default = null;
|
||||||
@ -139,7 +146,7 @@ in
|
|||||||
chown -R "${cfg.user}:${cfg.group}" "${cfg.dataDir}"
|
chown -R "${cfg.user}:${cfg.group}" "${cfg.dataDir}"
|
||||||
'';
|
'';
|
||||||
serviceConfig.ExecStart =
|
serviceConfig.ExecStart =
|
||||||
"${openldap.out}/libexec/slapd -d 0 " +
|
"${openldap.out}/libexec/slapd -d ${cfg.logLevel} " +
|
||||||
"-u '${cfg.user}' -g '${cfg.group}' " +
|
"-u '${cfg.user}' -g '${cfg.group}' " +
|
||||||
"-h '${concatStringsSep " " cfg.urlList}' " +
|
"-h '${concatStringsSep " " cfg.urlList}' " +
|
||||||
"${configOpts}";
|
"${configOpts}";
|
||||||
|
@ -25,9 +25,14 @@ in {
|
|||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.bluez;
|
default = pkgs.bluez;
|
||||||
defaultText = "pkgs.bluez";
|
defaultText = "pkgs.bluez";
|
||||||
example = "pkgs.bluez.override { enableMidi = true; }";
|
example = "pkgs.bluezFull";
|
||||||
description = ''
|
description = ''
|
||||||
Which BlueZ package to use.
|
Which BlueZ package to use.
|
||||||
|
|
||||||
|
<note><para>
|
||||||
|
Use the <literal>pkgs.bluezFull</literal> package to enable all
|
||||||
|
bluez plugins.
|
||||||
|
</para></note>
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ in {
|
|||||||
description = "LIRC daemon socket";
|
description = "LIRC daemon socket";
|
||||||
wantedBy = [ "sockets.target" ];
|
wantedBy = [ "sockets.target" ];
|
||||||
socketConfig = {
|
socketConfig = {
|
||||||
|
# default search path
|
||||||
ListenStream = "/run/lirc/lircd";
|
ListenStream = "/run/lirc/lircd";
|
||||||
SocketUser = "lirc";
|
SocketUser = "lirc";
|
||||||
SocketMode = "0660";
|
SocketMode = "0660";
|
||||||
@ -66,9 +67,19 @@ in {
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
RuntimeDirectory = "lirc";
|
RuntimeDirectory = "lirc";
|
||||||
|
|
||||||
# socket lives in runtime directory; we have to keep is available
|
# Service runtime directory and socket share same folder.
|
||||||
|
# Following hacks are necessary to get everything right:
|
||||||
|
|
||||||
|
# 1. prevent socket deletion during stop and restart
|
||||||
RuntimeDirectoryPreserve = true;
|
RuntimeDirectoryPreserve = true;
|
||||||
|
|
||||||
|
# 2. fix runtime folder owner-ship, happens when socket activation
|
||||||
|
# creates the folder
|
||||||
|
PermissionsStartOnly = true;
|
||||||
|
ExecStartPre = [
|
||||||
|
"${pkgs.coreutils}/bin/chown lirc /run/lirc/"
|
||||||
|
];
|
||||||
|
|
||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.lirc}/bin/lircd --nodaemon \
|
${pkgs.lirc}/bin/lircd --nodaemon \
|
||||||
${escapeShellArgs cfg.extraArguments} \
|
${escapeShellArgs cfg.extraArguments} \
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
server-user nscd
|
|
||||||
threads 1
|
|
||||||
paranoia no
|
|
||||||
debug-level 0
|
|
||||||
|
|
||||||
enable-cache passwd yes
|
|
||||||
positive-time-to-live passwd 0
|
|
||||||
negative-time-to-live passwd 0
|
|
||||||
suggested-size passwd 211
|
|
||||||
check-files passwd yes
|
|
||||||
persistent passwd no
|
|
||||||
shared passwd yes
|
|
||||||
|
|
||||||
enable-cache group yes
|
|
||||||
positive-time-to-live group 0
|
|
||||||
negative-time-to-live group 0
|
|
||||||
suggested-size group 211
|
|
||||||
check-files group yes
|
|
||||||
persistent group no
|
|
||||||
shared group yes
|
|
||||||
|
|
||||||
enable-cache hosts yes
|
|
||||||
positive-time-to-live hosts 600
|
|
||||||
negative-time-to-live hosts 5
|
|
||||||
suggested-size hosts 211
|
|
||||||
check-files hosts yes
|
|
||||||
persistent hosts no
|
|
||||||
shared hosts yes
|
|
||||||
|
|
||||||
enable-cache services yes
|
|
||||||
positive-time-to-live services 0
|
|
||||||
negative-time-to-live services 0
|
|
||||||
suggested-size services 211
|
|
||||||
check-files services yes
|
|
||||||
persistent services no
|
|
||||||
shared services yes
|
|
@ -75,7 +75,6 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
system.nssModules = optional cfg.enable pkgs.sssd;
|
system.nssModules = optional cfg.enable pkgs.sssd;
|
||||||
services.nscd.config = builtins.readFile ./nscd-sssd.conf;
|
|
||||||
services.dbus.packages = [ pkgs.sssd ];
|
services.dbus.packages = [ pkgs.sssd ];
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -169,8 +169,9 @@ in {
|
|||||||
Sets the maximum amount of time (in seconds) a connection may be reused.
|
Sets the maximum amount of time (in seconds) a connection may be reused.
|
||||||
For MySQL this setting should be shorter than the `wait_timeout' variable.
|
For MySQL this setting should be shorter than the `wait_timeout' variable.
|
||||||
'';
|
'';
|
||||||
default = 14400;
|
default = "unlimited";
|
||||||
type = types.int;
|
example = 14400;
|
||||||
|
type = types.either types.int (types.enum [ "unlimited" ]);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -488,7 +488,7 @@ in {
|
|||||||
'') cfg.dynamicHosts.hostsDirs);
|
'') cfg.dynamicHosts.hostsDirs);
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
RemainAfterExist = true;
|
RemainAfterExit = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -228,6 +228,7 @@ let
|
|||||||
|
|
||||||
createSSLOptsStr = o: ''
|
createSSLOptsStr = o: ''
|
||||||
ssl = {
|
ssl = {
|
||||||
|
cafile = "/etc/ssl/certs/ca-bundle.crt";
|
||||||
key = "${o.key}";
|
key = "${o.key}";
|
||||||
certificate = "${o.cert}";
|
certificate = "${o.cert}";
|
||||||
${concatStringsSep "\n" (mapAttrsToList (name: value: "${name} = ${toLua value};") o.extraOptions)}
|
${concatStringsSep "\n" (mapAttrsToList (name: value: "${name} = ${toLua value};") o.extraOptions)}
|
||||||
|
@ -1,28 +1,52 @@
|
|||||||
|
# We basically use nscd as a proxy for forwarding nss requests to appropriate
|
||||||
|
# nss modules, as we run nscd with LD_LIBRARY_PATH set to the directory
|
||||||
|
# containing all such modules
|
||||||
|
# Note that we can not use `enable-cache no` As this will actually cause nscd
|
||||||
|
# to just reject the nss requests it receives, which then causes glibc to
|
||||||
|
# fallback to trying to handle the request by itself. Which won't work as glibc
|
||||||
|
# is not aware of the path in which the nss modules live. As a workaround, we
|
||||||
|
# have `enable-cache yes` with an explicit ttl of 0
|
||||||
server-user nscd
|
server-user nscd
|
||||||
threads 1
|
threads 1
|
||||||
paranoia no
|
paranoia no
|
||||||
debug-level 0
|
debug-level 0
|
||||||
|
|
||||||
enable-cache passwd yes
|
enable-cache passwd yes
|
||||||
positive-time-to-live passwd 600
|
positive-time-to-live passwd 0
|
||||||
negative-time-to-live passwd 20
|
negative-time-to-live passwd 0
|
||||||
suggested-size passwd 211
|
suggested-size passwd 211
|
||||||
check-files passwd yes
|
check-files passwd yes
|
||||||
persistent passwd no
|
persistent passwd no
|
||||||
shared passwd yes
|
shared passwd yes
|
||||||
|
|
||||||
enable-cache group yes
|
enable-cache group yes
|
||||||
positive-time-to-live group 3600
|
positive-time-to-live group 0
|
||||||
negative-time-to-live group 60
|
negative-time-to-live group 0
|
||||||
suggested-size group 211
|
suggested-size group 211
|
||||||
check-files group yes
|
check-files group yes
|
||||||
persistent group no
|
persistent group no
|
||||||
shared group yes
|
shared group yes
|
||||||
|
|
||||||
|
enable-cache netgroup yes
|
||||||
|
positive-time-to-live netgroup 0
|
||||||
|
negative-time-to-live netgroup 0
|
||||||
|
suggested-size netgroup 211
|
||||||
|
check-files netgroup yes
|
||||||
|
persistent netgroup no
|
||||||
|
shared netgroup yes
|
||||||
|
|
||||||
enable-cache hosts yes
|
enable-cache hosts yes
|
||||||
positive-time-to-live hosts 600
|
positive-time-to-live hosts 600
|
||||||
negative-time-to-live hosts 5
|
negative-time-to-live hosts 0
|
||||||
suggested-size hosts 211
|
suggested-size hosts 211
|
||||||
check-files hosts yes
|
check-files hosts yes
|
||||||
persistent hosts no
|
persistent hosts no
|
||||||
shared hosts yes
|
shared hosts yes
|
||||||
|
|
||||||
|
enable-cache services yes
|
||||||
|
positive-time-to-live services 0
|
||||||
|
negative-time-to-live services 0
|
||||||
|
suggested-size services 211
|
||||||
|
check-files services yes
|
||||||
|
persistent services no
|
||||||
|
shared services yes
|
||||||
|
@ -484,4 +484,6 @@ in {
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
meta.doc = ./nextcloud.xml;
|
||||||
}
|
}
|
||||||
|
99
nixos/modules/services/web-apps/nextcloud.xml
Normal file
99
nixos/modules/services/web-apps/nextcloud.xml
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||||
|
version="5.0"
|
||||||
|
xml:id="module-services-nextcloud">
|
||||||
|
<title>Nextcloud</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
<link xlink:href="https://nextcloud.com/">Nextcloud</link> is an open-source, self-hostable cloud
|
||||||
|
platform. The server setup can be automated using
|
||||||
|
<link linkend="opt-services.nextcloud.enable">services.nextcloud</link>. A desktop client is packaged
|
||||||
|
at <literal>pkgs.nextcloud-client</literal>.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<section xml:id="module-services-nextcloud-basic-usage">
|
||||||
|
<title>Basic usage</title>
|
||||||
|
<para>
|
||||||
|
Nextcloud is a PHP-based application which requires an HTTP server
|
||||||
|
(<literal><link linkend="opt-services.nextcloud.enable">services.nextcloud</link></literal> optionally supports
|
||||||
|
<literal><link linkend="opt-services.nginx.enable">services.nginx</link></literal>) and a database
|
||||||
|
(it's recommended to use <literal><link linkend="opt-services.postgresql.enable">services.postgresql</link></literal>).
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
A very basic configuration may look like this:
|
||||||
|
<programlisting>{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
services.nextcloud = {
|
||||||
|
<link linkend="opt-services.nextcloud.enable">enable</link> = true;
|
||||||
|
<link linkend="opt-services.nextcloud.hostName">hostName</link> = "nextcloud.tld";
|
||||||
|
<link linkend="opt-services.nextcloud.nginx.enable">nginx.enable</link> = true;
|
||||||
|
config = {
|
||||||
|
<link linkend="opt-services.nextcloud.config.dbtype">dbtype</link> = "pgsql";
|
||||||
|
<link linkend="opt-services.nextcloud.config.dbuser">dbuser</link> = "nextcloud";
|
||||||
|
<link linkend="opt-services.nextcloud.config.dbhost">dbhost</link> = "/tmp"; # nextcloud will add /.s.PGSQL.5432 by itself
|
||||||
|
<link linkend="opt-services.nextcloud.config.dbname">dbname</link> = "nextcloud";
|
||||||
|
<link linkend="opt-services.nextcloud.config.adminpassFile">adminpassFile</link> = "/path/to/admin-pass-file";
|
||||||
|
<link linkend="opt-services.nextcloud.config.adminuser">adminuser</link> = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.postgresql = {
|
||||||
|
<link linkend="opt-services.postgresql.enable">enable</link> = true;
|
||||||
|
<link linkend="opt-services.postgresql.initialScript">initialScript</link> = pkgs.writeText "psql-init" ''
|
||||||
|
CREATE ROLE nextcloud WITH LOGIN;
|
||||||
|
CREATE DATABASE nextcloud WITH OWNER nextcloud;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# ensure that postgres is running *before* running the setup
|
||||||
|
systemd.services."nextcloud-setup" = {
|
||||||
|
requires = ["postgresql.service"];
|
||||||
|
after = ["postgresql.service"];
|
||||||
|
};
|
||||||
|
|
||||||
|
<link linkend="opt-networking.firewall.allowedTCPPorts">networking.firewall.allowedTCPPorts</link> = [ 80 443 ];
|
||||||
|
}</programlisting>
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The options <literal>hostName</literal> and <literal>nginx.enable</literal> are used internally to configure an
|
||||||
|
HTTP server using <literal><link xlink:href="https://php-fpm.org/">PHP-FPM</link></literal> and <literal>nginx</literal>.
|
||||||
|
The <literal>config</literal> attribute set is used for the <literal>config.php</literal> which is used
|
||||||
|
for the application's configuration.
|
||||||
|
<emphasis>Beware: this isn't entirely pure since the config is modified by the application's runtime!</emphasis>
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
In case the application serves multiple hosts (those are checked with
|
||||||
|
<literal><link xlink:href="http://php.net/manual/en/reserved.variables.server.php">$_SERVER['HTTP_HOST']</link></literal>)
|
||||||
|
those can be added using
|
||||||
|
<literal><link linkend="opt-services.nextcloud.config.extraTrustedDomains">services.nextcloud.config.extraTrustedDomains</link></literal>.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section xml:id="module-services-nextcloud-pitfalls-during-upgrade">
|
||||||
|
<title>Pitfalls</title>
|
||||||
|
<para>
|
||||||
|
Unfortunately Nextcloud appears to be very stateful when it comes to managing its own configuration. The
|
||||||
|
config file lives in the home directory of the <literal>nextcloud</literal> user (by default
|
||||||
|
<literal>/var/lib/nextcloud/config/config.php</literal>) and is also used to track several
|
||||||
|
states of the application (e.g. whether installed or not).
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Right now changes to the <literal>services.nextcloud.config</literal> attribute set won't take effect
|
||||||
|
after the first install
|
||||||
|
(except <literal><link linkend="opt-services.nextcloud.config.extraTrustedDomains">services.nextcloud.config.extraTrustedDomains</link></literal>) since the actual configuration
|
||||||
|
file is generated by the NextCloud installer which also sets up critical parts such as the database
|
||||||
|
structure.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<emphasis>Warning: don't delete <literal>config.php</literal>! This file tracks the application's state and a deletion can cause unwanted side-effects!</emphasis>
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<emphasis>Warning: don't rerun <literal>nextcloud-occ maintenance:install</literal>! This command tries to install the application and can cause unwanted side-effects!</emphasis>
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The issues are known and reported in <link xlink:href="https://github.com/NixOS/nixpkgs/issues/49783">#49783</link>, for now it's unfortunately necessary to manually work around these issues.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</chapter>
|
@ -1,101 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.services.quassel-webserver;
|
|
||||||
quassel-webserver = cfg.pkg;
|
|
||||||
settings = ''
|
|
||||||
module.exports = {
|
|
||||||
default: {
|
|
||||||
host: '${cfg.quasselCoreHost}', // quasselcore host
|
|
||||||
port: ${toString cfg.quasselCorePort}, // quasselcore port
|
|
||||||
initialBacklogLimit: ${toString cfg.initialBacklogLimit}, // Amount of backlogs to fetch per buffer on connection
|
|
||||||
backlogLimit: ${toString cfg.backlogLimit}, // Amount of backlogs to fetch per buffer after first retrieval
|
|
||||||
securecore: ${boolToString cfg.secureCore}, // Connect to the core using SSL
|
|
||||||
theme: '${cfg.theme}' // Default UI theme
|
|
||||||
},
|
|
||||||
themes: ['default', 'darksolarized'], // Available themes
|
|
||||||
forcedefault: ${boolToString cfg.forceHostAndPort}, // Will force default host and port to be used, and will hide the corresponding fields in the UI
|
|
||||||
prefixpath: '${cfg.prefixPath}' // Configure this if you use a reverse proxy
|
|
||||||
};
|
|
||||||
'';
|
|
||||||
settingsFile = pkgs.writeText "settings-user.js" settings;
|
|
||||||
in {
|
|
||||||
options = {
|
|
||||||
services.quassel-webserver = {
|
|
||||||
enable = mkOption {
|
|
||||||
default = false;
|
|
||||||
type = types.bool;
|
|
||||||
description = "Whether to enable the quassel webclient service";
|
|
||||||
};
|
|
||||||
pkg = mkOption {
|
|
||||||
default = pkgs.quassel-webserver;
|
|
||||||
defaultText = "pkgs.quassel-webserver";
|
|
||||||
type = types.package;
|
|
||||||
description = "The quassel-webserver package";
|
|
||||||
};
|
|
||||||
quasselCoreHost = mkOption {
|
|
||||||
default = "";
|
|
||||||
type = types.str;
|
|
||||||
description = "The default host of the quassel core";
|
|
||||||
};
|
|
||||||
quasselCorePort = mkOption {
|
|
||||||
default = 4242;
|
|
||||||
type = types.int;
|
|
||||||
description = "The default quassel core port";
|
|
||||||
};
|
|
||||||
initialBacklogLimit = mkOption {
|
|
||||||
default = 20;
|
|
||||||
type = types.int;
|
|
||||||
description = "Amount of backlogs to fetch per buffer on connection";
|
|
||||||
};
|
|
||||||
backlogLimit = mkOption {
|
|
||||||
default = 100;
|
|
||||||
type = types.int;
|
|
||||||
description = "Amount of backlogs to fetch per buffer after first retrieval";
|
|
||||||
};
|
|
||||||
secureCore = mkOption {
|
|
||||||
default = true;
|
|
||||||
type = types.bool;
|
|
||||||
description = "Connect to the core using SSL";
|
|
||||||
};
|
|
||||||
theme = mkOption {
|
|
||||||
default = "default";
|
|
||||||
type = types.str;
|
|
||||||
description = "default or darksolarized";
|
|
||||||
};
|
|
||||||
prefixPath = mkOption {
|
|
||||||
default = "";
|
|
||||||
type = types.str;
|
|
||||||
description = "Configure this if you use a reverse proxy. Must start with a '/'";
|
|
||||||
example = "/quassel";
|
|
||||||
};
|
|
||||||
port = mkOption {
|
|
||||||
default = 60443;
|
|
||||||
type = types.int;
|
|
||||||
description = "The port the quassel webserver should listen on";
|
|
||||||
};
|
|
||||||
useHttps = mkOption {
|
|
||||||
default = true;
|
|
||||||
type = types.bool;
|
|
||||||
description = "Whether the quassel webserver connection should be a https connection";
|
|
||||||
};
|
|
||||||
forceHostAndPort = mkOption {
|
|
||||||
default = false;
|
|
||||||
type = types.bool;
|
|
||||||
description = "Force the users to use the quasselCoreHost and quasselCorePort defaults";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
systemd.services.quassel-webserver = {
|
|
||||||
description = "A web server/client for Quassel";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = "${quassel-webserver}/lib/node_modules/quassel-webserver/bin/www -p ${toString cfg.port} -m ${if cfg.useHttps == true then "https" else "http"} -c ${settingsFile}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -85,7 +85,7 @@ in rec {
|
|||||||
id = mkOption {
|
id = mkOption {
|
||||||
default = "main";
|
default = "main";
|
||||||
description = ''
|
description = ''
|
||||||
A unique identifier necessary to keep multiple owncloud server
|
A unique identifier necessary to keep multiple Limesurvey server
|
||||||
instances on the same machine apart. This is used to
|
instances on the same machine apart. This is used to
|
||||||
disambiguate the administrative scripts, which get names like
|
disambiguate the administrative scripts, which get names like
|
||||||
mediawiki-$id-change-password.
|
mediawiki-$id-change-password.
|
||||||
|
@ -1,608 +0,0 @@
|
|||||||
{ config, lib, pkgs, serverInfo, php, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
|
|
||||||
owncloudConfig = pkgs.writeText "config.php"
|
|
||||||
''
|
|
||||||
<?php
|
|
||||||
|
|
||||||
/* Only enable this for local development and not in productive environments */
|
|
||||||
/* This will disable the minifier and outputs some additional debug informations */
|
|
||||||
define("DEBUG", false);
|
|
||||||
|
|
||||||
$CONFIG = array(
|
|
||||||
/* Flag to indicate ownCloud is successfully installed (true = installed) */
|
|
||||||
"installed" => true,
|
|
||||||
|
|
||||||
/* Type of database, can be sqlite, mysql or pgsql */
|
|
||||||
"dbtype" => "${config.dbType}",
|
|
||||||
|
|
||||||
/* Name of the ownCloud database */
|
|
||||||
"dbname" => "${config.dbName}",
|
|
||||||
|
|
||||||
/* User to access the ownCloud database */
|
|
||||||
"dbuser" => "${config.dbUser}",
|
|
||||||
|
|
||||||
/* Password to access the ownCloud database */
|
|
||||||
"dbpassword" => "${config.dbPassword}",
|
|
||||||
|
|
||||||
/* Host running the ownCloud database. To specify a port use "HOSTNAME:####"; to specify a unix sockets use "localhost:/path/to/socket". */
|
|
||||||
"dbhost" => "${config.dbServer}",
|
|
||||||
|
|
||||||
/* Prefix for the ownCloud tables in the database */
|
|
||||||
"dbtableprefix" => "",
|
|
||||||
|
|
||||||
/* Force use of HTTPS connection (true = use HTTPS) */
|
|
||||||
"forcessl" => ${config.forceSSL},
|
|
||||||
|
|
||||||
/* Blacklist a specific file and disallow the upload of files with this name - WARNING: USE THIS ONLY IF YOU KNOW WHAT YOU ARE DOING. */
|
|
||||||
"blacklisted_files" => array('.htaccess'),
|
|
||||||
|
|
||||||
/* The automatic hostname detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. You can also add a port. For example "www.example.com:88" */
|
|
||||||
"overwritehost" => "${config.overwriteHost}",
|
|
||||||
|
|
||||||
/* The automatic protocol detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the protocol detection. For example "https" */
|
|
||||||
"overwriteprotocol" => "${config.overwriteProtocol}",
|
|
||||||
|
|
||||||
/* The automatic webroot detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. For example "/domain.tld/ownCloud". The value "/" can be used to remove the root. */
|
|
||||||
"overwritewebroot" => "${config.overwriteWebRoot}",
|
|
||||||
|
|
||||||
/* The automatic detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to define a manually override condition as regular expression for the remote ip address. For example "^10\.0\.0\.[1-3]$" */
|
|
||||||
"overwritecondaddr" => "",
|
|
||||||
|
|
||||||
/* A proxy to use to connect to the internet. For example "myproxy.org:88" */
|
|
||||||
"proxy" => "",
|
|
||||||
|
|
||||||
/* The optional authentication for the proxy to use to connect to the internet. The format is: [username]:[password] */
|
|
||||||
"proxyuserpwd" => "",
|
|
||||||
|
|
||||||
/* List of trusted domains, to prevent host header poisoning ownCloud is only using these Host headers */
|
|
||||||
${if config.trustedDomain != "" then "'trusted_domains' => array('${config.trustedDomain}')," else ""}
|
|
||||||
|
|
||||||
/* Theme to use for ownCloud */
|
|
||||||
"theme" => "",
|
|
||||||
|
|
||||||
/* Optional ownCloud default language - overrides automatic language detection on public pages like login or shared items. This has no effect on the user's language preference configured under "personal -> language" once they have logged in */
|
|
||||||
"default_language" => "${config.defaultLang}",
|
|
||||||
|
|
||||||
/* Path to the parent directory of the 3rdparty directory */
|
|
||||||
"3rdpartyroot" => "",
|
|
||||||
|
|
||||||
/* URL to the parent directory of the 3rdparty directory, as seen by the browser */
|
|
||||||
"3rdpartyurl" => "",
|
|
||||||
|
|
||||||
/* Default app to open on login.
|
|
||||||
* This can be a comma-separated list of app ids.
|
|
||||||
* If the first app is not enabled for the current user,
|
|
||||||
* it will try with the second one and so on. If no enabled app could be found,
|
|
||||||
* the "files" app will be displayed instead. */
|
|
||||||
"defaultapp" => "${config.defaultApp}",
|
|
||||||
|
|
||||||
/* Enable the help menu item in the settings */
|
|
||||||
"knowledgebaseenabled" => true,
|
|
||||||
|
|
||||||
/* Enable installing apps from the appstore */
|
|
||||||
"appstoreenabled" => ${config.appStoreEnable},
|
|
||||||
|
|
||||||
/* URL of the appstore to use, server should understand OCS */
|
|
||||||
"appstoreurl" => "https://api.owncloud.com/v1",
|
|
||||||
|
|
||||||
/* Domain name used by ownCloud for the sender mail address, e.g. no-reply@example.com */
|
|
||||||
"mail_domain" => "${config.mailFromDomain}",
|
|
||||||
|
|
||||||
/* FROM address used by ownCloud for the sender mail address, e.g. owncloud@example.com
|
|
||||||
This setting overwrites the built in 'sharing-noreply' and 'lostpassword-noreply'
|
|
||||||
FROM addresses, that ownCloud uses
|
|
||||||
*/
|
|
||||||
"mail_from_address" => "${config.mailFrom}",
|
|
||||||
|
|
||||||
/* Enable SMTP class debugging */
|
|
||||||
"mail_smtpdebug" => false,
|
|
||||||
|
|
||||||
/* Mode to use for sending mail, can be sendmail, smtp, qmail or php, see PHPMailer docs */
|
|
||||||
"mail_smtpmode" => "${config.SMTPMode}",
|
|
||||||
|
|
||||||
/* Host to use for sending mail, depends on mail_smtpmode if this is used */
|
|
||||||
"mail_smtphost" => "${config.SMTPHost}",
|
|
||||||
|
|
||||||
/* Port to use for sending mail, depends on mail_smtpmode if this is used */
|
|
||||||
"mail_smtpport" => ${config.SMTPPort},
|
|
||||||
|
|
||||||
/* SMTP server timeout in seconds for sending mail, depends on mail_smtpmode if this is used */
|
|
||||||
"mail_smtptimeout" => ${config.SMTPTimeout},
|
|
||||||
|
|
||||||
/* SMTP connection prefix or sending mail, depends on mail_smtpmode if this is used.
|
|
||||||
Can be "", ssl or tls */
|
|
||||||
"mail_smtpsecure" => "${config.SMTPSecure}",
|
|
||||||
|
|
||||||
/* authentication needed to send mail, depends on mail_smtpmode if this is used
|
|
||||||
* (false = disable authentication)
|
|
||||||
*/
|
|
||||||
"mail_smtpauth" => ${config.SMTPAuth},
|
|
||||||
|
|
||||||
/* authentication type needed to send mail, depends on mail_smtpmode if this is used
|
|
||||||
* Can be LOGIN (default), PLAIN or NTLM */
|
|
||||||
"mail_smtpauthtype" => "${config.SMTPAuthType}",
|
|
||||||
|
|
||||||
/* Username to use for sendmail mail, depends on mail_smtpauth if this is used */
|
|
||||||
"mail_smtpname" => "${config.SMTPUser}",
|
|
||||||
|
|
||||||
/* Password to use for sendmail mail, depends on mail_smtpauth if this is used */
|
|
||||||
"mail_smtppassword" => "${config.SMTPPass}",
|
|
||||||
|
|
||||||
/* memcached servers (Only used when xCache, APC and APCu are absent.) */
|
|
||||||
"memcached_servers" => array(
|
|
||||||
// hostname, port and optional weight. Also see:
|
|
||||||
// http://www.php.net/manual/en/memcached.addservers.php
|
|
||||||
// http://www.php.net/manual/en/memcached.addserver.php
|
|
||||||
//array('localhost', 11211),
|
|
||||||
//array('other.host.local', 11211),
|
|
||||||
),
|
|
||||||
|
|
||||||
/* How long should ownCloud keep deleted files in the trash bin, default value: 30 days */
|
|
||||||
'trashbin_retention_obligation' => 30,
|
|
||||||
|
|
||||||
/* Disable/Enable auto expire for the trash bin, by default auto expire is enabled */
|
|
||||||
'trashbin_auto_expire' => true,
|
|
||||||
|
|
||||||
/* allow user to change his display name, if it is supported by the back-end */
|
|
||||||
'allow_user_to_change_display_name' => true,
|
|
||||||
|
|
||||||
/* Check 3rdparty apps for malicious code fragments */
|
|
||||||
"appcodechecker" => true,
|
|
||||||
|
|
||||||
/* Check if ownCloud is up to date */
|
|
||||||
"updatechecker" => true,
|
|
||||||
|
|
||||||
/* Are we connected to the internet or are we running in a closed network? */
|
|
||||||
"has_internet_connection" => true,
|
|
||||||
|
|
||||||
/* Check if the ownCloud WebDAV server is working correctly. Can be disabled if not needed in special situations*/
|
|
||||||
"check_for_working_webdav" => true,
|
|
||||||
|
|
||||||
/* Check if .htaccess protection of data is working correctly. Can be disabled if not needed in special situations*/
|
|
||||||
"check_for_working_htaccess" => true,
|
|
||||||
|
|
||||||
/* Place to log to, can be owncloud and syslog (owncloud is log menu item in admin menu) */
|
|
||||||
"log_type" => "owncloud",
|
|
||||||
|
|
||||||
/* File for the owncloud logger to log to, (default is ownloud.log in the data dir) */
|
|
||||||
"logfile" => "${config.dataDir}/owncloud.log",
|
|
||||||
|
|
||||||
/* Loglevel to start logging at. 0=DEBUG, 1=INFO, 2=WARN, 3=ERROR (default is WARN) */
|
|
||||||
"loglevel" => "2",
|
|
||||||
|
|
||||||
/* date format to be used while writing to the owncloud logfile */
|
|
||||||
'logdateformat' => 'F d, Y H:i:s',
|
|
||||||
|
|
||||||
${tzSetting}
|
|
||||||
|
|
||||||
/* Append all database queries and parameters to the log file.
|
|
||||||
(watch out, this option can increase the size of your log file)*/
|
|
||||||
"log_query" => false,
|
|
||||||
|
|
||||||
/* Whether ownCloud should log the last successfull cron exec */
|
|
||||||
"cron_log" => true,
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Configure the size in bytes log rotation should happen, 0 or false disables the rotation.
|
|
||||||
* This rotates the current owncloud logfile to a new name, this way the total log usage
|
|
||||||
* will stay limited and older entries are available for a while longer. The
|
|
||||||
* total disk usage is twice the configured size.
|
|
||||||
* WARNING: When you use this, the log entries will eventually be lost.
|
|
||||||
*/
|
|
||||||
'log_rotate_size' => "104857600", // 104857600, // 100 MiB
|
|
||||||
|
|
||||||
/* Lifetime of the remember login cookie, default is 15 days */
|
|
||||||
"remember_login_cookie_lifetime" => 1296000,
|
|
||||||
|
|
||||||
/* Life time of a session after inactivity */
|
|
||||||
"session_lifetime" => 86400,
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Enable/disable session keep alive when a user is logged in in the Web UI.
|
|
||||||
* This is achieved by sending a "heartbeat" to the server to prevent
|
|
||||||
* the session timing out.
|
|
||||||
*/
|
|
||||||
"session_keepalive" => true,
|
|
||||||
|
|
||||||
/* Custom CSP policy, changing this will overwrite the standard policy */
|
|
||||||
"custom_csp_policy" => "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src *; font-src 'self' data:; media-src *",
|
|
||||||
|
|
||||||
/* Enable/disable X-Frame-Restriction */
|
|
||||||
/* HIGH SECURITY RISK IF DISABLED*/
|
|
||||||
"xframe_restriction" => true,
|
|
||||||
|
|
||||||
/* The directory where the user data is stored, default to data in the owncloud
|
|
||||||
* directory. The sqlite database is also stored here, when sqlite is used.
|
|
||||||
*/
|
|
||||||
"datadirectory" => "${config.dataDir}/storage",
|
|
||||||
|
|
||||||
/* The directory where the skeleton files are located. These files will be copied to the data
|
|
||||||
* directory of new users. Leave empty to not copy any skeleton files.
|
|
||||||
*/
|
|
||||||
// "skeletondirectory" => "",
|
|
||||||
|
|
||||||
/* Enable maintenance mode to disable ownCloud
|
|
||||||
If you want to prevent users to login to ownCloud before you start doing some maintenance work,
|
|
||||||
you need to set the value of the maintenance parameter to true.
|
|
||||||
Please keep in mind that users who are already logged-in are kicked out of ownCloud instantly.
|
|
||||||
*/
|
|
||||||
"maintenance" => false,
|
|
||||||
|
|
||||||
"apps_paths" => array(
|
|
||||||
|
|
||||||
/* Set an array of path for your apps directories
|
|
||||||
key 'path' is for the fs path and the key 'url' is for the http path to your
|
|
||||||
applications paths. 'writable' indicates whether the user can install apps in this folder.
|
|
||||||
You must have at least 1 app folder writable or you must set the parameter 'appstoreenabled' to false
|
|
||||||
*/
|
|
||||||
array(
|
|
||||||
'path'=> '${config.dataDir}/apps',
|
|
||||||
'url' => '/apps',
|
|
||||||
'writable' => true,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
'user_backends'=>array(
|
|
||||||
/*
|
|
||||||
array(
|
|
||||||
'class'=>'OC_User_IMAP',
|
|
||||||
'arguments'=>array('{imap.gmail.com:993/imap/ssl}INBOX')
|
|
||||||
)
|
|
||||||
*/
|
|
||||||
),
|
|
||||||
//links to custom clients
|
|
||||||
'customclient_desktop' => ''', //http://owncloud.org/sync-clients/
|
|
||||||
'customclient_android' => ''', //https://play.google.com/store/apps/details?id=com.owncloud.android
|
|
||||||
'customclient_ios' => ''', //https://itunes.apple.com/us/app/owncloud/id543672169?mt=8
|
|
||||||
|
|
||||||
// PREVIEW
|
|
||||||
'enable_previews' => true,
|
|
||||||
/* the max width of a generated preview, if value is null, there is no limit */
|
|
||||||
'preview_max_x' => null,
|
|
||||||
/* the max height of a generated preview, if value is null, there is no limit */
|
|
||||||
'preview_max_y' => null,
|
|
||||||
/* the max factor to scale a preview, default is set to 10 */
|
|
||||||
'preview_max_scale_factor' => 10,
|
|
||||||
/* custom path for libreoffice / openoffice binary */
|
|
||||||
'preview_libreoffice_path' => '${config.libreofficePath}',
|
|
||||||
/* cl parameters for libreoffice / openoffice */
|
|
||||||
'preview_office_cl_parameters' => ''',
|
|
||||||
|
|
||||||
/* whether avatars should be enabled */
|
|
||||||
'enable_avatars' => true,
|
|
||||||
|
|
||||||
// Extra SSL options to be used for configuration
|
|
||||||
'openssl' => array(
|
|
||||||
'config' => '/etc/ssl/openssl.cnf',
|
|
||||||
),
|
|
||||||
|
|
||||||
// default cipher used for file encryption, currently we support AES-128-CFB and AES-256-CFB
|
|
||||||
'cipher' => 'AES-256-CFB',
|
|
||||||
|
|
||||||
/* whether usage of the instance should be restricted to admin users only */
|
|
||||||
'singleuser' => false,
|
|
||||||
|
|
||||||
/* all css and js files will be served by the web server statically in one js file and ons css file*/
|
|
||||||
'asset-pipeline.enabled' => false,
|
|
||||||
|
|
||||||
/* where mount.json file should be stored, defaults to data/mount.json */
|
|
||||||
'mount_file' => ''',
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Location of the cache folder, defaults to "data/$user/cache" where "$user" is the current user.
|
|
||||||
*
|
|
||||||
* When specified, the format will change to "$cache_path/$user" where "$cache_path" is the configured
|
|
||||||
* cache directory and "$user" is the user.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
'cache_path' => ''',
|
|
||||||
|
|
||||||
/* EXPERIMENTAL: option whether to include external storage in quota calculation, defaults to false */
|
|
||||||
'quota_include_external_storage' => false,
|
|
||||||
|
|
||||||
/*
|
|
||||||
* specifies how often the filesystem is checked for changes made outside owncloud
|
|
||||||
* 0 -> never check the filesystem for outside changes, provides a performance increase when it's certain that no changes are made directly to the filesystem
|
|
||||||
* 1 -> check each file or folder at most once per request, recomended for general use if outside changes might happen
|
|
||||||
* 2 -> check every time the filesystem is used, causes a performance hit when using external storages, not recomended for regular use
|
|
||||||
*/
|
|
||||||
'filesystem_check_changes' => 1,
|
|
||||||
|
|
||||||
/* If true, prevent owncloud from changing the cache due to changes in the filesystem for all storage */
|
|
||||||
'filesystem_cache_readonly' => false,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* define default folder for shared files and folders
|
|
||||||
*/
|
|
||||||
'share_folder' => '/',
|
|
||||||
|
|
||||||
'version' => '${config.package.version}',
|
|
||||||
|
|
||||||
'openssl' => '${pkgs.openssl.bin}/bin/openssl'
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
'';
|
|
||||||
|
|
||||||
tzSetting = let tz = serverInfo.fullConfig.time.timeZone; in optionalString (!isNull tz) ''
|
|
||||||
/* timezone used while writing to the owncloud logfile (default: UTC) */
|
|
||||||
'logtimezone' => '${tz}',
|
|
||||||
'';
|
|
||||||
|
|
||||||
postgresql = serverInfo.fullConfig.services.postgresql.package;
|
|
||||||
|
|
||||||
setupDb = pkgs.writeScript "setup-owncloud-db" ''
|
|
||||||
#!${pkgs.runtimeShell}
|
|
||||||
PATH="${postgresql}/bin"
|
|
||||||
createuser --no-superuser --no-createdb --no-createrole "${config.dbUser}" || true
|
|
||||||
createdb "${config.dbName}" -O "${config.dbUser}" || true
|
|
||||||
psql -U postgres -d postgres -c "alter user ${config.dbUser} with password '${config.dbPassword}';" || true
|
|
||||||
|
|
||||||
QUERY="CREATE TABLE appconfig
|
|
||||||
( appid VARCHAR( 255 ) NOT NULL
|
|
||||||
, configkey VARCHAR( 255 ) NOT NULL
|
|
||||||
, configvalue VARCHAR( 255 ) NOT NULL
|
|
||||||
);
|
|
||||||
GRANT ALL ON appconfig TO ${config.dbUser};
|
|
||||||
ALTER TABLE appconfig OWNER TO ${config.dbUser};"
|
|
||||||
|
|
||||||
psql -h "/tmp" -U postgres -d ${config.dbName} -Atw -c "$QUERY" || true
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
|
||||||
|
|
||||||
rec {
|
|
||||||
|
|
||||||
extraConfig =
|
|
||||||
''
|
|
||||||
${if config.urlPrefix != "" then "Alias ${config.urlPrefix} ${config.package}" else ''
|
|
||||||
|
|
||||||
RewriteEngine On
|
|
||||||
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
|
|
||||||
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
|
|
||||||
''}
|
|
||||||
|
|
||||||
<Directory ${config.package}>
|
|
||||||
Include ${config.package}/.htaccess
|
|
||||||
</Directory>
|
|
||||||
'';
|
|
||||||
|
|
||||||
globalEnvVars = [
|
|
||||||
{ name = "OC_CONFIG_PATH"; value = "${config.dataDir}/config/"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
documentRoot = if config.urlPrefix == "" then config.package else null;
|
|
||||||
|
|
||||||
enablePHP = true;
|
|
||||||
|
|
||||||
options = {
|
|
||||||
|
|
||||||
package = mkOption {
|
|
||||||
type = types.package;
|
|
||||||
default = pkgs.owncloud70;
|
|
||||||
defaultText = "pkgs.owncloud70";
|
|
||||||
example = literalExample "pkgs.owncloud70";
|
|
||||||
description = ''
|
|
||||||
ownCloud package to use.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
urlPrefix = mkOption {
|
|
||||||
default = "";
|
|
||||||
example = "/owncloud";
|
|
||||||
description = ''
|
|
||||||
The URL prefix under which the owncloud service appears.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
id = mkOption {
|
|
||||||
default = "main";
|
|
||||||
description = ''
|
|
||||||
A unique identifier necessary to keep multiple owncloud server
|
|
||||||
instances on the same machine apart. This is used to
|
|
||||||
disambiguate the administrative scripts, which get names like
|
|
||||||
mediawiki-$id-change-password.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
adminUser = mkOption {
|
|
||||||
default = "owncloud";
|
|
||||||
description = "The admin user name for accessing owncloud.";
|
|
||||||
};
|
|
||||||
|
|
||||||
adminPassword = mkOption {
|
|
||||||
description = "The admin password for accessing owncloud.";
|
|
||||||
};
|
|
||||||
|
|
||||||
dbType = mkOption {
|
|
||||||
default = "pgsql";
|
|
||||||
description = "Type of database, in NixOS, for now, only pgsql.";
|
|
||||||
};
|
|
||||||
|
|
||||||
dbName = mkOption {
|
|
||||||
default = "owncloud";
|
|
||||||
description = "Name of the database that holds the owncloud data.";
|
|
||||||
};
|
|
||||||
|
|
||||||
dbServer = mkOption {
|
|
||||||
default = "localhost:5432";
|
|
||||||
description = ''
|
|
||||||
The location of the database server.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
dbUser = mkOption {
|
|
||||||
default = "owncloud";
|
|
||||||
description = "The user name for accessing the database.";
|
|
||||||
};
|
|
||||||
|
|
||||||
dbPassword = mkOption {
|
|
||||||
example = "foobar";
|
|
||||||
description = ''
|
|
||||||
The password of the database user. Warning: this is stored in
|
|
||||||
cleartext in the Nix store!
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
forceSSL = mkOption {
|
|
||||||
default = "false";
|
|
||||||
description = "Force use of HTTPS connection.";
|
|
||||||
};
|
|
||||||
|
|
||||||
adminAddr = mkOption {
|
|
||||||
default = serverInfo.serverConfig.adminAddr;
|
|
||||||
example = "admin@example.com";
|
|
||||||
description = ''
|
|
||||||
Emergency contact e-mail address. Defaults to the Apache
|
|
||||||
admin address.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
siteName = mkOption {
|
|
||||||
default = "owncloud";
|
|
||||||
example = "Foobar owncloud";
|
|
||||||
description = "Name of the owncloud";
|
|
||||||
};
|
|
||||||
|
|
||||||
trustedDomain = mkOption {
|
|
||||||
default = "";
|
|
||||||
description = "Trusted domain";
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultLang = mkOption {
|
|
||||||
default = "";
|
|
||||||
description = "Default language";
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultApp = mkOption {
|
|
||||||
default = "";
|
|
||||||
description = "Default application";
|
|
||||||
};
|
|
||||||
|
|
||||||
appStoreEnable = mkOption {
|
|
||||||
default = "true";
|
|
||||||
description = "Enable app store";
|
|
||||||
};
|
|
||||||
|
|
||||||
mailFrom = mkOption {
|
|
||||||
default = "no-reply";
|
|
||||||
description = "Mail from";
|
|
||||||
};
|
|
||||||
|
|
||||||
mailFromDomain = mkOption {
|
|
||||||
default = "example.xyz";
|
|
||||||
description = "Mail from domain";
|
|
||||||
};
|
|
||||||
|
|
||||||
SMTPMode = mkOption {
|
|
||||||
default = "smtp";
|
|
||||||
description = "Which mode to use for sending mail: sendmail, smtp, qmail or php.";
|
|
||||||
};
|
|
||||||
|
|
||||||
SMTPHost = mkOption {
|
|
||||||
default = "";
|
|
||||||
description = "SMTP host";
|
|
||||||
};
|
|
||||||
|
|
||||||
SMTPPort = mkOption {
|
|
||||||
default = "25";
|
|
||||||
description = "SMTP port";
|
|
||||||
};
|
|
||||||
|
|
||||||
SMTPTimeout = mkOption {
|
|
||||||
default = "10";
|
|
||||||
description = "SMTP mode";
|
|
||||||
};
|
|
||||||
|
|
||||||
SMTPSecure = mkOption {
|
|
||||||
default = "ssl";
|
|
||||||
description = "SMTP secure";
|
|
||||||
};
|
|
||||||
|
|
||||||
SMTPAuth = mkOption {
|
|
||||||
default = "true";
|
|
||||||
description = "SMTP auth";
|
|
||||||
};
|
|
||||||
|
|
||||||
SMTPAuthType = mkOption {
|
|
||||||
default = "LOGIN";
|
|
||||||
description = "SMTP auth type";
|
|
||||||
};
|
|
||||||
|
|
||||||
SMTPUser = mkOption {
|
|
||||||
default = "";
|
|
||||||
description = "SMTP user";
|
|
||||||
};
|
|
||||||
|
|
||||||
SMTPPass = mkOption {
|
|
||||||
default = "";
|
|
||||||
description = "SMTP pass";
|
|
||||||
};
|
|
||||||
|
|
||||||
dataDir = mkOption {
|
|
||||||
default = "/var/lib/owncloud";
|
|
||||||
description = "Data dir";
|
|
||||||
};
|
|
||||||
|
|
||||||
libreofficePath = mkOption {
|
|
||||||
default = "/usr/bin/libreoffice";
|
|
||||||
description = "Path for LibreOffice/OpenOffice binary.";
|
|
||||||
};
|
|
||||||
|
|
||||||
overwriteHost = mkOption {
|
|
||||||
default = "";
|
|
||||||
description = "The automatic hostname detection of ownCloud can fail in
|
|
||||||
certain reverse proxy and CLI/cron situations. This option allows to
|
|
||||||
manually override the automatic detection. You can also add a port.";
|
|
||||||
};
|
|
||||||
|
|
||||||
overwriteProtocol = mkOption {
|
|
||||||
default = "";
|
|
||||||
description = "The automatic protocol detection of ownCloud can fail in
|
|
||||||
certain reverse proxy and CLI/cron situations. This option allows to
|
|
||||||
manually override the protocol detection.";
|
|
||||||
};
|
|
||||||
|
|
||||||
overwriteWebRoot = mkOption {
|
|
||||||
default = "";
|
|
||||||
description = "The automatic webroot detection of ownCloud can fail in
|
|
||||||
certain reverse proxy and CLI/cron situations. This option allows to
|
|
||||||
manually override the automatic detection.";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
startupScript = pkgs.writeScript "owncloud_startup.sh" ''
|
|
||||||
|
|
||||||
if [ ! -d ${config.dataDir}/config ]; then
|
|
||||||
mkdir -p ${config.dataDir}/config
|
|
||||||
cp ${owncloudConfig} ${config.dataDir}/config/config.php
|
|
||||||
mkdir -p ${config.dataDir}/storage
|
|
||||||
mkdir -p ${config.dataDir}/apps
|
|
||||||
cp -r ${config.package}/apps/* ${config.dataDir}/apps/
|
|
||||||
chmod -R ug+rw ${config.dataDir}
|
|
||||||
chmod -R o-rwx ${config.dataDir}
|
|
||||||
chown -R wwwrun:wwwrun ${config.dataDir}
|
|
||||||
|
|
||||||
${pkgs.sudo}/bin/sudo -u postgres ${setupDb}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -e ${config.package}/config/ca-bundle.crt ]; then
|
|
||||||
cp -f ${config.package}/config/ca-bundle.crt ${config.dataDir}/config/
|
|
||||||
fi
|
|
||||||
|
|
||||||
${php}/bin/php ${config.package}/occ upgrade >> ${config.dataDir}/upgrade.log || true
|
|
||||||
|
|
||||||
chown wwwrun:wwwrun ${config.dataDir}/owncloud.log || true
|
|
||||||
|
|
||||||
QUERY="INSERT INTO groups (gid) values('admin');
|
|
||||||
INSERT INTO users (uid,password)
|
|
||||||
values('${config.adminUser}','${builtins.hashString "sha1" config.adminPassword}');
|
|
||||||
INSERT INTO group_user (gid,uid)
|
|
||||||
values('admin','${config.adminUser}');"
|
|
||||||
${pkgs.sudo}/bin/sudo -u postgres ${postgresql}/bin/psql -h "/tmp" -U postgres -d ${config.dbName} -Atw -c "$QUERY" || true
|
|
||||||
'';
|
|
||||||
}
|
|
@ -69,7 +69,7 @@ with lib;
|
|||||||
acmeRoot = mkOption {
|
acmeRoot = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "/var/lib/acme/acme-challenge";
|
default = "/var/lib/acme/acme-challenge";
|
||||||
description = "Directory to store certificates and keys managed by the ACME service.";
|
description = "Directory for the acme challenge which is PUBLIC, don't put certs or keys in here";
|
||||||
};
|
};
|
||||||
|
|
||||||
acmeFallbackHost = mkOption {
|
acmeFallbackHost = mkOption {
|
||||||
|
@ -136,19 +136,17 @@ in {
|
|||||||
|
|
||||||
services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ];
|
services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ];
|
||||||
|
|
||||||
services.xserver.displayManager.sessionCommands = ''
|
environment.extraInit = ''
|
||||||
if test "$XDG_CURRENT_DESKTOP" = "GNOME"; then
|
${concatMapStrings (p: ''
|
||||||
${concatMapStrings (p: ''
|
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
|
||||||
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
|
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
|
||||||
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d "${p}/lib/girepository-1.0" ]; then
|
if [ -d "${p}/lib/girepository-1.0" ]; then
|
||||||
export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
|
export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
|
||||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
|
||||||
fi
|
fi
|
||||||
'') cfg.sessionPath}
|
'') cfg.sessionPath}
|
||||||
fi
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
environment.variables.GNOME_SESSION_DEBUG = optionalString cfg.debug "1";
|
environment.variables.GNOME_SESSION_DEBUG = optionalString cfg.debug "1";
|
||||||
|
@ -78,8 +78,7 @@ let
|
|||||||
# This is required by user units using the session bus.
|
# This is required by user units using the session bus.
|
||||||
${config.systemd.package}/bin/systemctl --user import-environment DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS
|
${config.systemd.package}/bin/systemctl --user import-environment DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS
|
||||||
|
|
||||||
# Load X defaults.
|
# Load X defaults. This should probably be safe on wayland too.
|
||||||
# FIXME: Check XDG_SESSION_TYPE against x11
|
|
||||||
${xorg.xrdb}/bin/xrdb -merge ${xresourcesXft}
|
${xorg.xrdb}/bin/xrdb -merge ${xresourcesXft}
|
||||||
if test -e ~/.Xresources; then
|
if test -e ~/.Xresources; then
|
||||||
${xorg.xrdb}/bin/xrdb -merge ~/.Xresources
|
${xorg.xrdb}/bin/xrdb -merge ~/.Xresources
|
||||||
@ -194,6 +193,11 @@ let
|
|||||||
${concatMapStrings (pkg: ''
|
${concatMapStrings (pkg: ''
|
||||||
${xorg.lndir}/bin/lndir ${pkg}/share/xsessions $out/share/xsessions
|
${xorg.lndir}/bin/lndir ${pkg}/share/xsessions $out/share/xsessions
|
||||||
'') cfg.displayManager.extraSessionFilePackages}
|
'') cfg.displayManager.extraSessionFilePackages}
|
||||||
|
|
||||||
|
mkdir -p "$out/share/wayland-sessions"
|
||||||
|
${concatMapStrings (pkg: ''
|
||||||
|
${xorg.lndir}/bin/lndir ${pkg}/share/wayland-sessions $out/share/wayland-sessions
|
||||||
|
'') cfg.displayManager.extraSessionFilePackages}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
in
|
in
|
||||||
@ -240,7 +244,10 @@ in
|
|||||||
''
|
''
|
||||||
xmessage "Hello World!" &
|
xmessage "Hello World!" &
|
||||||
'';
|
'';
|
||||||
description = "Shell commands executed just before the window or desktop manager is started.";
|
description = ''
|
||||||
|
Shell commands executed just before the window or desktop manager is
|
||||||
|
started. These commands are not currently sourced for Wayland sessions.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
hiddenUsers = mkOption {
|
hiddenUsers = mkOption {
|
||||||
|
@ -196,7 +196,7 @@ in
|
|||||||
{ assertion = cfg.autoLogin.enable -> dmDefault != "none" || wmDefault != "none";
|
{ assertion = cfg.autoLogin.enable -> dmDefault != "none" || wmDefault != "none";
|
||||||
message = ''
|
message = ''
|
||||||
LightDM auto-login requires that services.xserver.desktopManager.default and
|
LightDM auto-login requires that services.xserver.desktopManager.default and
|
||||||
services.xserver.windowMananger.default are set to valid values. The current
|
services.xserver.windowManager.default are set to valid values. The current
|
||||||
default session: ${defaultSessionName} is not valid.
|
default session: ${defaultSessionName} is not valid.
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,7 @@ let
|
|||||||
|
|
||||||
[Wayland]
|
[Wayland]
|
||||||
EnableHidpi=${if cfg.enableHidpi then "true" else "false"}
|
EnableHidpi=${if cfg.enableHidpi then "true" else "false"}
|
||||||
|
SessionDir=${dmcfg.session.desktops}/share/wayland-sessions
|
||||||
|
|
||||||
${optionalString cfg.autoLogin.enable ''
|
${optionalString cfg.autoLogin.enable ''
|
||||||
[Autologin]
|
[Autologin]
|
||||||
@ -202,7 +203,7 @@ in
|
|||||||
{ assertion = cfg.autoLogin.enable -> elem defaultSessionName dmcfg.session.names;
|
{ assertion = cfg.autoLogin.enable -> elem defaultSessionName dmcfg.session.names;
|
||||||
message = ''
|
message = ''
|
||||||
SDDM auto-login requires that services.xserver.desktopManager.default and
|
SDDM auto-login requires that services.xserver.desktopManager.default and
|
||||||
services.xserver.windowMananger.default are set to valid values. The current
|
services.xserver.windowManager.default are set to valid values. The current
|
||||||
default session: ${defaultSessionName} is not valid.
|
default session: ${defaultSessionName} is not valid.
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,13 @@ let
|
|||||||
checkExec = checkUnitConfig "Exec" [
|
checkExec = checkUnitConfig "Exec" [
|
||||||
(assertOnlyFields [
|
(assertOnlyFields [
|
||||||
"Boot" "ProcessTwo" "Parameters" "Environment" "User" "WorkingDirectory"
|
"Boot" "ProcessTwo" "Parameters" "Environment" "User" "WorkingDirectory"
|
||||||
"Capability" "DropCapability" "KillSignal" "Personality" "MachineId"
|
"PivotRoot" "Capability" "DropCapability" "NoNewPrivileges" "KillSignal"
|
||||||
"PrivateUsers" "NotifyReady"
|
"Personality" "MachineId" "PrivateUsers" "NotifyReady" "SystemCallFilter"
|
||||||
|
"LimitCPU" "LimitFSIZE" "LimitDATA" "LimitSTACK" "LimitCORE" "LimitRSS"
|
||||||
|
"LimitNOFILE" "LimitAS" "LimitNPROC" "LimitMEMLOCK" "LimitLOCKS"
|
||||||
|
"LimitSIGPENDING" "LimitMSGQUEUE" "LimitNICE" "LimitRTPRIO" "LimitRTTIME"
|
||||||
|
"OOMScoreAdjust" "CPUAffinity" "Hostname" "ResolvConf" "Timezone"
|
||||||
|
"LinkJournal"
|
||||||
])
|
])
|
||||||
(assertValueOneOf "Boot" boolValues)
|
(assertValueOneOf "Boot" boolValues)
|
||||||
(assertValueOneOf "ProcessTwo" boolValues)
|
(assertValueOneOf "ProcessTwo" boolValues)
|
||||||
@ -20,8 +25,8 @@ let
|
|||||||
|
|
||||||
checkFiles = checkUnitConfig "Files" [
|
checkFiles = checkUnitConfig "Files" [
|
||||||
(assertOnlyFields [
|
(assertOnlyFields [
|
||||||
"ReadOnly" "Volatile" "Bind" "BindReadOnly" "TemporaryFileSystems"
|
"ReadOnly" "Volatile" "Bind" "BindReadOnly" "TemporaryFileSystem"
|
||||||
"PrivateUsersChown"
|
"Overlay" "OverlayReadOnly" "PrivateUsersChown"
|
||||||
])
|
])
|
||||||
(assertValueOneOf "ReadOnly" boolValues)
|
(assertValueOneOf "ReadOnly" boolValues)
|
||||||
(assertValueOneOf "Volatile" (boolValues ++ [ "state" ]))
|
(assertValueOneOf "Volatile" (boolValues ++ [ "state" ]))
|
||||||
|
@ -601,8 +601,27 @@ in
|
|||||||
type = types.lines;
|
type = types.lines;
|
||||||
example = "IdleAction=lock";
|
example = "IdleAction=lock";
|
||||||
description = ''
|
description = ''
|
||||||
Extra config options for systemd-logind. See man logind.conf for
|
Extra config options for systemd-logind. See
|
||||||
available options.
|
<link xlink:href="https://www.freedesktop.org/software/systemd/man/logind.conf.html">
|
||||||
|
logind.conf(5)</link> for available options.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.logind.killUserProcesses = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''
|
||||||
|
Specifies whether the processes of a user should be killed
|
||||||
|
when the user logs out. If true, the scope unit corresponding
|
||||||
|
to the session and all processes inside that scope will be
|
||||||
|
terminated. If false, the scope is "abandoned" (see
|
||||||
|
<link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd.scope.html#">
|
||||||
|
systemd.scope(5)</link>), and processes are not killed.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
See <link xlink:href="https://www.freedesktop.org/software/systemd/man/logind.conf.html#KillUserProcesses=">logind.conf(5)</link>
|
||||||
|
for more details.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -771,7 +790,7 @@ in
|
|||||||
|
|
||||||
"systemd/logind.conf".text = ''
|
"systemd/logind.conf".text = ''
|
||||||
[Login]
|
[Login]
|
||||||
KillUserProcesses=no
|
KillUserProcesses=${if config.services.logind.killUserProcesses then "yes" else "no"}
|
||||||
HandleLidSwitch=${config.services.logind.lidSwitch}
|
HandleLidSwitch=${config.services.logind.lidSwitch}
|
||||||
HandleLidSwitchDocked=${config.services.logind.lidSwitchDocked}
|
HandleLidSwitchDocked=${config.services.logind.lidSwitchDocked}
|
||||||
${config.services.logind.extraConfig}
|
${config.services.logind.extraConfig}
|
||||||
|
@ -106,7 +106,7 @@ in
|
|||||||
installer = handleTest ./installer.nix {};
|
installer = handleTest ./installer.nix {};
|
||||||
ipv6 = handleTest ./ipv6.nix {};
|
ipv6 = handleTest ./ipv6.nix {};
|
||||||
jenkins = handleTest ./jenkins.nix {};
|
jenkins = handleTest ./jenkins.nix {};
|
||||||
kafka = handleTest ./kafka.nix {};
|
#kafka = handleTest ./kafka.nix {}; # broken since openjdk: 8u181 -> 8u192
|
||||||
kernel-latest = handleTest ./kernel-latest.nix {};
|
kernel-latest = handleTest ./kernel-latest.nix {};
|
||||||
kernel-lts = handleTest ./kernel-lts.nix {};
|
kernel-lts = handleTest ./kernel-lts.nix {};
|
||||||
keymap = handleTest ./keymap.nix {};
|
keymap = handleTest ./keymap.nix {};
|
||||||
@ -156,7 +156,6 @@ in
|
|||||||
openssh = handleTest ./openssh.nix {};
|
openssh = handleTest ./openssh.nix {};
|
||||||
osquery = handleTest ./osquery.nix {};
|
osquery = handleTest ./osquery.nix {};
|
||||||
ostree = handleTest ./ostree.nix {};
|
ostree = handleTest ./ostree.nix {};
|
||||||
owncloud = handleTest ./owncloud.nix {};
|
|
||||||
pam-oath-login = handleTest ./pam-oath-login.nix {};
|
pam-oath-login = handleTest ./pam-oath-login.nix {};
|
||||||
peerflix = handleTest ./peerflix.nix {};
|
peerflix = handleTest ./peerflix.nix {};
|
||||||
pgjwt = handleTest ./pgjwt.nix {};
|
pgjwt = handleTest ./pgjwt.nix {};
|
||||||
|
@ -130,6 +130,9 @@ in {
|
|||||||
# Make sure keepFile has the correct content
|
# Make sure keepFile has the correct content
|
||||||
$client->succeed("$borg extract '${localRepo}::${archiveName}'");
|
$client->succeed("$borg extract '${localRepo}::${archiveName}'");
|
||||||
$client->succeed('c=$(cat ${dataDir}/${keepFile}) && [[ "$c" == "${keepFileData}" ]]');
|
$client->succeed('c=$(cat ${dataDir}/${keepFile}) && [[ "$c" == "${keepFileData}" ]]');
|
||||||
|
# Make sure the same is true when using `borg mount`
|
||||||
|
$client->succeed("mkdir -p /mnt/borg && $borg mount '${localRepo}::${archiveName}' /mnt/borg");
|
||||||
|
$client->succeed('c=$(cat /mnt/borg/${dataDir}/${keepFile}) && [[ "$c" == "${keepFileData}" ]]');
|
||||||
};
|
};
|
||||||
|
|
||||||
subtest "remote", sub {
|
subtest "remote", sub {
|
||||||
|
@ -8,7 +8,7 @@ import ./make-test.nix ({ pkgs, lib, ...} : with lib; {
|
|||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
gitlab = { ... }: {
|
gitlab = { ... }: {
|
||||||
virtualisation.memorySize = 2047;
|
virtualisation.memorySize = if pkgs.stdenv.is64bit then 4096 else 2047;
|
||||||
systemd.services.gitlab.serviceConfig.Restart = mkForce "no";
|
systemd.services.gitlab.serviceConfig.Restart = mkForce "no";
|
||||||
systemd.services.gitlab-workhorse.serviceConfig.Restart = mkForce "no";
|
systemd.services.gitlab-workhorse.serviceConfig.Restart = mkForce "no";
|
||||||
systemd.services.gitaly.serviceConfig.Restart = mkForce "no";
|
systemd.services.gitaly.serviceConfig.Restart = mkForce "no";
|
||||||
|
@ -23,11 +23,21 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
virtualisation.memorySize = 1024;
|
virtualisation.memorySize = 1024;
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript =
|
testScript = let
|
||||||
''
|
# Keep line widths somewhat managable
|
||||||
# wait for gdm to start and bring up X
|
bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus";
|
||||||
|
gdbus = "${bus} gdbus";
|
||||||
|
# Call javascript in gnome shell, returns a tuple (success, output), where
|
||||||
|
# `success` is true if the dbus call was successful and output is what the
|
||||||
|
# javascript evaluates to.
|
||||||
|
eval = "call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval";
|
||||||
|
# False when startup is done
|
||||||
|
startingUp = "${gdbus} ${eval} Main.layoutManager._startingUp";
|
||||||
|
# Hopefully gnome-terminal's wm class
|
||||||
|
wmClass = "${gdbus} ${eval} global.display.focus_window.wm_class";
|
||||||
|
in ''
|
||||||
|
# wait for gdm to start
|
||||||
$machine->waitForUnit("display-manager.service");
|
$machine->waitForUnit("display-manager.service");
|
||||||
$machine->waitForX;
|
|
||||||
|
|
||||||
# wait for alice to be logged in
|
# wait for alice to be logged in
|
||||||
$machine->waitForUnit("default.target","alice");
|
$machine->waitForUnit("default.target","alice");
|
||||||
@ -35,10 +45,16 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
# Check that logging in has given the user ownership of devices.
|
# Check that logging in has given the user ownership of devices.
|
||||||
$machine->succeed("getfacl /dev/snd/timer | grep -q alice");
|
$machine->succeed("getfacl /dev/snd/timer | grep -q alice");
|
||||||
|
|
||||||
# open a terminal and check it's there
|
# Wait for the wayland server
|
||||||
$machine->succeed("su - alice -c 'DISPLAY=:0.0 XAUTHORITY=/run/user/\$UID/gdm/Xauthority gnome-terminal'");
|
$machine->waitForFile("/run/user/1000/wayland-0");
|
||||||
$machine->succeed("xauth merge /run/user/1000/gdm/Xauthority");
|
|
||||||
$machine->waitForWindow(qr/Terminal/);
|
# Wait for gnome shell, correct output should be "(true, 'false')"
|
||||||
|
$machine->waitUntilSucceeds("su - alice -c '${startingUp} | grep -q true,..false'");
|
||||||
|
|
||||||
|
# open a terminal
|
||||||
|
$machine->succeed("su - alice -c '${bus} gnome-terminal'");
|
||||||
|
# and check it's there
|
||||||
|
$machine->waitUntilSucceeds("su - alice -c '${wmClass} | grep -q gnome-terminal-server'");
|
||||||
|
|
||||||
# wait to get a nice screenshot
|
# wait to get a nice screenshot
|
||||||
$machine->sleep(20);
|
$machine->sleep(20);
|
||||||
|
@ -16,7 +16,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
services.xserver.displayManager.lightdm.autoLogin.enable = true;
|
services.xserver.displayManager.lightdm.autoLogin.enable = true;
|
||||||
services.xserver.displayManager.lightdm.autoLogin.user = "alice";
|
services.xserver.displayManager.lightdm.autoLogin.user = "alice";
|
||||||
services.xserver.desktopManager.gnome3.enable = true;
|
services.xserver.desktopManager.gnome3.enable = true;
|
||||||
services.xserver.desktopManager.default = "gnome";
|
services.xserver.desktopManager.default = "gnome-xorg";
|
||||||
|
|
||||||
virtualisation.memorySize = 1024;
|
virtualisation.memorySize = 1024;
|
||||||
};
|
};
|
||||||
@ -33,7 +33,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
|
|
||||||
$machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'");
|
$machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'");
|
||||||
$machine->succeed("xauth merge ~alice/.Xauthority");
|
$machine->succeed("xauth merge ~alice/.Xauthority");
|
||||||
$machine->waitForWindow(qr/Terminal/);
|
$machine->waitForWindow(qr/alice.*machine/);
|
||||||
$machine->succeed("timeout 900 bash -c 'while read msg; do if [[ \$msg =~ \"GNOME Shell started\" ]]; then break; fi; done < <(journalctl -f)'");
|
$machine->succeed("timeout 900 bash -c 'while read msg; do if [[ \$msg =~ \"GNOME Shell started\" ]]; then break; fi; done < <(journalctl -f)'");
|
||||||
$machine->sleep(10);
|
$machine->sleep(10);
|
||||||
$machine->screenshot("screen");
|
$machine->screenshot("screen");
|
||||||
|
@ -28,7 +28,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
$machine->waitForFile("/home/alice/.config/i3/config");
|
$machine->waitForFile("/home/alice/.config/i3/config");
|
||||||
$machine->sleep(2);
|
$machine->sleep(2);
|
||||||
$machine->sendKeys("alt-ret");
|
$machine->sendKeys("alt-ret");
|
||||||
$machine->waitForWindow(qr/machine.*alice/);
|
$machine->waitForWindow(qr/alice.*machine/);
|
||||||
$machine->sleep(2);
|
$machine->sleep(2);
|
||||||
$machine->screenshot("terminal");
|
$machine->screenshot("terminal");
|
||||||
'';
|
'';
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{ system ? builtins.currentSystem,
|
{ system ? builtins.currentSystem,
|
||||||
config ? {},
|
config ? {},
|
||||||
pkgs ? import ../.. { inherit system config; }
|
pkgs ? import ../../.. { inherit system config; }
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with import ../../lib/testing.nix { inherit system pkgs; };
|
with import ../../lib/testing.nix { inherit system pkgs; };
|
||||||
|
@ -3,7 +3,6 @@ with pkgs.lib;
|
|||||||
let
|
let
|
||||||
base = {
|
base = {
|
||||||
inherit roles;
|
inherit roles;
|
||||||
featureGates = ["AllAlpha"];
|
|
||||||
flannel.enable = true;
|
flannel.enable = true;
|
||||||
addons.dashboard.enable = true;
|
addons.dashboard.enable = true;
|
||||||
|
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
import ./make-test.nix ({ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "owncloud";
|
|
||||||
nodes =
|
|
||||||
{ web =
|
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
services.postgresql.enable = true;
|
|
||||||
services.httpd = {
|
|
||||||
enable = true;
|
|
||||||
logPerVirtualHost = true;
|
|
||||||
adminAddr = "example@example.com";
|
|
||||||
virtualHosts = [
|
|
||||||
{
|
|
||||||
hostName = "owncloud";
|
|
||||||
extraSubservices =
|
|
||||||
[
|
|
||||||
{
|
|
||||||
serviceType = "owncloud";
|
|
||||||
adminPassword = "secret";
|
|
||||||
dbPassword = "secret";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
testScript = ''
|
|
||||||
startAll;
|
|
||||||
|
|
||||||
$web->waitForUnit("postgresql");
|
|
||||||
$web->waitForUnit("httpd");
|
|
||||||
|
|
||||||
$web->succeed("curl -L 127.0.0.1:80");
|
|
||||||
'';
|
|
||||||
})
|
|
@ -63,6 +63,12 @@ in {
|
|||||||
ensurePermissions = { "slurm_acct_db.*" = "ALL PRIVILEGES"; };
|
ensurePermissions = { "slurm_acct_db.*" = "ALL PRIVILEGES"; };
|
||||||
name = "slurm";
|
name = "slurm";
|
||||||
}];
|
}];
|
||||||
|
extraOptions = ''
|
||||||
|
# recommendations from: https://slurm.schedmd.com/accounting.html#mysql-configuration
|
||||||
|
innodb_buffer_pool_size=1024M
|
||||||
|
innodb_log_file_size=64M
|
||||||
|
innodb_lock_wait_timeout=900
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -95,6 +101,7 @@ in {
|
|||||||
subtest "can_start_slurmdbd", sub {
|
subtest "can_start_slurmdbd", sub {
|
||||||
$dbd->succeed("systemctl restart slurmdbd");
|
$dbd->succeed("systemctl restart slurmdbd");
|
||||||
$dbd->waitForUnit("slurmdbd.service");
|
$dbd->waitForUnit("slurmdbd.service");
|
||||||
|
$dbd->waitForOpenPort(6819);
|
||||||
};
|
};
|
||||||
|
|
||||||
# there needs to be an entry for the current
|
# there needs to be an entry for the current
|
||||||
|
@ -56,6 +56,11 @@ import ./make-test.nix {
|
|||||||
$machine->succeed('test -z $(ls -1 /var/log/journal)');
|
$machine->succeed('test -z $(ls -1 /var/log/journal)');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Regression test for https://github.com/NixOS/nixpkgs/issues/50273
|
||||||
|
subtest "DynamicUser actually allocates a user", sub {
|
||||||
|
$machine->succeed('systemd-run --pty --property=Type=oneshot --property=DynamicUser=yes --property=User=iamatest whoami | grep iamatest');
|
||||||
|
};
|
||||||
|
|
||||||
# Regression test for https://github.com/NixOS/nixpkgs/issues/35268
|
# Regression test for https://github.com/NixOS/nixpkgs/issues/35268
|
||||||
subtest "file system with x-initrd.mount is not unmounted", sub {
|
subtest "file system with x-initrd.mount is not unmounted", sub {
|
||||||
$machine->shutdown;
|
$machine->shutdown;
|
||||||
|
@ -22,7 +22,7 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
$machine->waitUntilSucceeds("xmonad --restart");
|
$machine->waitUntilSucceeds("xmonad --restart");
|
||||||
$machine->sleep(3);
|
$machine->sleep(3);
|
||||||
$machine->sendKeys("alt-shift-ret");
|
$machine->sendKeys("alt-shift-ret");
|
||||||
$machine->waitForWindow(qr/machine.*alice/);
|
$machine->waitForWindow(qr/alice.*machine/);
|
||||||
$machine->sleep(1);
|
$machine->sleep(1);
|
||||||
$machine->screenshot("terminal");
|
$machine->screenshot("terminal");
|
||||||
'';
|
'';
|
||||||
|
@ -45,7 +45,7 @@ rec {
|
|||||||
dcrd = callPackage ./dcrd.nix { };
|
dcrd = callPackage ./dcrd.nix { };
|
||||||
dcrwallet = callPackage ./dcrwallet.nix { };
|
dcrwallet = callPackage ./dcrwallet.nix { };
|
||||||
|
|
||||||
dero = callPackage ./dero.nix { };
|
dero = callPackage ./dero.nix { boost = boost165; };
|
||||||
|
|
||||||
dogecoin = callPackage ./dogecoin.nix { boost = boost165; withGui = true; };
|
dogecoin = callPackage ./dogecoin.nix { boost = boost165; withGui = true; };
|
||||||
dogecoind = callPackage ./dogecoin.nix { boost = boost165; withGui = false; };
|
dogecoind = callPackage ./dogecoin.nix { boost = boost165; withGui = false; };
|
||||||
@ -65,7 +65,7 @@ rec {
|
|||||||
};
|
};
|
||||||
litecoind = litecoin.override { withGui = false; };
|
litecoind = litecoin.override { withGui = false; };
|
||||||
|
|
||||||
masari = callPackage ./masari.nix { };
|
masari = callPackage ./masari.nix { boost = boost165; };
|
||||||
|
|
||||||
memorycoin = callPackage ./memorycoin.nix { boost = boost165; withGui = true; };
|
memorycoin = callPackage ./memorycoin.nix { boost = boost165; withGui = true; };
|
||||||
memorycoind = callPackage ./memorycoin.nix { boost = boost165; withGui = false; };
|
memorycoind = callPackage ./memorycoin.nix { boost = boost165; withGui = false; };
|
||||||
@ -79,7 +79,7 @@ rec {
|
|||||||
|
|
||||||
stellar-core = callPackage ./stellar-core.nix { };
|
stellar-core = callPackage ./stellar-core.nix { };
|
||||||
|
|
||||||
sumokoin = callPackage ./sumokoin.nix { };
|
sumokoin = callPackage ./sumokoin.nix { boost = boost165; };
|
||||||
|
|
||||||
wownero = callPackage ./wownero.nix {
|
wownero = callPackage ./wownero.nix {
|
||||||
inherit (darwin.apple_sdk.frameworks) CoreData IOKit PCSC;
|
inherit (darwin.apple_sdk.frameworks) CoreData IOKit PCSC;
|
||||||
@ -94,5 +94,7 @@ rec {
|
|||||||
parity-beta = callPackage ./parity/beta.nix { };
|
parity-beta = callPackage ./parity/beta.nix { };
|
||||||
parity-ui = callPackage ./parity-ui { };
|
parity-ui = callPackage ./parity-ui { };
|
||||||
|
|
||||||
|
polkadot = callPackage ./polkadot { };
|
||||||
|
|
||||||
particl-core = callPackage ./particl/particl-core.nix { miniupnpc = miniupnpc_2; };
|
particl-core = callPackage ./particl/particl-core.nix { miniupnpc = miniupnpc_2; };
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
buildGoPackage rec {
|
buildGoPackage rec {
|
||||||
name = "go-ethereum-${version}";
|
name = "go-ethereum-${version}";
|
||||||
version = "1.8.19";
|
version = "1.8.20";
|
||||||
goPackagePath = "github.com/ethereum/go-ethereum";
|
goPackagePath = "github.com/ethereum/go-ethereum";
|
||||||
|
|
||||||
# Fix for usb-related segmentation faults on darwin
|
# Fix for usb-related segmentation faults on darwin
|
||||||
@ -16,7 +16,7 @@ buildGoPackage rec {
|
|||||||
owner = "ethereum";
|
owner = "ethereum";
|
||||||
repo = "go-ethereum";
|
repo = "go-ethereum";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0shp8ak44v52ynlyawfh53wczd3zch7ydf6bmbrhm5rpbribirwr";
|
sha256 = "0m2q1nz6f39pyr2rk6vflkwi4ykganzwr7wndpwr9rliw0x8jgi0";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{ stdenv, fetchgit
|
{ stdenv, fetchgit
|
||||||
, cmake, pkgconfig, git
|
, cmake, pkgconfig, git
|
||||||
, boost, miniupnpc, openssl, unbound, cppzmq
|
, boost, miniupnpc, openssl, unbound, cppzmq
|
||||||
, zeromq, pcsclite, readline, libsodium
|
, zeromq, pcsclite, readline, libsodium, hidapi
|
||||||
, CoreData, IOKit, PCSC
|
, CoreData, IOKit, PCSC
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
|
|||||||
buildInputs = [
|
buildInputs = [
|
||||||
boost miniupnpc openssl unbound
|
boost miniupnpc openssl unbound
|
||||||
cppzmq zeromq pcsclite readline
|
cppzmq zeromq pcsclite readline
|
||||||
libsodium
|
libsodium hidapi
|
||||||
] ++ optionals stdenv.isDarwin [ IOKit CoreData PCSC ];
|
] ++ optionals stdenv.isDarwin [ IOKit CoreData PCSC ];
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
let
|
let
|
||||||
version = "2.2.1";
|
version = "2.2.5";
|
||||||
sha256 = "1m65pks2jk83j82f1i901p03qb54xhcp6gfjngcm975187zzvmcq";
|
sha256 = "0q9vgwc0jlja73r4na7yil624iagq1607ac47wh8a7xgfjmjjai1";
|
||||||
cargoSha256 = "1mf1jgphwvhlqkvzrgbhnqfyqgf3ljc1l9zckyilzmw5k4lf4g1w";
|
cargoSha256 = "0ibdmyh1jvfq51vhwn4riyhilqwhf71hjd4vyj525smn95p75b14";
|
||||||
patches = [
|
|
||||||
./patches/vendored-sources-2.2.patch
|
|
||||||
];
|
|
||||||
in
|
in
|
||||||
import ./parity.nix { inherit version sha256 cargoSha256 patches; }
|
import ./parity.nix { inherit version sha256 cargoSha256; }
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
let
|
let
|
||||||
version = "2.1.6";
|
version = "2.1.10";
|
||||||
sha256 = "0njkypszi0fjh9y0zfgxbycs4c1wpylk7wx6xn1pp6gqvvri6hav";
|
sha256 = "1l4yl8i24q8v4hzljzai37f587x8m3cz3byzifhvq3bjky7p8h80";
|
||||||
cargoSha256 = "116sj7pi50k5gb1i618g4pgckqaf8kb13jh2a3shj2kwywzzcgjs";
|
cargoSha256 = "04pni9cmz8nhlqznwafz9d81006808kh24aqnb8rjdcr84d11zis";
|
||||||
patches = [ ./patches/vendored-sources-2.1.patch ];
|
|
||||||
in
|
in
|
||||||
import ./parity.nix { inherit version sha256 cargoSha256 patches; }
|
import ./parity.nix { inherit version sha256 cargoSha256; }
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{ version
|
{ version
|
||||||
, sha256
|
, sha256
|
||||||
, cargoSha256
|
, cargoSha256
|
||||||
, patches
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{ stdenv
|
{ stdenv
|
||||||
@ -16,7 +15,7 @@
|
|||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
name = "parity-${version}";
|
name = "parity-${version}";
|
||||||
inherit cargoSha256 patches;
|
inherit cargoSha256;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "paritytech";
|
owner = "paritytech";
|
||||||
@ -30,7 +29,7 @@ rustPlatform.buildRustPackage rec {
|
|||||||
systemd.lib systemd.dev openssl openssl.dev
|
systemd.lib systemd.dev openssl openssl.dev
|
||||||
];
|
];
|
||||||
|
|
||||||
# Some checks failed
|
# test result: FAILED. 80 passed; 12 failed; 0 ignored; 0 measured; 0 filtered out
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -1,83 +0,0 @@
|
|||||||
diff --git a/.cargo/config b/.cargo/config
|
|
||||||
index 72652ad2f..3c0eca89a 100644
|
|
||||||
--- a/.cargo/config
|
|
||||||
+++ b/.cargo/config
|
|
||||||
@@ -1,3 +1,78 @@
|
|
||||||
[target.x86_64-pc-windows-msvc]
|
|
||||||
# Link the C runtime statically ; https://github.com/paritytech/parity/issues/6643
|
|
||||||
rustflags = ["-Ctarget-feature=+crt-static"]
|
|
||||||
+
|
|
||||||
+[source."https://github.com/alexcrichton/mio-named-pipes"]
|
|
||||||
+git = "https://github.com/alexcrichton/mio-named-pipes"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/nikvolf/parity-tokio-ipc"]
|
|
||||||
+git = "https://github.com/nikvolf/parity-tokio-ipc"
|
|
||||||
+rev = "c0f80b40399d7f08ef1e6869569640eb28645f56"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/nikvolf/tokio-named-pipes"]
|
|
||||||
+git = "https://github.com/nikvolf/tokio-named-pipes"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/app-dirs-rs"]
|
|
||||||
+git = "https://github.com/paritytech/app-dirs-rs"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/bn"]
|
|
||||||
+git = "https://github.com/paritytech/bn"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/daemonize"]
|
|
||||||
+git = "https://github.com/paritytech/daemonize"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/hidapi-rs"]
|
|
||||||
+git = "https://github.com/paritytech/hidapi-rs"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/jsonrpc.git"]
|
|
||||||
+git = "https://github.com/paritytech/jsonrpc.git"
|
|
||||||
+branch = "parity-1.11"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/libusb-rs"]
|
|
||||||
+git = "https://github.com/paritytech/libusb-rs"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/libusb-sys"]
|
|
||||||
+git = "https://github.com/paritytech/libusb-sys"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/ring"]
|
|
||||||
+git = "https://github.com/paritytech/ring"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/rust-ctrlc.git"]
|
|
||||||
+git = "https://github.com/paritytech/rust-ctrlc.git"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/rust-secp256k1"]
|
|
||||||
+git = "https://github.com/paritytech/rust-secp256k1"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/trezor-sys"]
|
|
||||||
+git = "https://github.com/paritytech/trezor-sys"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/tomusdrw/ws-rs"]
|
|
||||||
+git = "https://github.com/tomusdrw/ws-rs"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
@ -1,98 +0,0 @@
|
|||||||
diff --git a/.cargo/config b/.cargo/config
|
|
||||||
index 72652ad2f..3c0eca89a 100644
|
|
||||||
--- a/.cargo/config
|
|
||||||
+++ b/.cargo/config
|
|
||||||
@@ -1,3 +1,93 @@
|
|
||||||
[target.x86_64-pc-windows-msvc]
|
|
||||||
# Link the C runtime statically ; https://github.com/paritytech/parity/issues/6643
|
|
||||||
rustflags = ["-Ctarget-feature=+crt-static"]
|
|
||||||
+
|
|
||||||
+[source."https://github.com/alexcrichton/mio-named-pipes"]
|
|
||||||
+git = "https://github.com/alexcrichton/mio-named-pipes"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/nikvolf/parity-tokio-ipc"]
|
|
||||||
+git = "https://github.com/nikvolf/parity-tokio-ipc"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/nikvolf/tokio-named-pipes"]
|
|
||||||
+git = "https://github.com/nikvolf/tokio-named-pipes"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/app-dirs-rs"]
|
|
||||||
+git = "https://github.com/paritytech/app-dirs-rs"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/bn"]
|
|
||||||
+git = "https://github.com/paritytech/bn"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/daemonize"]
|
|
||||||
+git = "https://github.com/paritytech/daemonize"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/hidapi-rs"]
|
|
||||||
+git = "https://github.com/paritytech/hidapi-rs"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/jsonrpc.git"]
|
|
||||||
+git = "https://github.com/paritytech/jsonrpc.git"
|
|
||||||
+branch = "parity-2.2"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/libusb-rs"]
|
|
||||||
+git = "https://github.com/paritytech/libusb-rs"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/libusb-sys"]
|
|
||||||
+git = "https://github.com/paritytech/libusb-sys"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/parity-common"]
|
|
||||||
+git = "https://github.com/paritytech/parity-common"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/ring"]
|
|
||||||
+git = "https://github.com/paritytech/ring"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/rust-ctrlc.git"]
|
|
||||||
+git = "https://github.com/paritytech/rust-ctrlc.git"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/rust-rocksdb"]
|
|
||||||
+git = "https://github.com/paritytech/rust-rocksdb"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/rust-secp256k1"]
|
|
||||||
+git = "https://github.com/paritytech/rust-secp256k1"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/rust-snappy"]
|
|
||||||
+git = "https://github.com/paritytech/rust-snappy"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/paritytech/trezor-sys"]
|
|
||||||
+git = "https://github.com/paritytech/trezor-sys"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
||||||
+
|
|
||||||
+[source."https://github.com/tomusdrw/ws-rs"]
|
|
||||||
+git = "https://github.com/tomusdrw/ws-rs"
|
|
||||||
+branch = "master"
|
|
||||||
+replace-with = "vendored-sources"
|
|
30
pkgs/applications/altcoins/polkadot/default.nix
Normal file
30
pkgs/applications/altcoins/polkadot/default.nix
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, rustPlatform
|
||||||
|
, pkgconfig
|
||||||
|
, openssl
|
||||||
|
}:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
name = "polkadot-${version}";
|
||||||
|
version = "0.2.17";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "paritytech";
|
||||||
|
repo = "substrate";
|
||||||
|
rev = "19f4f4d4df3bb266086b4e488739f73d3d5e588c";
|
||||||
|
sha256 = "0v7g03rbml2afw0splmyjh9nqpjg0ldjw09hyc0jqd3qlhgxiiyj";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoSha256 = "0wwkaxqj2v5zach5xcqfzf6prc0gxy2v47janglp44xbxbx9xk08";
|
||||||
|
|
||||||
|
buildInputs = [ pkgconfig openssl openssl.dev ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Polkadot Node Implementation";
|
||||||
|
homepage = http://polkadot.network;
|
||||||
|
license = licenses.gpl3;
|
||||||
|
maintainers = [ maintainers.akru ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
49
pkgs/applications/audio/csound/csound-qt/default.nix
Normal file
49
pkgs/applications/audio/csound/csound-qt/default.nix
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{ stdenv, csound, desktop-file-utils,
|
||||||
|
fetchFromGitHub, python, python-qt, qmake,
|
||||||
|
qtwebengine, rtmidi, unzip }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "csound-qt-${version}";
|
||||||
|
version = "0.9.6-beta2";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "CsoundQt";
|
||||||
|
repo = "CsoundQt";
|
||||||
|
rev = "${version}";
|
||||||
|
sha256 = "12jv7cvns3wj2npha0mvpn88kkkfsxsvhgzs2wrw04kbrvbhbffi";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [ ./rtmidipath.patch ];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ qmake qtwebengine ];
|
||||||
|
|
||||||
|
buildInputs = [ csound desktop-file-utils rtmidi unzip ];
|
||||||
|
|
||||||
|
qmakeFlags = [ "qcs.pro" "CONFIG+=rtmidi" "CONFIG+=pythonqt"
|
||||||
|
"CSOUND_INCLUDE_DIR=${csound}/include/csound"
|
||||||
|
"CSOUND_LIBRARY_DIR=${csound}/lib"
|
||||||
|
"RTMIDI_DIR=${rtmidi.src}"
|
||||||
|
"PYTHONQT_SRC_DIR=${python-qt}/lib"
|
||||||
|
"PYTHONQT_LIB_DIR=${python-qt}/lib"
|
||||||
|
"LIBS+=${python-qt}/lib/libPythonQt-Qt5-Python2.7.so"
|
||||||
|
"LIBS+=${python-qt}/lib/libPythonQt_QtAll-Qt5-Python2.7.so"
|
||||||
|
"INCLUDEPATH+=${python-qt}/include/PythonQt"
|
||||||
|
"INCLUDEPATH+=${python}/include/python2.7"
|
||||||
|
"INSTALL_DIR=$(out)"
|
||||||
|
"SHARE_DIR=$(out)/share"
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r bin $out
|
||||||
|
make install
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features.";
|
||||||
|
homepage = https://csoundqt.github.io/;
|
||||||
|
license = licenses.gpl2;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ hlolli ];
|
||||||
|
};
|
||||||
|
}
|
17
pkgs/applications/audio/csound/csound-qt/rtmidipath.patch
Normal file
17
pkgs/applications/audio/csound/csound-qt/rtmidipath.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
diff --git a/src/src.pri b/src/src.pri
|
||||||
|
index e5e0c896..9a9fa513 100644
|
||||||
|
--- a/src/src.pri
|
||||||
|
+++ b/src/src.pri
|
||||||
|
@@ -155,9 +155,9 @@ pythonqt {
|
||||||
|
"src/pyqcsobject.cpp"
|
||||||
|
}
|
||||||
|
rtmidi {
|
||||||
|
- HEADERS += "src/../$${RTMIDI_DIR}/RtMidi.h"
|
||||||
|
- SOURCES += "src/../$${RTMIDI_DIR}/RtMidi.cpp"
|
||||||
|
- INCLUDEPATH += src/../$${RTMIDI_DIR}
|
||||||
|
+ HEADERS += "$${RTMIDI_DIR}/RtMidi.h"
|
||||||
|
+ SOURCES += "$${RTMIDI_DIR}/RtMidi.cpp"
|
||||||
|
+ INCLUDEPATH += $${RTMIDI_DIR}
|
||||||
|
}
|
||||||
|
|
||||||
|
perfThread_build {
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "drumkv1-${version}";
|
name = "drumkv1-${version}";
|
||||||
version = "0.9.3";
|
version = "0.9.4";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/drumkv1/${name}.tar.gz";
|
url = "mirror://sourceforge/drumkv1/${name}.tar.gz";
|
||||||
sha256 = "0a38vpyyppjdwifidrhgj4bnsx4jjx413657s59j0r4q8rg55jca";
|
sha256 = "02j10khl3wd17z0wfs3crr55wv7h9f0qhhg90xg0kvrxvw83vzy9";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];
|
buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
, gobject-introspection, wrapGAppsHook }:
|
, gobject-introspection, wrapGAppsHook }:
|
||||||
|
|
||||||
python3.pkgs.buildPythonApplication rec {
|
python3.pkgs.buildPythonApplication rec {
|
||||||
|
pname = "lollypop";
|
||||||
version = "0.9.611";
|
version = "0.9.611";
|
||||||
name = "lollypop-${version}";
|
|
||||||
|
|
||||||
format = "other";
|
format = "other";
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
@ -40,7 +40,7 @@ python3.pkgs.buildPythonApplication rec {
|
|||||||
libsoup
|
libsoup
|
||||||
];
|
];
|
||||||
|
|
||||||
pythonPath = with python3.pkgs; [
|
propagatedBuildInputs = with python3.pkgs; [
|
||||||
beautifulsoup4
|
beautifulsoup4
|
||||||
gst-python
|
gst-python
|
||||||
pillow
|
pillow
|
||||||
@ -56,15 +56,15 @@ python3.pkgs.buildPythonApplication rec {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
buildPythonPath "$out/libexec/lollypop-sp $pythonPath"
|
buildPythonPath "$out $propagatedBuildInputs"
|
||||||
patchPythonScript "$out/libexec/lollypop-sp"
|
patchPythonScript "$out/libexec/lollypop-sp"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "A modern music player for GNOME";
|
description = "A modern music player for GNOME";
|
||||||
homepage = https://wiki.gnome.org/Apps/Lollypop;
|
homepage = https://wiki.gnome.org/Apps/Lollypop;
|
||||||
license = licenses.gpl3Plus;
|
license = licenses.gpl3Plus;
|
||||||
maintainers = with maintainers; [ worldofpeace ];
|
maintainers = with maintainers; [ worldofpeace ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
pythonPackages.buildPythonApplication rec {
|
pythonPackages.buildPythonApplication rec {
|
||||||
pname = "Mopidy-Iris";
|
pname = "Mopidy-Iris";
|
||||||
version = "3.31.2";
|
version = "3.31.3";
|
||||||
|
|
||||||
src = pythonPackages.fetchPypi {
|
src = pythonPackages.fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "0639ib5nicrabckjd17wdmhl8n3822gc2p1bn0xv8mq70paspar6";
|
sha256 = "060kvwlch2jgiriafly8y03fp8gpbw9xiwhq8ncdij390a03iz8n";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
@ -44,13 +44,13 @@ let
|
|||||||
];
|
];
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
name = "pulseeffects-${version}";
|
name = "pulseeffects-${version}";
|
||||||
version = "4.4.0";
|
version = "4.4.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "wwmm";
|
owner = "wwmm";
|
||||||
repo = "pulseeffects";
|
repo = "pulseeffects";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0bjzlqyvcp9hxaq07nqr14k9kvan5myaxb7ci30gz0fgayib85lv";
|
sha256 = "0hb575h9hdknhwvhn5lak89ddavn4v5c0nipnv8dsfnmjhfli5qm";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "qsampler-${version}";
|
name = "qsampler-${version}";
|
||||||
version = "0.5.2";
|
version = "0.5.3";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/qsampler/${name}.tar.gz";
|
url = "mirror://sourceforge/qsampler/${name}.tar.gz";
|
||||||
sha256 = "0xb0j57k03pkdl7yl5mcv1i21ljnxcq6b9h3zp6mris916lj45zq";
|
sha256 = "02xazvz8iaksglbgq3jhw4fq3f5pdcq9sss79jxs082md0mry17d";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ autoconf automake libtool pkgconfig qttools ];
|
nativeBuildInputs = [ autoconf automake libtool pkgconfig qttools ];
|
||||||
|
@ -7,11 +7,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "deja-dup-${version}";
|
name = "deja-dup-${version}";
|
||||||
version = "38.0";
|
version = "38.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://launchpad.net/deja-dup/${stdenv.lib.versions.major version}/${version}/+download/deja-dup-${version}.tar.xz";
|
url = "https://launchpad.net/deja-dup/${stdenv.lib.versions.major version}/${version}/+download/deja-dup-${version}.tar.xz";
|
||||||
sha256 = "1l3sa24v0v6xf312h36jikfi8zyx6z3nmc7pjzgdp7l89gkdm65v";
|
sha256 = "0wm7z72qbsljzsysxg8h5sbpg56ignn9mp8v3xynn12dv3gv6rba";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
@ -18,9 +18,9 @@ let
|
|||||||
sha256Hash = "05rjwvcph0wx0p0hai5z6n9lnyhk3i5yvbvhr51jc8s3k3b6jyi5";
|
sha256Hash = "05rjwvcph0wx0p0hai5z6n9lnyhk3i5yvbvhr51jc8s3k3b6jyi5";
|
||||||
};
|
};
|
||||||
latestVersion = { # canary & dev
|
latestVersion = { # canary & dev
|
||||||
version = "3.4.0.6"; # "Android Studio 3.4 Canary 7"
|
version = "3.4.0.7"; # "Android Studio 3.4 Canary 8"
|
||||||
build = "183.5159543";
|
build = "183.5173923";
|
||||||
sha256Hash = "0r685qqx4w1hwbd8jgrh7ks8bw9m7823ffhd3x6pl7j4b9hpc858";
|
sha256Hash = "0bf96c9db15rw1k1znz6yxhbrn9q990zy3pkq0nsirnqfpgllvpi";
|
||||||
};
|
};
|
||||||
in rec {
|
in rec {
|
||||||
# Old alias
|
# Old alias
|
||||||
|
@ -3,14 +3,14 @@
|
|||||||
let
|
let
|
||||||
versions = {
|
versions = {
|
||||||
atom = {
|
atom = {
|
||||||
version = "1.32.1";
|
version = "1.33.0";
|
||||||
sha256 = "1x22jbhvagqw9mvq0v7z4z09qp727vl0rkyvaxn98xnj9gvcfkq9";
|
sha256 = "0f6m6zwgz94m3q11ipyiliap3s5a3zlrg3ldjwkqnxjl6gwlxc2r";
|
||||||
};
|
};
|
||||||
|
|
||||||
atom-beta = {
|
atom-beta = {
|
||||||
version = "1.33.0";
|
version = "1.34.0";
|
||||||
beta = 1;
|
beta = 0;
|
||||||
sha256 = "0sf98apmb57msgr5p1xly0mffzn2s808nsfsmbisk4qqmm9fv2m3";
|
sha256 = "1xnrr4z55sj46hqr0il26sfs6s3knv60m340cw3rzzic271b3ifw";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ let
|
|||||||
description = "A hackable text editor for the 21st Century";
|
description = "A hackable text editor for the 21st Century";
|
||||||
homepage = https://atom.io/;
|
homepage = https://atom.io/;
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ offline nequissimus synthetica ysndr ];
|
maintainers = with maintainers; [ offline nequissimus ysndr ];
|
||||||
platforms = platforms.x86_64;
|
platforms = platforms.x86_64;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.33";
|
version = "1.34";
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.geany.org/${name}.tar.bz2";
|
url = "https://download.geany.org/${name}.tar.bz2";
|
||||||
sha256 = "66baaff43f12caebcf0efec9a5533044dc52837f799c73a1fd7312caa86099c2";
|
sha256 = "63b93d25d037eaffa77895ae6dd29c91bca570e4053eff5cc8490f87e6021f8e";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig intltool libintl ];
|
nativeBuildInputs = [ pkgconfig intltool libintl ];
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "ghostwriter";
|
pname = "ghostwriter";
|
||||||
version = "1.7.3";
|
version = "1.7.4";
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "wereturtle";
|
owner = "wereturtle";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1xkxd59rw2dn6xphgcl06zzmfgs1zna2w0pxrk0f49ywffvkvs72";
|
sha256 = "1pqlr08z5syqcq5p282asxwzrrm7c1w94baxyb467swh8yp3fj5m";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ qmake pkgconfig ];
|
nativeBuildInputs = [ qmake pkgconfig ];
|
||||||
|
@ -250,12 +250,12 @@ in
|
|||||||
|
|
||||||
clion = buildClion rec {
|
clion = buildClion rec {
|
||||||
name = "clion-${version}";
|
name = "clion-${version}";
|
||||||
version = "2018.2.6"; /* updated by script */
|
version = "2018.3.1"; /* updated by script */
|
||||||
description = "C/C++ IDE. New. Intelligent. Cross-platform";
|
description = "C/C++ IDE. New. Intelligent. Cross-platform";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
|
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
|
||||||
sha256 = "1mgm3a6ph3j085bidl6vsy85kpscfspzxbzdmh3biklwfv3445rf"; /* updated by script */
|
sha256 = "0wv4hmh71ca9fl4pslf8nn6wppa98sc94272z4nb42jbs6dnb9ji"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-clion";
|
wmClass = "jetbrains-clion";
|
||||||
update-channel = "CLion Release"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
|
update-channel = "CLion Release"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
|
||||||
@ -276,12 +276,12 @@ in
|
|||||||
|
|
||||||
goland = buildGoland rec {
|
goland = buildGoland rec {
|
||||||
name = "goland-${version}";
|
name = "goland-${version}";
|
||||||
version = "2018.3"; /* updated by script */
|
version = "2018.3.1"; /* updated by script */
|
||||||
description = "Up and Coming Go IDE";
|
description = "Up and Coming Go IDE";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/go/${name}.tar.gz";
|
url = "https://download.jetbrains.com/go/${name}.tar.gz";
|
||||||
sha256 = "0hd44flxqnnxg390mkf4ppjs2nxv0nwdc7a2i65f69bp5h61x783"; /* updated by script */
|
sha256 = "0z3z9hc7h3n63mfy7c5zh5sz8c0bzgxk79xamw08sxphrsjahasz"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-goland";
|
wmClass = "jetbrains-goland";
|
||||||
update-channel = "GoLand Release";
|
update-channel = "GoLand Release";
|
||||||
@ -289,12 +289,12 @@ in
|
|||||||
|
|
||||||
idea-community = buildIdea rec {
|
idea-community = buildIdea rec {
|
||||||
name = "idea-community-${version}";
|
name = "idea-community-${version}";
|
||||||
version = "2018.3"; /* updated by script */
|
version = "2018.3.1"; /* updated by script */
|
||||||
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
|
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
|
||||||
license = stdenv.lib.licenses.asl20;
|
license = stdenv.lib.licenses.asl20;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
|
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
|
||||||
sha256 = "01ccz5ksbv8xh8mnk3zxqpia8zgayy8bcgmbwqibrykz47y6r7yy"; /* updated by script */
|
sha256 = "1zi4aib1h4jfn241gsg83jsqfj99fpbci4pkh8xarap6xrallyiq"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-idea-ce";
|
wmClass = "jetbrains-idea-ce";
|
||||||
update-channel = "IntelliJ IDEA Release";
|
update-channel = "IntelliJ IDEA Release";
|
||||||
@ -302,12 +302,12 @@ in
|
|||||||
|
|
||||||
idea-ultimate = buildIdea rec {
|
idea-ultimate = buildIdea rec {
|
||||||
name = "idea-ultimate-${version}";
|
name = "idea-ultimate-${version}";
|
||||||
version = "2018.3"; /* updated by script */
|
version = "2018.3.1"; /* updated by script */
|
||||||
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
|
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jdk.tar.gz";
|
url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jdk.tar.gz";
|
||||||
sha256 = "16z0pqmxjn5dl42rbz7mx8gi13xs3220pzkdsdkh1k1ny9caqzvj"; /* updated by script */
|
sha256 = "0x0dplmv37gqdbrwxsx6xaix9dbaa6kqc09ganln5r4nl2bg64i8"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-idea";
|
wmClass = "jetbrains-idea";
|
||||||
update-channel = "IntelliJ IDEA Release";
|
update-channel = "IntelliJ IDEA Release";
|
||||||
@ -315,12 +315,12 @@ in
|
|||||||
|
|
||||||
phpstorm = buildPhpStorm rec {
|
phpstorm = buildPhpStorm rec {
|
||||||
name = "phpstorm-${version}";
|
name = "phpstorm-${version}";
|
||||||
version = "2018.2.5"; /* updated by script */
|
version = "2018.2.6"; /* updated by script */
|
||||||
description = "Professional IDE for Web and PHP developers";
|
description = "Professional IDE for Web and PHP developers";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
|
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
|
||||||
sha256 = "0crr3056hlv9x2q1i1n00aavj53xkwkfy4lgyyphk81c0gly4dg1"; /* updated by script */
|
sha256 = "0z627q9mcxlz8a92dndnaz2qa9dkaapimsfqkvc0i8ab88yw75v1"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-phpstorm";
|
wmClass = "jetbrains-phpstorm";
|
||||||
update-channel = "PhpStorm 2018.2";
|
update-channel = "PhpStorm 2018.2";
|
||||||
@ -328,12 +328,12 @@ in
|
|||||||
|
|
||||||
pycharm-community = buildPycharm rec {
|
pycharm-community = buildPycharm rec {
|
||||||
name = "pycharm-community-${version}";
|
name = "pycharm-community-${version}";
|
||||||
version = "2018.3"; /* updated by script */
|
version = "2018.3.1"; /* updated by script */
|
||||||
description = "PyCharm Community Edition";
|
description = "PyCharm Community Edition";
|
||||||
license = stdenv.lib.licenses.asl20;
|
license = stdenv.lib.licenses.asl20;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
||||||
sha256 = "0kgrh3w4lpk7qkp5gss24in1nqahdfllvf97qz6r77zn9n5k1wq7"; /* updated by script */
|
sha256 = "02vs8nxxm139jl622nhxs59i9gw9rs5rjymkg8a0ajpybang24jk"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-pycharm-ce";
|
wmClass = "jetbrains-pycharm-ce";
|
||||||
update-channel = "PyCharm Release";
|
update-channel = "PyCharm Release";
|
||||||
@ -341,12 +341,12 @@ in
|
|||||||
|
|
||||||
pycharm-professional = buildPycharm rec {
|
pycharm-professional = buildPycharm rec {
|
||||||
name = "pycharm-professional-${version}";
|
name = "pycharm-professional-${version}";
|
||||||
version = "2018.3"; /* updated by script */
|
version = "2018.3.1"; /* updated by script */
|
||||||
description = "PyCharm Professional Edition";
|
description = "PyCharm Professional Edition";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
||||||
sha256 = "0q4scwnqy0h725g9z5hd145c3n10iaj04z790s4lixg1c63h3y8q"; /* updated by script */
|
sha256 = "0g4ag9lid2km69s5g31hhhvz3zjx52wxca1q4qz1h0s9km0ca1sq"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-pycharm";
|
wmClass = "jetbrains-pycharm";
|
||||||
update-channel = "PyCharm Release";
|
update-channel = "PyCharm Release";
|
||||||
@ -367,12 +367,12 @@ in
|
|||||||
|
|
||||||
ruby-mine = buildRubyMine rec {
|
ruby-mine = buildRubyMine rec {
|
||||||
name = "ruby-mine-${version}";
|
name = "ruby-mine-${version}";
|
||||||
version = "2018.2.5"; /* updated by script */
|
version = "2018.2.6"; /* updated by script */
|
||||||
description = "The Most Intelligent Ruby and Rails IDE";
|
description = "The Most Intelligent Ruby and Rails IDE";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
|
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
|
||||||
sha256 = "0b01fnifk5iawyf2zi7r5ffz8dxlh18g2ilrkc5746vmnsp0jxq4"; /* updated by script */
|
sha256 = "0xbmj7d1ccq2qf1jsvch1zxdrypkvzxdfkr431c8fnabh993yxx1"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-rubymine";
|
wmClass = "jetbrains-rubymine";
|
||||||
update-channel = "RubyMine 2018.2";
|
update-channel = "RubyMine 2018.2";
|
||||||
@ -380,12 +380,12 @@ in
|
|||||||
|
|
||||||
webstorm = buildWebStorm rec {
|
webstorm = buildWebStorm rec {
|
||||||
name = "webstorm-${version}";
|
name = "webstorm-${version}";
|
||||||
version = "2018.3"; /* updated by script */
|
version = "2018.3.1"; /* updated by script */
|
||||||
description = "Professional IDE for Web and JavaScript development";
|
description = "Professional IDE for Web and JavaScript development";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
|
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
|
||||||
sha256 = "0msvgdjbdipc4g8j705d1jya2mjmx4wwhb23nch3znh7grryr75s"; /* updated by script */
|
sha256 = "1l3jy1ifx82gdnvpgz77ycxbwymcwwd830i4mfidkr9gkndlxpsp"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-webstorm";
|
wmClass = "jetbrains-webstorm";
|
||||||
update-channel = "WebStorm Release";
|
update-channel = "WebStorm Release";
|
||||||
|
@ -4,17 +4,17 @@ with stdenv.lib;
|
|||||||
|
|
||||||
pythonPackages.buildPythonPackage rec {
|
pythonPackages.buildPythonPackage rec {
|
||||||
pname = "neovim-remote";
|
pname = "neovim-remote";
|
||||||
version = "2.1.0";
|
version = "2.1.1";
|
||||||
disabled = !pythonPackages.isPy3k;
|
disabled = !pythonPackages.isPy3k;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mhinz";
|
owner = "mhinz";
|
||||||
repo = "neovim-remote";
|
repo = "neovim-remote";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0gri4d8gg5hvywffvj8r123d06x006qhink7d54yk6lvplw64gyc";
|
sha256 = "1hkzcc141imjin03wpfykw50k0vs7vj1lr09czb2hsyf937gyjqn";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = with pythonPackages; [ neovim psutil ];
|
propagatedBuildInputs = with pythonPackages; [ pynvim psutil ];
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "A tool that helps controlling nvim processes from a terminal";
|
description = "A tool that helps controlling nvim processes from a terminal";
|
||||||
|
@ -16,7 +16,6 @@ let
|
|||||||
, withPython3 ? true, extraPython3Packages ? (_: []) /* the function you would have passed to python.withPackages */
|
, withPython3 ? true, extraPython3Packages ? (_: []) /* the function you would have passed to python.withPackages */
|
||||||
, withNodeJs? false
|
, withNodeJs? false
|
||||||
, withRuby ? true
|
, withRuby ? true
|
||||||
, withPyGUI ? false
|
|
||||||
, vimAlias ? false
|
, vimAlias ? false
|
||||||
, viAlias ? false
|
, viAlias ? false
|
||||||
, configure ? {}
|
, configure ? {}
|
||||||
@ -43,13 +42,13 @@ let
|
|||||||
|
|
||||||
pluginPythonPackages = getDeps "pythonDependencies" requiredPlugins;
|
pluginPythonPackages = getDeps "pythonDependencies" requiredPlugins;
|
||||||
pythonEnv = pythonPackages.python.withPackages(ps:
|
pythonEnv = pythonPackages.python.withPackages(ps:
|
||||||
(if withPyGUI then [ ps.neovim_gui ] else [ ps.neovim ])
|
[ ps.pynvim ]
|
||||||
++ (extraPythonPackagesFun ps)
|
++ (extraPythonPackagesFun ps)
|
||||||
++ (concatMap (f: f ps) pluginPythonPackages));
|
++ (concatMap (f: f ps) pluginPythonPackages));
|
||||||
|
|
||||||
pluginPython3Packages = getDeps "python3Dependencies" requiredPlugins;
|
pluginPython3Packages = getDeps "python3Dependencies" requiredPlugins;
|
||||||
python3Env = python3Packages.python.withPackages (ps:
|
python3Env = python3Packages.python.withPackages (ps:
|
||||||
[ ps.neovim ]
|
[ ps.pynvim ]
|
||||||
++ (extraPython3PackagesFun ps)
|
++ (extraPython3PackagesFun ps)
|
||||||
++ (concatMap (f: f ps) pluginPython3Packages));
|
++ (concatMap (f: f ps) pluginPython3Packages));
|
||||||
|
|
||||||
@ -88,10 +87,6 @@ let
|
|||||||
makeWrapper ${python3Env}/bin/python3 $out/bin/nvim-python3 --unset PYTHONPATH
|
makeWrapper ${python3Env}/bin/python3 $out/bin/nvim-python3 --unset PYTHONPATH
|
||||||
'' + optionalString withRuby ''
|
'' + optionalString withRuby ''
|
||||||
ln -s ${rubyEnv}/bin/neovim-ruby-host $out/bin/nvim-ruby
|
ln -s ${rubyEnv}/bin/neovim-ruby-host $out/bin/nvim-ruby
|
||||||
''
|
|
||||||
+ optionalString withPyGUI ''
|
|
||||||
makeWrapper "${pythonEnv}/bin/pynvim" "$out/bin/pynvim" \
|
|
||||||
--prefix PATH : "$out/bin"
|
|
||||||
'' + optionalString vimAlias ''
|
'' + optionalString vimAlias ''
|
||||||
ln -s $out/bin/nvim $out/bin/vim
|
ln -s $out/bin/nvim $out/bin/vim
|
||||||
'' + optionalString viAlias ''
|
'' + optionalString viAlias ''
|
||||||
|
@ -9,13 +9,19 @@ stdenv.mkDerivation rec {
|
|||||||
if stdenv.hostPlatform.system == "i686-linux" then
|
if stdenv.hostPlatform.system == "i686-linux" then
|
||||||
fetchurl {
|
fetchurl {
|
||||||
name = "sublimetext-2.0.2.tar.bz2";
|
name = "sublimetext-2.0.2.tar.bz2";
|
||||||
url = http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2;
|
url = [
|
||||||
|
http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2
|
||||||
|
https://download.sublimetext.com/Sublime%20Text%202.0.2.tar.bz2
|
||||||
|
];
|
||||||
sha256 = "026g5mppk28lzzzn9ibykcqkrd5msfmg0sc0z8w8jd7v3h28wcq7";
|
sha256 = "026g5mppk28lzzzn9ibykcqkrd5msfmg0sc0z8w8jd7v3h28wcq7";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fetchurl {
|
fetchurl {
|
||||||
name = "sublimetext-2.0.2.tar.bz2";
|
name = "sublimetext-2.0.2.tar.bz2";
|
||||||
url = http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2%20x64.tar.bz2;
|
url = [
|
||||||
|
http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2
|
||||||
|
https://download.sublimetext.com/Sublime%20Text%202.0.2%20x64.tar.bz2
|
||||||
|
];
|
||||||
sha256 = "115b71nbv9mv8cz6bkjwpbdf2ywnjc1zy2d3080f6ck4sqqfvfh1";
|
sha256 = "115b71nbv9mv8cz6bkjwpbdf2ywnjc1zy2d3080f6ck4sqqfvfh1";
|
||||||
};
|
};
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchgit
|
{ stdenv, fetchFromGitHub
|
||||||
, ncurses }:
|
, ncurses }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
@ -6,20 +6,27 @@ stdenv.mkDerivation rec {
|
|||||||
name = "tecoc-git-${version}";
|
name = "tecoc-git-${version}";
|
||||||
version = "20150606";
|
version = "20150606";
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchFromGitHub {
|
||||||
url = "https://github.com/blakemcbride/TECOC.git";
|
owner = "blakemcbride";
|
||||||
|
repo = "TECOC";
|
||||||
rev = "d7dffdeb1dfb812e579d6d3b518545b23e1b50cb";
|
rev = "d7dffdeb1dfb812e579d6d3b518545b23e1b50cb";
|
||||||
sha256 = "11zfa73dlx71c0hmjz5n3wqcvk6082rpb4sss877nfiayisc0njj";
|
sha256 = "11zfa73dlx71c0hmjz5n3wqcvk6082rpb4sss877nfiayisc0njj";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ ncurses ];
|
buildInputs = [ ncurses ];
|
||||||
|
|
||||||
configurePhase = ''
|
makefile = if stdenv.hostPlatform.isDarwin
|
||||||
cp src/makefile.linux src/Makefile
|
then "makefile.osx"
|
||||||
'';
|
else if stdenv.hostPlatform.isFreeBSD
|
||||||
buildPhase = ''
|
then "makefile.bsd"
|
||||||
make CC=${stdenv.cc}/bin/cc -C src/
|
else if stdenv.hostPlatform.isOpenBSD
|
||||||
'';
|
then "makefile.bsd"
|
||||||
|
else if stdenv.hostPlatform.isWindows
|
||||||
|
then "makefile.win"
|
||||||
|
else "makefile.linux"; # I think Linux is a safe default...
|
||||||
|
|
||||||
|
makeFlags = [ "CC=${stdenv.cc}/bin/cc" "-C src/" ];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin $out/share/doc/${name} $out/lib/teco/macros
|
mkdir -p $out/bin $out/share/doc/${name} $out/lib/teco/macros
|
||||||
cp src/tecoc $out/bin
|
cp src/tecoc $out/bin
|
||||||
@ -31,26 +38,26 @@ stdenv.mkDerivation rec {
|
|||||||
ln -s tecoc teco
|
ln -s tecoc teco
|
||||||
ln -s tecoc Inspect )
|
ln -s tecoc Inspect )
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "A clone of the good old TECO editor";
|
description = "A clone of the good old TECO editor";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
For those who don't know: TECO is the acronym of Tape Editor and
|
For those who don't know: TECO is the acronym of Tape Editor and COrrector
|
||||||
COrrector (because it was a paper tape edition tool in its debut
|
(because it was a paper tape edition tool in its debut days). Now the
|
||||||
days). Now the acronym follows after Text Editor and Corrector,
|
acronym follows after Text Editor and Corrector, or Text Editor
|
||||||
or Text Editor Character-Oriented.
|
Character-Oriented.
|
||||||
|
|
||||||
TECO is a character-oriented text editor, originally developed
|
TECO is a character-oriented text editor, originally developed by Dan
|
||||||
bu Dan Murphy at MIT circa 1962. It is also a Turing-complete
|
Murphy at MIT circa 1962. It is also a Turing-complete imperative
|
||||||
imperative interpreted programming language for text
|
interpreted programming language for text manipulation, done via
|
||||||
manipulation, done via user-loaded sets of macros. In fact, Emacs
|
user-loaded sets of macros. In fact, the venerable Emacs was born as a set
|
||||||
was born as a set of Editor MACroS for TECO.
|
of Editor MACroS for TECO.
|
||||||
|
|
||||||
TECOC is a portable C implementation of TECO-11.
|
TECOC is a portable C implementation of TECO-11.
|
||||||
'';
|
'';
|
||||||
homepage = https://github.com/blakemcbride/TECOC;
|
homepage = https://github.com/blakemcbride/TECOC;
|
||||||
|
license = { url = https://github.com/blakemcbride/TECOC/tree/master/doc/readme-1st.txt; };
|
||||||
maintainers = [ maintainers.AndersonTorres ];
|
maintainers = [ maintainers.AndersonTorres ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.unix;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
# TODO: test in other platforms - especially Darwin
|
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "texstudio";
|
pname = "texstudio";
|
||||||
version = "2.12.10";
|
version = "2.12.14";
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "${pname}-org";
|
owner = "${pname}-org";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0mkx7fym41hwd7cdg31ji2hxlv3gxx0sa6bnap51ryxmq8sxdjhq";
|
sha256 = "08vfhkgzhh1227wcvr5wwpnw0072c80nf2crhmxwh3jgjfgi538f";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ qt5.qmake pkgconfig ];
|
nativeBuildInputs = [ qt5.qmake pkgconfig ];
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
{ lib, fetchFromGitHub }:
|
{ lib, fetchFromGitHub }:
|
||||||
rec {
|
rec {
|
||||||
version = "8.1.0535";
|
version = "8.1.0578";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "vim";
|
owner = "vim";
|
||||||
repo = "vim";
|
repo = "vim";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0kgh213ca2qfrwdqfimrnhlxidjbrg26icxw00rivjiv1blii7ck";
|
sha256 = "0sawqxp2737y6mga9da36qya47h0idnnaxblzpsx8clw002piyv2";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
@ -12,9 +12,9 @@ let
|
|||||||
}.${stdenv.hostPlatform.system};
|
}.${stdenv.hostPlatform.system};
|
||||||
|
|
||||||
sha256 = {
|
sha256 = {
|
||||||
"i686-linux" = "0r19i3gg6iz8j7plb89c0k8r3wlh9vxbv7mwbssy0yvhid2af3ww";
|
"i686-linux" = "0bd2jdn67vnbhrsqy54bymz4di3fw3p18ni5j2wikqkl4d9h4jj1";
|
||||||
"x86_64-linux" = "1r66mjz4lgv3dk0rjb9p27ha9y7vj7xld9x9gqnjxqx9ify71r9i";
|
"x86_64-linux" = "1zbnyff0q15xkvkrs14rfgyn6xb9v0xivcnbl8yckl71s45vb2l1";
|
||||||
"x86_64-darwin" = "0akr8675hnppxwr8xy5lr6rlqz8zg1fj823vks5mx3ssmd3sg189";
|
"x86_64-darwin" = "1qgzhpfzcwym1qyzx2v14336l106hzhs7ii84g356vxkm219x7kw";
|
||||||
}.${stdenv.hostPlatform.system};
|
}.${stdenv.hostPlatform.system};
|
||||||
|
|
||||||
archive_fmt = if stdenv.hostPlatform.system == "x86_64-darwin" then "zip" else "tar.gz";
|
archive_fmt = if stdenv.hostPlatform.system == "x86_64-darwin" then "zip" else "tar.gz";
|
||||||
@ -31,7 +31,7 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "vscode-${version}";
|
name = "vscode-${version}";
|
||||||
version = "1.29.1";
|
version = "1.30.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
name = "VSCode_${version}_${plat}.${archive_fmt}";
|
name = "VSCode_${version}_${plat}.${archive_fmt}";
|
||||||
|
@ -68,7 +68,7 @@ runCommand "${wrappedPkgName}-with-extensions-${wrappedPkgVersion}" {
|
|||||||
|
|
||||||
ln -sT "${vscode}/share/pixmaps/code.png" "$out/share/pixmaps/code.png"
|
ln -sT "${vscode}/share/pixmaps/code.png" "$out/share/pixmaps/code.png"
|
||||||
ln -sT "${vscode}/share/applications/${executableName}.desktop" "$out/share/applications/${executableName}.desktop"
|
ln -sT "${vscode}/share/applications/${executableName}.desktop" "$out/share/applications/${executableName}.desktop"
|
||||||
makeWrapper "${vscode}/bin/${executableName}" "$out/bin/${executableName}" \
|
makeWrapper "${vscode}/bin/${executableName}" "$out/bin/${executableName}" ${lib.optionalString (vscodeExtensions != []) ''
|
||||||
--add-flags \
|
--add-flags "--extensions-dir ${combinedExtensionsDrv}/share/${wrappedPkgName}/extensions"
|
||||||
"--extensions-dir ${combinedExtensionsDrv}/share/${wrappedPkgName}/extensions"
|
''}
|
||||||
''
|
''
|
||||||
|
@ -6,11 +6,11 @@ with stdenv.lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "feh-${version}";
|
name = "feh-${version}";
|
||||||
version = "3.0";
|
version = "3.1.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://feh.finalrewind.org/${name}.tar.bz2";
|
url = "https://feh.finalrewind.org/${name}.tar.bz2";
|
||||||
sha256 = "00fwf8yz7k8vzd30ly5ndlj6ax9w85dkjzjnlk95vd0zdrf4wyxn";
|
sha256 = "1sy8z6rv5sy1bhk3846hgfdy96wdi874yr2fnxfprks46qp29l31";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = [ "out" "man" "doc" ];
|
outputs = [ "out" "man" "doc" ];
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "glabels-${version}";
|
name = "glabels-${version}";
|
||||||
version = "3.4.0";
|
version = "3.4.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://ftp.gnome.org/pub/GNOME/sources/glabels/3.4/glabels-3.4.0.tar.xz";
|
url = "mirror://gnome/sources/glabels/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
|
||||||
sha256 = "04345crf5yrhq6rlrymz630rxnm8yw41vx04hb6xn2nkjn9hf3nl";
|
sha256 = "0f2rki8i27pkd9r0gz03cdl1g4vnmvp0j49nhxqn275vi8lmgr0q";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper intltool ];
|
nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper intltool ];
|
||||||
@ -25,11 +25,11 @@ stdenv.mkDerivation rec {
|
|||||||
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
|
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
description = "Create labels and business cards";
|
description = "Create labels and business cards";
|
||||||
homepage = http://glabels.org/;
|
homepage = https://glabels.org/;
|
||||||
license = stdenv.lib.licenses.gpl2;
|
license = with licenses; [ gpl3Plus lgpl3Plus ];
|
||||||
platforms = stdenv.lib.platforms.unix;
|
platforms = platforms.unix;
|
||||||
maintainers = [ stdenv.lib.maintainers.nico202 ];
|
maintainers = [ maintainers.nico202 ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "graphicsmagick-${version}";
|
name = "graphicsmagick-${version}";
|
||||||
version = "1.3.30";
|
version = "1.3.31";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/graphicsmagick/GraphicsMagick-${version}.tar.xz";
|
url = "mirror://sourceforge/graphicsmagick/GraphicsMagick-${version}.tar.xz";
|
||||||
sha256 = "1warar0731xf94r4bn5x1km85rjabl4iq8r0dk3ywmczap3farfr";
|
sha256 = "0y22740f25qxsqqqg26xqlfp920dm57b7hrgaqmx7azksrcvnsq9";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
pname = "gthumb";
|
pname = "gthumb";
|
||||||
version = "3.6.1";
|
version = "3.6.2";
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
|
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
|
||||||
sha256 = "1vj26gw9b5y4bmb2m49wplqg0md568g3gxin500v3slggzhzkaww";
|
sha256 = "0rjb0bsjhn7nyl5jyjgrypvr6qdr9dc2g586j3lzan96a2vnpgy9";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ itstool libxml2 intltool pkgconfig bison flex wrapGAppsHook ];
|
nativeBuildInputs = [ itstool libxml2 intltool pkgconfig bison flex wrapGAppsHook ];
|
||||||
|
@ -7,19 +7,19 @@ let
|
|||||||
custom_swig = fetchFromGitHub {
|
custom_swig = fetchFromGitHub {
|
||||||
owner = "baldurk";
|
owner = "baldurk";
|
||||||
repo = "swig";
|
repo = "swig";
|
||||||
rev = "renderdoc-modified-5";
|
rev = "renderdoc-modified-6";
|
||||||
sha256 = "0ihrxbx56p5wn589fbbsns93fp91sypqdzfxdy7l7v9sf69a41mw";
|
sha256 = "00ykqlzx1k9iwqjlc54kfch7cnzsj53hxn7ql70dj3rxqzrnadc0";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "1.1";
|
version = "1.2";
|
||||||
name = "renderdoc-${version}";
|
name = "renderdoc-${version}";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "baldurk";
|
owner = "baldurk";
|
||||||
repo = "renderdoc";
|
repo = "renderdoc";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0kb9m1dm0mnglqyh1srvl0f1bgjghxzbqarn0xfqw49wphqwhmcd";
|
sha256 = "0s1q5d58x18yz3nf94pv5i1qd2hc0a4gdj4qkpcn8s6ms2x05pz4";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
diff --git a/src/akonadicontrol/agentmanager.cpp b/src/akonadicontrol/agentmanager.cpp
|
diff --git a/src/akonadicontrol/agentmanager.cpp b/src/akonadicontrol/agentmanager.cpp
|
||||||
index 2e9f1acf4..ecc80afdc 100644
|
index d85c1a79b..8df02710c 100644
|
||||||
--- a/src/akonadicontrol/agentmanager.cpp
|
--- a/src/akonadicontrol/agentmanager.cpp
|
||||||
+++ b/src/akonadicontrol/agentmanager.cpp
|
+++ b/src/akonadicontrol/agentmanager.cpp
|
||||||
@@ -84,12 +84,12 @@ AgentManager::AgentManager(bool verbose, QObject *parent)
|
@@ -78,12 +78,12 @@ AgentManager::AgentManager(bool verbose, QObject *parent)
|
||||||
mStorageController = new Akonadi::ProcessControl;
|
mStorageController = new Akonadi::ProcessControl;
|
||||||
mStorageController->setShutdownTimeout(15 * 1000); // the server needs more time for shutdown if we are using an internal mysqld
|
mStorageController->setShutdownTimeout(15 * 1000); // the server needs more time for shutdown if we are using an internal mysqld
|
||||||
connect(mStorageController, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::serverFailure);
|
connect(mStorageController, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::serverFailure);
|
||||||
@ -15,8 +15,8 @@ index 2e9f1acf4..ecc80afdc 100644
|
|||||||
- mAgentServer->start(QStringLiteral("akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
|
- mAgentServer->start(QStringLiteral("akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
|
||||||
+ mAgentServer->start(QLatin1String(NIX_OUT "/bin/akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
|
+ mAgentServer->start(QLatin1String(NIX_OUT "/bin/akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef QT_NO_DEBUG
|
|
||||||
diff --git a/src/akonadicontrol/agentprocessinstance.cpp b/src/akonadicontrol/agentprocessinstance.cpp
|
diff --git a/src/akonadicontrol/agentprocessinstance.cpp b/src/akonadicontrol/agentprocessinstance.cpp
|
||||||
index be1cc4afb..6d0c1d7e5 100644
|
index be1cc4afb..6d0c1d7e5 100644
|
||||||
--- a/src/akonadicontrol/agentprocessinstance.cpp
|
--- a/src/akonadicontrol/agentprocessinstance.cpp
|
||||||
@ -31,7 +31,7 @@ index be1cc4afb..6d0c1d7e5 100644
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
diff --git a/src/server/storage/dbconfigmysql.cpp b/src/server/storage/dbconfigmysql.cpp
|
diff --git a/src/server/storage/dbconfigmysql.cpp b/src/server/storage/dbconfigmysql.cpp
|
||||||
index a32e86602..48ea4e52e 100644
|
index 8b057b459..3fa4548ad 100644
|
||||||
--- a/src/server/storage/dbconfigmysql.cpp
|
--- a/src/server/storage/dbconfigmysql.cpp
|
||||||
+++ b/src/server/storage/dbconfigmysql.cpp
|
+++ b/src/server/storage/dbconfigmysql.cpp
|
||||||
@@ -63,7 +63,6 @@ bool DbConfigMysql::init(QSettings &settings)
|
@@ -63,7 +63,6 @@ bool DbConfigMysql::init(QSettings &settings)
|
||||||
@ -121,7 +121,7 @@ index a32e86602..48ea4e52e 100644
|
|||||||
const QString actualConfig = StandardDirs::saveDir("data") + QLatin1String("/mysql.conf");
|
const QString actualConfig = StandardDirs::saveDir("data") + QLatin1String("/mysql.conf");
|
||||||
if (globalConfig.isEmpty()) {
|
if (globalConfig.isEmpty()) {
|
||||||
diff --git a/src/server/storage/dbconfigpostgresql.cpp b/src/server/storage/dbconfigpostgresql.cpp
|
diff --git a/src/server/storage/dbconfigpostgresql.cpp b/src/server/storage/dbconfigpostgresql.cpp
|
||||||
index 60e6272f2..ad7cefbfe 100644
|
index 6b50ae50e..f94a8c5eb 100644
|
||||||
--- a/src/server/storage/dbconfigpostgresql.cpp
|
--- a/src/server/storage/dbconfigpostgresql.cpp
|
||||||
+++ b/src/server/storage/dbconfigpostgresql.cpp
|
+++ b/src/server/storage/dbconfigpostgresql.cpp
|
||||||
@@ -58,7 +58,6 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
@@ -58,7 +58,6 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
||||||
@ -132,7 +132,7 @@ index 60e6272f2..ad7cefbfe 100644
|
|||||||
QString defaultInitDbPath;
|
QString defaultInitDbPath;
|
||||||
QString defaultPgData;
|
QString defaultPgData;
|
||||||
|
|
||||||
@@ -70,34 +69,7 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
@@ -70,35 +69,7 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
||||||
|
|
||||||
mInternalServer = settings.value(QStringLiteral("QPSQL/StartServer"), defaultInternalServer).toBool();
|
mInternalServer = settings.value(QStringLiteral("QPSQL/StartServer"), defaultInternalServer).toBool();
|
||||||
if (mInternalServer) {
|
if (mInternalServer) {
|
||||||
@ -144,7 +144,8 @@ index 60e6272f2..ad7cefbfe 100644
|
|||||||
- postgresSearchPath << QStringLiteral(POSTGRES_PATH);
|
- postgresSearchPath << QStringLiteral(POSTGRES_PATH);
|
||||||
- }
|
- }
|
||||||
-#endif
|
-#endif
|
||||||
- postgresSearchPath << QStringLiteral("/usr/sbin")
|
- postgresSearchPath << QStringLiteral("/usr/bin")
|
||||||
|
- << QStringLiteral("/usr/sbin")
|
||||||
- << QStringLiteral("/usr/local/sbin");
|
- << QStringLiteral("/usr/local/sbin");
|
||||||
- // Locale all versions in /usr/lib/postgresql (i.e. /usr/lib/postgresql/X.Y) in reversed
|
- // Locale all versions in /usr/lib/postgresql (i.e. /usr/lib/postgresql/X.Y) in reversed
|
||||||
- // sorted order, so we search from the newest one to the oldest.
|
- // sorted order, so we search from the newest one to the oldest.
|
||||||
@ -168,7 +169,7 @@ index 60e6272f2..ad7cefbfe 100644
|
|||||||
defaultHostName = Utils::preferredSocketDirectory(StandardDirs::saveDir("data", QStringLiteral("db_misc")));
|
defaultHostName = Utils::preferredSocketDirectory(StandardDirs::saveDir("data", QStringLiteral("db_misc")));
|
||||||
defaultPgData = StandardDirs::saveDir("data", QStringLiteral("db_data"));
|
defaultPgData = StandardDirs::saveDir("data", QStringLiteral("db_data"));
|
||||||
}
|
}
|
||||||
@@ -117,10 +89,7 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
@@ -118,10 +89,7 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
||||||
mUserName = settings.value(QStringLiteral("User")).toString();
|
mUserName = settings.value(QStringLiteral("User")).toString();
|
||||||
mPassword = settings.value(QStringLiteral("Password")).toString();
|
mPassword = settings.value(QStringLiteral("Password")).toString();
|
||||||
mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString();
|
mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString();
|
||||||
@ -180,7 +181,7 @@ index 60e6272f2..ad7cefbfe 100644
|
|||||||
qCDebug(AKONADISERVER_LOG) << "Found pg_ctl:" << mServerPath;
|
qCDebug(AKONADISERVER_LOG) << "Found pg_ctl:" << mServerPath;
|
||||||
mInitDbPath = settings.value(QStringLiteral("InitDbPath"), defaultInitDbPath).toString();
|
mInitDbPath = settings.value(QStringLiteral("InitDbPath"), defaultInitDbPath).toString();
|
||||||
if (mInternalServer && mInitDbPath.isEmpty()) {
|
if (mInternalServer && mInitDbPath.isEmpty()) {
|
||||||
@@ -141,7 +110,6 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
@@ -142,7 +110,6 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
||||||
settings.setValue(QStringLiteral("Port"), mHostPort);
|
settings.setValue(QStringLiteral("Port"), mHostPort);
|
||||||
}
|
}
|
||||||
settings.setValue(QStringLiteral("Options"), mConnectionOptions);
|
settings.setValue(QStringLiteral("Options"), mConnectionOptions);
|
||||||
|
@ -165,7 +165,6 @@ let
|
|||||||
pim-sieve-editor = callPackage ./pim-sieve-editor.nix {};
|
pim-sieve-editor = callPackage ./pim-sieve-editor.nix {};
|
||||||
print-manager = callPackage ./print-manager.nix {};
|
print-manager = callPackage ./print-manager.nix {};
|
||||||
spectacle = callPackage ./spectacle.nix {};
|
spectacle = callPackage ./spectacle.nix {};
|
||||||
syndication = callPackage ./syndication.nix {};
|
|
||||||
# Okteta was removed from kde applications and will now be released independently
|
# Okteta was removed from kde applications and will now be released independently
|
||||||
# Lets keep an alias for compatibility reasons
|
# Lets keep an alias for compatibility reasons
|
||||||
inherit okteta;
|
inherit okteta;
|
||||||
|
@ -1 +1 @@
|
|||||||
WGET_ARGS=( https://download.kde.org/stable/applications/18.08.1/ -A '*.tar.xz' )
|
WGET_ARGS=( https://download.kde.org/stable/applications/18.12.0/ -A '*.tar.xz' )
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
akonadi, akonadi-calendar, akonadi-contacts, akonadi-mime, akonadi-notes,
|
akonadi, akonadi-calendar, akonadi-contacts, akonadi-mime, akonadi-notes,
|
||||||
kalarmcal, kcalutils, kcontacts, kdav, kdelibs4support, kidentitymanagement,
|
kalarmcal, kcalutils, kcontacts, kdav, kdelibs4support, kidentitymanagement,
|
||||||
kimap, kmailtransport, kmbox, kmime, knotifications, knotifyconfig,
|
kimap, kmailtransport, kmbox, kmime, knotifications, knotifyconfig,
|
||||||
pimcommon, qtwebengine, libkgapi
|
pimcommon, qtwebengine, libkgapi, qtspeech
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
@ -19,7 +19,7 @@ mkDerivation {
|
|||||||
akonadi akonadi-calendar akonadi-contacts akonadi-mime akonadi-notes
|
akonadi akonadi-calendar akonadi-contacts akonadi-mime akonadi-notes
|
||||||
kalarmcal kcalutils kcontacts kdav kdelibs4support kidentitymanagement kimap
|
kalarmcal kcalutils kcontacts kdav kdelibs4support kidentitymanagement kimap
|
||||||
kmailtransport kmbox kmime knotifications knotifyconfig qtwebengine
|
kmailtransport kmbox kmime knotifications knotifyconfig qtwebengine
|
||||||
pimcommon libkgapi
|
pimcommon libkgapi qtspeech
|
||||||
];
|
];
|
||||||
# Attempts to build some files before dependencies have been generated
|
# Attempts to build some files before dependencies have been generated
|
||||||
enableParallelBuilding = false;
|
enableParallelBuilding = false;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
mkDerivation, lib, kdepimTeam,
|
mkDerivation, lib, kdepimTeam,
|
||||||
extra-cmake-modules, kdoctools,
|
extra-cmake-modules, kdoctools,
|
||||||
kmime, qtbase,
|
kmime, qtbase, kcodecs
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
@ -11,6 +11,6 @@ mkDerivation {
|
|||||||
maintainers = kdepimTeam;
|
maintainers = kdepimTeam;
|
||||||
};
|
};
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
buildInputs = [ kmime qtbase ];
|
buildInputs = [ kmime qtbase kcodecs ];
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,8 @@
|
|||||||
mkDerivation, lib, kdepimTeam,
|
mkDerivation, lib, kdepimTeam,
|
||||||
extra-cmake-modules, kdoctools,
|
extra-cmake-modules, kdoctools,
|
||||||
grantlee, kcodecs, kconfigwidgets, kemoticons, ki18n, kiconthemes, kio,
|
grantlee, kcodecs, kconfigwidgets, kemoticons, ki18n, kiconthemes, kio,
|
||||||
kdesignerplugin, ktextwidgets, sonnet, syntax-highlighting, qttools,
|
kdesignerplugin, ktextwidgets, sonnet, syntax-highlighting, qttools,
|
||||||
|
qtspeech
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
@ -14,7 +15,7 @@ mkDerivation {
|
|||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
grantlee kcodecs kconfigwidgets kemoticons ki18n kiconthemes kio kdesignerplugin
|
grantlee kcodecs kconfigwidgets kemoticons ki18n kiconthemes kio kdesignerplugin
|
||||||
sonnet syntax-highlighting qttools
|
sonnet syntax-highlighting qttools qtspeech
|
||||||
];
|
];
|
||||||
propagatedBuildInputs = [ ktextwidgets ];
|
propagatedBuildInputs = [ ktextwidgets ];
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
mkDerivation, lib, kdepimTeam,
|
|
||||||
extra-cmake-modules, kdoctools,
|
|
||||||
kio
|
|
||||||
}:
|
|
||||||
|
|
||||||
mkDerivation {
|
|
||||||
name = "syndication";
|
|
||||||
meta = {
|
|
||||||
license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
|
|
||||||
maintainers = kdepimTeam;
|
|
||||||
};
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
|
||||||
propagatedBuildInputs = [ kio ];
|
|
||||||
outputs = [ "out" "dev" ];
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
{ stdenv, go, fetchFromGitHub }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
name = "acbuild-${version}";
|
|
||||||
version = "0.4.0";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "appc";
|
|
||||||
repo = "acbuild";
|
|
||||||
rev = "v${version}";
|
|
||||||
sha256 = "0s81xlaw75d05b4cidxml978hnxak8parwpnk9clanwqjbj66c7x";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = [ go ];
|
|
||||||
|
|
||||||
patchPhase = ''
|
|
||||||
sed -i -e 's|\git describe --dirty|echo "${version}"|' build
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
patchShebangs build
|
|
||||||
./build
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
mv bin $out
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
description = "A build tool for ACIs";
|
|
||||||
homepage = https://github.com/appc/acbuild;
|
|
||||||
license = licenses.asl20;
|
|
||||||
maintainers = with maintainers; [ dgonyeo ];
|
|
||||||
platforms = platforms.linux;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
{ stdenv, fetchFromGitHub, qtbase, qtquick1, qmltermwidget,
|
{ stdenv, fetchFromGitHub, qtbase, qtquick1, qmltermwidget
|
||||||
qtquickcontrols, qtgraphicaleffects, qmake }:
|
, qtquickcontrols, qtgraphicaleffects, qmake }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "1.0.1";
|
version = "1.0.1";
|
||||||
@ -25,6 +25,8 @@ stdenv.mkDerivation rec {
|
|||||||
mv $out/usr/share $out/share
|
mv $out/usr/share $out/share
|
||||||
mv $out/usr/bin $out/bin
|
mv $out/usr/bin $out/bin
|
||||||
rmdir $out/usr
|
rmdir $out/usr
|
||||||
|
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
||||||
|
ln -s $out/bin/cool-retro-term.app/Contents/MacOS/cool-retro-term $out/bin/cool-retro-term
|
||||||
'';
|
'';
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
@ -37,8 +39,8 @@ stdenv.mkDerivation rec {
|
|||||||
eye-candy, customizable, and reasonably lightweight.
|
eye-candy, customizable, and reasonably lightweight.
|
||||||
'';
|
'';
|
||||||
homepage = https://github.com/Swordfish90/cool-retro-term;
|
homepage = https://github.com/Swordfish90/cool-retro-term;
|
||||||
license = with stdenv.lib.licenses; [ gpl2 gpl3 ];
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = with stdenv.lib.platforms; linux ++ darwin;
|
||||||
maintainers = with stdenv.lib.maintainers; [ skeidel ];
|
maintainers = with stdenv.lib.maintainers; [ skeidel ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "CopyQ-${version}";
|
name = "CopyQ-${version}";
|
||||||
version = "3.7.0";
|
version = "3.7.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "hluk";
|
owner = "hluk";
|
||||||
repo = "CopyQ";
|
repo = "CopyQ";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1dm02l1ry7ndn283774nzmg89wy1933f4iyf6n02p152zgx4llyf";
|
sha256 = "0b3lrhrffvq46n9xc0lzbxhhn1lzmq2lrijjdwizc52458d6h90y";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "dbeaver-ce-${version}";
|
name = "dbeaver-ce-${version}";
|
||||||
version = "5.2.5";
|
version = "5.3.0";
|
||||||
|
|
||||||
desktopItem = makeDesktopItem {
|
desktopItem = makeDesktopItem {
|
||||||
name = "dbeaver";
|
name = "dbeaver";
|
||||||
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
|
url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
|
||||||
sha256 = "0xjggjq2brhi9x3i4d7hqfi18cd8czs6rzvihvspfxaqilsai0dm";
|
sha256 = "1gn52bffjn2fw9yhi1rv4iy9dfdn5qxc51gv6qri5g0c8pblvh7m";
|
||||||
};
|
};
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
@ -7,14 +7,14 @@ let
|
|||||||
in
|
in
|
||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
version = "3.3.1";
|
version = "3.3.2";
|
||||||
name = "electron-cash-${version}";
|
name = "electron-cash-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://electroncash.org/downloads/${version}/win-linux/ElectronCash-${version}.tar.gz";
|
url = "https://electroncash.org/downloads/${version}/win-linux/ElectronCash-${version}.tar.gz";
|
||||||
# Verified using official SHA-1 and signature from
|
# Verified using official SHA-1 and signature from
|
||||||
# https://github.com/fyookball/keys-n-hashes
|
# https://github.com/fyookball/keys-n-hashes
|
||||||
sha256 = "1jdy89rfdwc2jadx3rqj5yvynpcn90cx6482ax9f1cj9gfxp9j2b";
|
sha256 = "4538044cfaa4f87a847635849e0733f32b183ac79abbd2797689c86dc3cb0d53";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = with python3Packages; [
|
propagatedBuildInputs = with python3Packages; [
|
||||||
@ -29,7 +29,7 @@ python3Packages.buildPythonApplication rec {
|
|||||||
pysocks
|
pysocks
|
||||||
qrcode
|
qrcode
|
||||||
requests
|
requests
|
||||||
tlslite
|
tlslite-ng
|
||||||
|
|
||||||
# plugins
|
# plugins
|
||||||
keepkey
|
keepkey
|
||||||
|
@ -22,7 +22,7 @@ python2Packages.buildPythonApplication rec {
|
|||||||
qrcode
|
qrcode
|
||||||
requests
|
requests
|
||||||
pyaes
|
pyaes
|
||||||
tlslite
|
tlslite-ng
|
||||||
x11_hash
|
x11_hash
|
||||||
mnemonic
|
mnemonic
|
||||||
jsonrpclib
|
jsonrpclib
|
||||||
|
@ -35,7 +35,7 @@ python3Packages.buildPythonApplication rec {
|
|||||||
qdarkstyle
|
qdarkstyle
|
||||||
qrcode
|
qrcode
|
||||||
requests
|
requests
|
||||||
tlslite
|
tlslite-ng
|
||||||
typing
|
typing
|
||||||
|
|
||||||
# plugins
|
# plugins
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user