Merge branch 'staging' into cpan2nix-2020-06-20
This commit is contained in:
commit
d6c5614def
3
.github/CODEOWNERS
vendored
3
.github/CODEOWNERS
vendored
@ -193,3 +193,6 @@
|
|||||||
/nixos/modules/virtualisation/cri-o.nix @NixOS/podman
|
/nixos/modules/virtualisation/cri-o.nix @NixOS/podman
|
||||||
/nixos/modules/virtualisation/podman.nix @NixOS/podman
|
/nixos/modules/virtualisation/podman.nix @NixOS/podman
|
||||||
/nixos/tests/podman.nix @NixOS/podman
|
/nixos/tests/podman.nix @NixOS/podman
|
||||||
|
|
||||||
|
# Blockchains
|
||||||
|
/pkgs/applications/blockchains @mmahut
|
||||||
|
@ -34,6 +34,7 @@ the main ones:
|
|||||||
|
|
||||||
* [Nix](https://github.com/NixOS/nix) - the purely functional package manager
|
* [Nix](https://github.com/NixOS/nix) - the purely functional package manager
|
||||||
* [NixOps](https://github.com/NixOS/nixops) - the tool to remotely deploy NixOS machines
|
* [NixOps](https://github.com/NixOS/nixops) - the tool to remotely deploy NixOS machines
|
||||||
|
* [nixos-hardware](https://github.com/NixOS/nixos-hardware) - NixOS profiles to optimize settings for different hardware
|
||||||
* [Nix RFCs](https://github.com/NixOS/rfcs) - the formal process for making substantial changes to the community
|
* [Nix RFCs](https://github.com/NixOS/rfcs) - the formal process for making substantial changes to the community
|
||||||
* [NixOS homepage](https://github.com/NixOS/nixos-homepage) - the [NixOS.org](https://nixos.org) website
|
* [NixOS homepage](https://github.com/NixOS/nixos-homepage) - the [NixOS.org](https://nixos.org) website
|
||||||
* [hydra](https://github.com/NixOS/hydra) - our continuous integration system
|
* [hydra](https://github.com/NixOS/hydra) - our continuous integration system
|
||||||
|
@ -2018,6 +2018,9 @@ addEnvHooks "$hostOffset" myBashFunction
|
|||||||
<para>
|
<para>
|
||||||
In certain situations you may want to run the main command (<command>autoPatchelf</command>) of the setup hook on a file or a set of directories instead of unconditionally patching all outputs. This can be done by setting the <varname>dontAutoPatchelf</varname> environment variable to a non-empty value.
|
In certain situations you may want to run the main command (<command>autoPatchelf</command>) of the setup hook on a file or a set of directories instead of unconditionally patching all outputs. This can be done by setting the <varname>dontAutoPatchelf</varname> environment variable to a non-empty value.
|
||||||
</para>
|
</para>
|
||||||
|
<para>
|
||||||
|
By default <command>autoPatchelf</command> will fail as soon as any ELF file requires a dependency which cannot be resolved via the given build inputs. In some situations you might prefer to just leave missing dependencies unpatched and continue to patch the rest. This can be achieved by setting the <envar>autoPatchelfIgnoreMissingDeps</envar> environment variable to a non-empty value.
|
||||||
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The <command>autoPatchelf</command> command also recognizes a <parameter class="command">--no-recurse</parameter> command line flag, which prevents it from recursing into subdirectories.
|
The <command>autoPatchelf</command> command also recognizes a <parameter class="command">--no-recurse</parameter> command line flag, which prevents it from recursing into subdirectories.
|
||||||
</para>
|
</para>
|
||||||
|
@ -139,6 +139,12 @@
|
|||||||
githubId = 1517066;
|
githubId = 1517066;
|
||||||
name = "Aiken Cairncross";
|
name = "Aiken Cairncross";
|
||||||
};
|
};
|
||||||
|
aciceri = {
|
||||||
|
name = "Andrea Ciceri";
|
||||||
|
email = "andrea.ciceri@autistici.org";
|
||||||
|
github = "aciceri";
|
||||||
|
githubId = 2318843;
|
||||||
|
};
|
||||||
acowley = {
|
acowley = {
|
||||||
email = "acowley@gmail.com";
|
email = "acowley@gmail.com";
|
||||||
github = "acowley";
|
github = "acowley";
|
||||||
@ -3530,6 +3536,12 @@
|
|||||||
githubId = 117874;
|
githubId = 117874;
|
||||||
name = "Jeroen de Haas";
|
name = "Jeroen de Haas";
|
||||||
};
|
};
|
||||||
|
jduan = {
|
||||||
|
name = "Jingjing Duan";
|
||||||
|
email = "duanjingjing@gmail.com";
|
||||||
|
github = "jduan";
|
||||||
|
githubId = 452450;
|
||||||
|
};
|
||||||
jefdaj = {
|
jefdaj = {
|
||||||
email = "jefdaj@gmail.com";
|
email = "jefdaj@gmail.com";
|
||||||
github = "jefdaj";
|
github = "jefdaj";
|
||||||
@ -3692,6 +3704,12 @@
|
|||||||
githubId = 1102396;
|
githubId = 1102396;
|
||||||
name = "Jussi Maki";
|
name = "Jussi Maki";
|
||||||
};
|
};
|
||||||
|
jobojeha = {
|
||||||
|
email = "jobojeha@jeppener.de";
|
||||||
|
github = "jobojeha";
|
||||||
|
githubId = 60272884;
|
||||||
|
name = "Jonathan Jeppener-Haltenhoff";
|
||||||
|
};
|
||||||
joelburget = {
|
joelburget = {
|
||||||
email = "joelburget@gmail.com";
|
email = "joelburget@gmail.com";
|
||||||
github = "joelburget";
|
github = "joelburget";
|
||||||
@ -7248,6 +7266,16 @@
|
|||||||
githubId = 2770647;
|
githubId = 2770647;
|
||||||
name = "Simon Vandel Sillesen";
|
name = "Simon Vandel Sillesen";
|
||||||
};
|
};
|
||||||
|
siriobalmelli = {
|
||||||
|
email = "sirio@b-ad.ch";
|
||||||
|
github = "siriobalmelli";
|
||||||
|
githubId = 23038812;
|
||||||
|
name = "Sirio Balmelli";
|
||||||
|
keys = [{
|
||||||
|
longkeyid = "ed25519/0xF72C4A887F9A24CA";
|
||||||
|
fingerprint = "B234 EFD4 2B42 FE81 EE4D 7627 F72C 4A88 7F9A 24CA";
|
||||||
|
}];
|
||||||
|
};
|
||||||
sivteck = {
|
sivteck = {
|
||||||
email = "sivaram1992@gmail.com";
|
email = "sivaram1992@gmail.com";
|
||||||
github = "sivteck";
|
github = "sivteck";
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Download patches from debian project
|
# Download patches from debian project
|
||||||
# Usage $0 debian-patches.txt debian-patches.nix
|
# Usage $0 debian-patches.txt debian-patches.nix
|
||||||
# An example input and output files can be found in applications/graphics/xara/
|
# An example input and output files can be found in tools/graphics/plotutils
|
||||||
|
|
||||||
DEB_URL=https://sources.debian.org/data/main
|
DEB_URL=https://sources.debian.org/data/main
|
||||||
declare -a deb_patches
|
declare -a deb_patches
|
||||||
|
@ -40,6 +40,7 @@ with lib.maintainers; {
|
|||||||
cstrahan
|
cstrahan
|
||||||
Frostman
|
Frostman
|
||||||
kalbasit
|
kalbasit
|
||||||
|
mdlayher
|
||||||
mic92
|
mic92
|
||||||
orivej
|
orivej
|
||||||
rvolosatovs
|
rvolosatovs
|
||||||
|
@ -96,6 +96,47 @@
|
|||||||
The options are named identically for all other display managers.
|
The options are named identically for all other display managers.
|
||||||
</para>
|
</para>
|
||||||
</simplesect>
|
</simplesect>
|
||||||
|
<simplesect xml:id="sec-x11--graphics-cards-intel">
|
||||||
|
<title>Intel Graphics drivers</title>
|
||||||
|
<para>
|
||||||
|
There are two choices for Intel Graphics drivers in X.org:
|
||||||
|
<literal>modesetting</literal> (included in the <package>xorg-server</package> itself)
|
||||||
|
and <literal>intel</literal> (provided by the package <package>xf86-video-intel</package>).
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The default and recommended is <literal>modesetting</literal>.
|
||||||
|
It is a generic driver which uses the kernel
|
||||||
|
<link xlink:href="https://en.wikipedia.org/wiki/Mode_setting">mode setting</link>
|
||||||
|
(KMS) mechanism. It supports Glamor (2D graphics acceleration via OpenGL)
|
||||||
|
and is actively maintained but may perform worse in some cases (like in old chipsets).
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The second driver, <literal>intel</literal>, is specific to Intel GPUs,
|
||||||
|
but not recommended by most distributions: it lacks several modern features
|
||||||
|
(for example, it doesn't support Glamor) and the package hasn't been officially
|
||||||
|
updated since 2015.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The results vary depending on the hardware, so you may have to try both drivers.
|
||||||
|
Use the option <xref linkend="opt-services.xserver.videoDrivers"/> to set one.
|
||||||
|
The recommended configuration for modern systems is:
|
||||||
|
<programlisting>
|
||||||
|
<xref linkend="opt-services.xserver.videoDrivers"/> = [ "modesetting" ];
|
||||||
|
<xref linkend="opt-services.xserver.useGlamor"/> = true;
|
||||||
|
</programlisting>
|
||||||
|
If you experience screen tearing no matter what, this configuration was
|
||||||
|
reported to resolve the issue:
|
||||||
|
<programlisting>
|
||||||
|
<xref linkend="opt-services.xserver.videoDrivers"/> = [ "intel" ];
|
||||||
|
<xref linkend="opt-services.xserver.deviceSection"/> = ''
|
||||||
|
Option "DRI" "2"
|
||||||
|
Option "TearFree" "true"
|
||||||
|
'';
|
||||||
|
</programlisting>
|
||||||
|
Note that this will likely downgrade the performance compared to
|
||||||
|
<literal>modesetting</literal> or <literal>intel</literal> with DRI 3 (default).
|
||||||
|
</para>
|
||||||
|
</simplesect>
|
||||||
<simplesect xml:id="sec-x11-graphics-cards-nvidia">
|
<simplesect xml:id="sec-x11-graphics-cards-nvidia">
|
||||||
<title>Proprietary NVIDIA drivers</title>
|
<title>Proprietary NVIDIA drivers</title>
|
||||||
<para>
|
<para>
|
||||||
|
@ -499,6 +499,11 @@ systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ];
|
|||||||
<link xlink:href="https://github.com/NixOS/nixpkgs/issues/89205">#89205</link>.
|
<link xlink:href="https://github.com/NixOS/nixpkgs/issues/89205">#89205</link>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
In the <literal>resilio</literal> module, <xref linkend="opt-services.resilio.httpListenAddr"/> has been changed to listen to <literal>[::1]</literal> instead of <literal>0.0.0.0</literal>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@ -651,6 +656,16 @@ systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ];
|
|||||||
<package>netbeans</package> was upgraded to 12.0 and now defaults to OpenJDK 11. This might cause problems if your projects depend on packages that were removed in Java 11.
|
<package>netbeans</package> was upgraded to 12.0 and now defaults to OpenJDK 11. This might cause problems if your projects depend on packages that were removed in Java 11.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<package>nextcloud</package> has been updated to <link xlink:href="https://nextcloud.com/blog/nextcloud-hub-brings-productivity-to-home-office/">v19</link>.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
If you have an existing installation, please make sure that you're on
|
||||||
|
<package>nextcloud18</package> before upgrading to <package>nextcloud19</package>
|
||||||
|
since Nextcloud doesn't support upgrades across multiple major versions.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
@ -43,7 +43,7 @@ pkgs.stdenv.mkDerivation {
|
|||||||
# Make a crude approximation of the size of the target image.
|
# Make a crude approximation of the size of the target image.
|
||||||
# If the script starts failing, increase the fudge factors here.
|
# If the script starts failing, increase the fudge factors here.
|
||||||
numInodes=$(find $storePaths ./files | wc -l)
|
numInodes=$(find $storePaths ./files | wc -l)
|
||||||
numDataBlocks=$(du -s -c -B 4096 --apparent-size $storePaths ./files | tail -1 | awk '{ print int($1 * 1.03) }')
|
numDataBlocks=$(du -s -c -B 4096 --apparent-size $storePaths ./files | tail -1 | awk '{ print int($1 * 1.10) }')
|
||||||
bytes=$((2 * 4096 * $numInodes + 4096 * $numDataBlocks))
|
bytes=$((2 * 4096 * $numInodes + 4096 * $numDataBlocks))
|
||||||
echo "Creating an EXT4 image of $bytes bytes (numInodes=$numInodes, numDataBlocks=$numDataBlocks)"
|
echo "Creating an EXT4 image of $bytes bytes (numInodes=$numInodes, numDataBlocks=$numDataBlocks)"
|
||||||
|
|
||||||
|
@ -626,7 +626,7 @@ in {
|
|||||||
then
|
then
|
||||||
''
|
''
|
||||||
The password hash of user "${name}" may be invalid. You must set a
|
The password hash of user "${name}" may be invalid. You must set a
|
||||||
valid hash or the user will be locked out of his account. Please
|
valid hash or the user will be locked out of their account. Please
|
||||||
check the value of option `users.users."${name}".hashedPassword`.
|
check the value of option `users.users."${name}".hashedPassword`.
|
||||||
''
|
''
|
||||||
else null
|
else null
|
||||||
|
@ -22,11 +22,22 @@ in {
|
|||||||
example = literalExample "pkgs.device-tree_rpi";
|
example = literalExample "pkgs.device-tree_rpi";
|
||||||
type = types.path;
|
type = types.path;
|
||||||
description = ''
|
description = ''
|
||||||
The package containing the base device-tree (.dtb) to boot. Contains
|
The path containing the base device-tree (.dtb) to boot. Contains
|
||||||
device trees bundled with the Linux kernel by default.
|
device trees bundled with the Linux kernel by default.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
name = mkOption {
|
||||||
|
default = null;
|
||||||
|
example = "some-dtb.dtb";
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
description = ''
|
||||||
|
The name of an explicit dtb to be loaded, relative to the dtb base.
|
||||||
|
Useful in extlinux scenarios if the bootloader doesn't pick the
|
||||||
|
right .dtb file from FDTDIR.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
overlays = mkOption {
|
overlays = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
example = literalExample
|
example = literalExample
|
||||||
|
@ -84,7 +84,7 @@ in {
|
|||||||
model = mkOption {
|
model = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = literalExample ''
|
example = literalExample ''
|
||||||
gutenprint.''${lib.version.majorMinor (lib.getVersion pkgs.cups)}://brother-hl-5140/expert
|
gutenprint.''${lib.versions.majorMinor (lib.getVersion pkgs.gutenprint)}://brother-hl-5140/expert
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = ''
|
||||||
Location of the ppd driver file for the printer.
|
Location of the ppd driver file for the printer.
|
||||||
|
@ -2,12 +2,6 @@
|
|||||||
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-aarch64.nix -A config.system.build.sdImage
|
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-aarch64.nix -A config.system.build.sdImage
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
|
||||||
extlinux-conf-builder =
|
|
||||||
import ../../system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix {
|
|
||||||
pkgs = pkgs.buildPackages;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../profiles/base.nix
|
../../profiles/base.nix
|
||||||
@ -56,7 +50,7 @@ in
|
|||||||
'';
|
'';
|
||||||
populateRootCommands = ''
|
populateRootCommands = ''
|
||||||
mkdir -p ./files/boot
|
mkdir -p ./files/boot
|
||||||
${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./files/boot
|
${config.boot.loader.generic-extlinux-compatible.populateCmd} -c ${config.system.build.toplevel} -d ./files/boot
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2,12 +2,6 @@
|
|||||||
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix -A config.system.build.sdImage
|
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix -A config.system.build.sdImage
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
|
||||||
extlinux-conf-builder =
|
|
||||||
import ../../system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix {
|
|
||||||
pkgs = pkgs.buildPackages;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../profiles/base.nix
|
../../profiles/base.nix
|
||||||
@ -53,7 +47,7 @@ in
|
|||||||
'';
|
'';
|
||||||
populateRootCommands = ''
|
populateRootCommands = ''
|
||||||
mkdir -p ./files/boot
|
mkdir -p ./files/boot
|
||||||
${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./files/boot
|
${config.boot.loader.generic-extlinux-compatible.populateCmd} -c ${config.system.build.toplevel} -d ./files/boot
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2,12 +2,6 @@
|
|||||||
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix -A config.system.build.sdImage
|
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix -A config.system.build.sdImage
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
|
||||||
extlinux-conf-builder =
|
|
||||||
import ../../system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix {
|
|
||||||
pkgs = pkgs.buildPackages;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../profiles/base.nix
|
../../profiles/base.nix
|
||||||
@ -42,7 +36,7 @@ in
|
|||||||
'';
|
'';
|
||||||
populateRootCommands = ''
|
populateRootCommands = ''
|
||||||
mkdir -p ./files/boot
|
mkdir -p ./files/boot
|
||||||
${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./files/boot
|
${config.boot.loader.generic-extlinux-compatible.populateCmd} -c ${config.system.build.toplevel} -d ./files/boot
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
sdImage = {
|
sdImage = {
|
||||||
firmwareSize = 128;
|
firmwareSize = 128;
|
||||||
|
firmwarePartitionName = "NIXOS_BOOT";
|
||||||
# This is a hack to avoid replicating config.txt from boot.loader.raspberryPi
|
# This is a hack to avoid replicating config.txt from boot.loader.raspberryPi
|
||||||
populateFirmwareCommands =
|
populateFirmwareCommands =
|
||||||
"${config.system.build.installBootLoader} ${config.system.build.toplevel} -d ./firmware";
|
"${config.system.build.installBootLoader} ${config.system.build.toplevel} -d ./firmware";
|
||||||
@ -25,6 +26,12 @@
|
|||||||
populateRootCommands = "";
|
populateRootCommands = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot/firmware" = {
|
||||||
|
# This effectively "renames" the loaOf entry set in sd-image.nix
|
||||||
|
mountPoint = "/boot";
|
||||||
|
neededForBoot = true;
|
||||||
|
};
|
||||||
|
|
||||||
# the installation media is also the installation target,
|
# the installation media is also the installation target,
|
||||||
# so we don't want to provide the installation configuration.nix.
|
# so we don't want to provide the installation configuration.nix.
|
||||||
installer.cloneConfig = false;
|
installer.cloneConfig = false;
|
||||||
|
@ -63,6 +63,14 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
firmwarePartitionName = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "FIRMWARE";
|
||||||
|
description = ''
|
||||||
|
Name of the filesystem which holds the boot firmware.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
rootPartitionUUID = mkOption {
|
rootPartitionUUID = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
@ -91,7 +99,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
populateRootCommands = mkOption {
|
populateRootCommands = mkOption {
|
||||||
example = literalExample "''\${extlinux-conf-builder} -t 3 -c \${config.system.build.toplevel} -d ./files/boot''";
|
example = literalExample "''\${config.boot.loader.generic-extlinux-compatible.populateCmd} -c \${config.system.build.toplevel} -d ./files/boot''";
|
||||||
description = ''
|
description = ''
|
||||||
Shell commands to populate the ./files directory.
|
Shell commands to populate the ./files directory.
|
||||||
All files in that directory are copied to the
|
All files in that directory are copied to the
|
||||||
@ -114,7 +122,7 @@ in
|
|||||||
config = {
|
config = {
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
"/boot/firmware" = {
|
"/boot/firmware" = {
|
||||||
device = "/dev/disk/by-label/FIRMWARE";
|
device = "/dev/disk/by-label/${config.sdImage.firmwarePartitionName}";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
# Alternatively, this could be removed from the configuration.
|
# Alternatively, this could be removed from the configuration.
|
||||||
# The filesystem is not needed at runtime, it could be treated
|
# The filesystem is not needed at runtime, it could be treated
|
||||||
@ -178,7 +186,7 @@ in
|
|||||||
# Create a FAT32 /boot/firmware partition of suitable size into firmware_part.img
|
# Create a FAT32 /boot/firmware partition of suitable size into firmware_part.img
|
||||||
eval $(partx $img -o START,SECTORS --nr 1 --pairs)
|
eval $(partx $img -o START,SECTORS --nr 1 --pairs)
|
||||||
truncate -s $((SECTORS * 512)) firmware_part.img
|
truncate -s $((SECTORS * 512)) firmware_part.img
|
||||||
faketime "1970-01-01 00:00:00" mkfs.vfat -i ${config.sdImage.firmwarePartitionID} -n FIRMWARE firmware_part.img
|
faketime "1970-01-01 00:00:00" mkfs.vfat -i ${config.sdImage.firmwarePartitionID} -n ${config.sdImage.firmwarePartitionName} firmware_part.img
|
||||||
|
|
||||||
# Populate the files intended for /boot/firmware
|
# Populate the files intended for /boot/firmware
|
||||||
mkdir firmware
|
mkdir firmware
|
||||||
|
@ -628,6 +628,7 @@ EOF
|
|||||||
write_file($fn, <<EOF);
|
write_file($fn, <<EOF);
|
||||||
@configuration@
|
@configuration@
|
||||||
EOF
|
EOF
|
||||||
|
print STDERR "For more hardware-specific settings, see https://github.com/NixOS/nixos-hardware"
|
||||||
} else {
|
} else {
|
||||||
print STDERR "warning: not overwriting existing $fn\n";
|
print STDERR "warning: not overwriting existing $fn\n";
|
||||||
}
|
}
|
||||||
|
@ -757,6 +757,7 @@
|
|||||||
./services/networking/v2ray.nix
|
./services/networking/v2ray.nix
|
||||||
./services/networking/vsftpd.nix
|
./services/networking/vsftpd.nix
|
||||||
./services/networking/wakeonlan.nix
|
./services/networking/wakeonlan.nix
|
||||||
|
./services/networking/wasabibackend.nix
|
||||||
./services/networking/websockify.nix
|
./services/networking/websockify.nix
|
||||||
./services/networking/wg-quick.nix
|
./services/networking/wg-quick.nix
|
||||||
./services/networking/wicd.nix
|
./services/networking/wicd.nix
|
||||||
@ -830,6 +831,7 @@
|
|||||||
./services/web-apps/atlassian/crowd.nix
|
./services/web-apps/atlassian/crowd.nix
|
||||||
./services/web-apps/atlassian/jira.nix
|
./services/web-apps/atlassian/jira.nix
|
||||||
./services/web-apps/codimd.nix
|
./services/web-apps/codimd.nix
|
||||||
|
./services/web-apps/convos.nix
|
||||||
./services/web-apps/cryptpad.nix
|
./services/web-apps/cryptpad.nix
|
||||||
./services/web-apps/documize.nix
|
./services/web-apps/documize.nix
|
||||||
./services/web-apps/dokuwiki.nix
|
./services/web-apps/dokuwiki.nix
|
||||||
|
@ -21,6 +21,12 @@ let
|
|||||||
|
|
||||||
${optionalString (cfg.network.listenAddress != "any") ''bind_to_address "${cfg.network.listenAddress}"''}
|
${optionalString (cfg.network.listenAddress != "any") ''bind_to_address "${cfg.network.listenAddress}"''}
|
||||||
${optionalString (cfg.network.port != 6600) ''port "${toString cfg.network.port}"''}
|
${optionalString (cfg.network.port != 6600) ''port "${toString cfg.network.port}"''}
|
||||||
|
${optionalString (cfg.fluidsynth) ''
|
||||||
|
decoder {
|
||||||
|
plugin "fluidsynth"
|
||||||
|
soundfont "${pkgs.soundfont-fluid}/share/soundfonts/FluidR3_GM2-2.sf2"
|
||||||
|
}
|
||||||
|
''}
|
||||||
|
|
||||||
${cfg.extraConfig}
|
${cfg.extraConfig}
|
||||||
'';
|
'';
|
||||||
@ -133,6 +139,14 @@ in {
|
|||||||
parameter is omitted from the configuration.
|
parameter is omitted from the configuration.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fluidsynth = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
If set, add fluidsynth soundfont and configure the plugin.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -240,6 +240,7 @@ in {
|
|||||||
'');
|
'');
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${package}/bin/hass --config '${cfg.configDir}'";
|
ExecStart = "${package}/bin/hass --config '${cfg.configDir}'";
|
||||||
|
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||||
User = "hass";
|
User = "hass";
|
||||||
Group = "hass";
|
Group = "hass";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
|
@ -124,7 +124,7 @@ in {
|
|||||||
<literal>"iponly"</literal>: specifies no authentication. ACLs authorization is used.
|
<literal>"iponly"</literal>: specifies no authentication. ACLs authorization is used.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
<literal>"strong"</literal>: authentication by username/password. If user is not registered his access is denied regardless of ACLs.
|
<literal>"strong"</literal>: authentication by username/password. If user is not registered their access is denied regardless of ACLs.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
|
@ -109,8 +109,8 @@ in
|
|||||||
|
|
||||||
httpListenAddr = mkOption {
|
httpListenAddr = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "0.0.0.0";
|
default = "[::1]";
|
||||||
example = "1.2.3.4";
|
example = "0.0.0.0";
|
||||||
description = ''
|
description = ''
|
||||||
HTTP address to bind to.
|
HTTP address to bind to.
|
||||||
'';
|
'';
|
||||||
@ -206,16 +206,16 @@ in
|
|||||||
|
|
||||||
If you would like to be able to modify the contents of this
|
If you would like to be able to modify the contents of this
|
||||||
directories, it is recommended that you make your user a
|
directories, it is recommended that you make your user a
|
||||||
member of the <literal>resilio</literal> group.
|
member of the <literal>rslsync</literal> group.
|
||||||
|
|
||||||
Directories in this list should be in the
|
Directories in this list should be in the
|
||||||
<literal>resilio</literal> group, and that group must have
|
<literal>rslsync</literal> group, and that group must have
|
||||||
write access to the directory. It is also recommended that
|
write access to the directory. It is also recommended that
|
||||||
<literal>chmod g+s</literal> is applied to the directory
|
<literal>chmod g+s</literal> is applied to the directory
|
||||||
so that any sub directories created will also belong to
|
so that any sub directories created will also belong to
|
||||||
the <literal>resilio</literal> group. Also,
|
the <literal>rslsync</literal> group. Also,
|
||||||
<literal>setfacl -d -m group:resilio:rwx</literal> and
|
<literal>setfacl -d -m group:rslsync:rwx</literal> and
|
||||||
<literal>setfacl -m group:resilio:rwx</literal> should also
|
<literal>setfacl -m group:rslsync:rwx</literal> should also
|
||||||
be applied so that the sub directories are writable by
|
be applied so that the sub directories are writable by
|
||||||
the group.
|
the group.
|
||||||
'';
|
'';
|
||||||
|
@ -15,7 +15,11 @@ let
|
|||||||
|
|
||||||
listen:
|
listen:
|
||||||
(
|
(
|
||||||
{ host: "${cfg.listenAddress}"; port: "${toString cfg.port}"; }
|
${
|
||||||
|
concatMapStringsSep ",\n"
|
||||||
|
(addr: ''{ host: "${addr}"; port: "${toString cfg.port}"; }'')
|
||||||
|
cfg.listenAddresses
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
${cfg.appendConfig}
|
${cfg.appendConfig}
|
||||||
@ -33,6 +37,10 @@ let
|
|||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
(mkRenamedOptionModule [ "services" "sslh" "listenAddress" ] [ "services" "sslh" "listenAddresses" ])
|
||||||
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
services.sslh = {
|
services.sslh = {
|
||||||
enable = mkEnableOption "sslh";
|
enable = mkEnableOption "sslh";
|
||||||
@ -55,10 +63,10 @@ in
|
|||||||
description = "Will the services behind sslh (Apache, sshd and so on) see the external IP and ports as if the external world connected directly to them";
|
description = "Will the services behind sslh (Apache, sshd and so on) see the external IP and ports as if the external world connected directly to them";
|
||||||
};
|
};
|
||||||
|
|
||||||
listenAddress = mkOption {
|
listenAddresses = mkOption {
|
||||||
type = types.str;
|
type = types.coercedTo types.str singleton (types.listOf types.str);
|
||||||
default = "0.0.0.0";
|
default = [ "0.0.0.0" "[::]" ];
|
||||||
description = "Listening address or hostname.";
|
description = "Listening addresses or hostnames.";
|
||||||
};
|
};
|
||||||
|
|
||||||
port = mkOption {
|
port = mkOption {
|
||||||
|
158
nixos/modules/services/networking/wasabibackend.nix
Normal file
158
nixos/modules/services/networking/wasabibackend.nix
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.wasabibackend;
|
||||||
|
|
||||||
|
inherit (lib) mkEnableOption mkIf mkOption optionalAttrs optionalString types;
|
||||||
|
|
||||||
|
confOptions = {
|
||||||
|
BitcoinRpcConnectionString = "${cfg.rpc.user}:${cfg.rpc.password}";
|
||||||
|
} // optionalAttrs (cfg.network == "mainnet") {
|
||||||
|
Network = "Main";
|
||||||
|
MainNetBitcoinP2pEndPoint = "${cfg.endpoint.ip}:${toString cfg.endpoint.port}";
|
||||||
|
MainNetBitcoinCoreRpcEndPoint = "${cfg.rpc.ip}:${toString cfg.rpc.port}";
|
||||||
|
} // optionalAttrs (cfg.network == "testnet") {
|
||||||
|
Network = "TestNet";
|
||||||
|
TestNetBitcoinP2pEndPoint = "${cfg.endpoint.ip}:${toString cfg.endpoint.port}";
|
||||||
|
TestNetBitcoinCoreRpcEndPoint = "${cfg.rpc.ip}:${toString cfg.rpc.port}";
|
||||||
|
} // optionalAttrs (cfg.network == "regtest") {
|
||||||
|
Network = "RegTest";
|
||||||
|
RegTestBitcoinP2pEndPoint = "${cfg.endpoint.ip}:${toString cfg.endpoint.port}";
|
||||||
|
RegTestBitcoinCoreRpcEndPoint = "${cfg.rpc.ip}:${toString cfg.rpc.port}";
|
||||||
|
};
|
||||||
|
|
||||||
|
configFile = pkgs.writeText "wasabibackend.conf" (builtins.toJSON confOptions);
|
||||||
|
|
||||||
|
in {
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
services.wasabibackend = {
|
||||||
|
enable = mkEnableOption "Wasabi backend service";
|
||||||
|
|
||||||
|
dataDir = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
default = "/var/lib/wasabibackend";
|
||||||
|
description = "The data directory for the Wasabi backend node.";
|
||||||
|
};
|
||||||
|
|
||||||
|
customConfigFile = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
description = "Defines the path to a custom configuration file that is copied to the user's directory. Overrides any config options.";
|
||||||
|
};
|
||||||
|
|
||||||
|
network = mkOption {
|
||||||
|
type = types.enum [ "mainnet" "testnet" "regtest" ];
|
||||||
|
default = "mainnet";
|
||||||
|
description = "The network to use for the Wasabi backend service.";
|
||||||
|
};
|
||||||
|
|
||||||
|
endpoint = {
|
||||||
|
ip = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1";
|
||||||
|
description = "IP address for P2P connection to bitcoind.";
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 8333;
|
||||||
|
description = "Port for P2P connection to bitcoind.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
rpc = {
|
||||||
|
ip = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1";
|
||||||
|
description = "IP address for RPC connection to bitcoind.";
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 8332;
|
||||||
|
description = "Port for RPC connection to bitcoind.";
|
||||||
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "bitcoin";
|
||||||
|
description = "RPC user for the bitcoin endpoint.";
|
||||||
|
};
|
||||||
|
|
||||||
|
password = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "password";
|
||||||
|
description = "RPC password for the bitcoin endpoint. Warning: this is stored in cleartext in the Nix store! Use <literal>configFile</literal> or <literal>passwordFile</literal> if needed.";
|
||||||
|
};
|
||||||
|
|
||||||
|
passwordFile = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
description = "File that contains the password of the RPC user.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "wasabibackend";
|
||||||
|
description = "The user as which to run the wasabibackend node.";
|
||||||
|
};
|
||||||
|
|
||||||
|
group = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = cfg.user;
|
||||||
|
description = "The group as which to run the wasabibackend node.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d '${cfg.dataDir}' 0770 '${cfg.user}' '${cfg.group}' - -"
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.services.wasabibackend = {
|
||||||
|
description = "wasabibackend server";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
environment = {
|
||||||
|
DOTNET_PRINT_TELEMETRY_MESSAGE = "false";
|
||||||
|
DOTNET_CLI_TELEMETRY_OPTOUT = "true";
|
||||||
|
};
|
||||||
|
preStart = ''
|
||||||
|
mkdir -p ${cfg.dataDir}/.walletwasabi/backend
|
||||||
|
${if cfg.customConfigFile != null then ''
|
||||||
|
cp -v ${cfg.customConfigFile} ${cfg.dataDir}/.walletwasabi/backend/Config.json
|
||||||
|
'' else ''
|
||||||
|
cp -v ${configFile} ${cfg.dataDir}/.walletwasabi/backend/Config.json
|
||||||
|
${optionalString (cfg.rpc.passwordFile != null) ''
|
||||||
|
CONFIGTMP=$(mktemp)
|
||||||
|
cat ${cfg.dataDir}/.walletwasabi/backend/Config.json | ${pkgs.jq}/bin/jq --arg rpconnection "${cfg.rpc.user}:$(cat "${cfg.rpc.passwordFile}")" '. + { BitcoinRpcConnectionString: $rpconnection }' > $CONFIGTMP
|
||||||
|
mv $CONFIGTMP ${cfg.dataDir}/.walletwasabi/backend/Config.json
|
||||||
|
''}
|
||||||
|
''}
|
||||||
|
chmod ug+w ${cfg.dataDir}/.walletwasabi/backend/Config.json
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
User = cfg.user;
|
||||||
|
Group = cfg.group;
|
||||||
|
ExecStart = "${pkgs.wasabibackend}/bin/WasabiBackend";
|
||||||
|
ProtectSystem = "full";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.${cfg.user} = {
|
||||||
|
name = cfg.user;
|
||||||
|
group = cfg.group;
|
||||||
|
description = "wasabibackend daemon user";
|
||||||
|
home = cfg.dataDir;
|
||||||
|
isSystemUser = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.${cfg.group} = {};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
72
nixos/modules/services/web-apps/convos.nix
Normal file
72
nixos/modules/services/web-apps/convos.nix
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.convos;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.convos = {
|
||||||
|
enable = mkEnableOption "Convos";
|
||||||
|
listenPort = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 3000;
|
||||||
|
example = 8080;
|
||||||
|
description = "Port the web interface should listen on";
|
||||||
|
};
|
||||||
|
listenAddress = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "*";
|
||||||
|
example = "127.0.0.1";
|
||||||
|
description = "Address or host the web interface should listen on";
|
||||||
|
};
|
||||||
|
reverseProxy = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enables reverse proxy support. This will allow Convos to automatically
|
||||||
|
pick up the <literal>X-Forwarded-For</literal> and
|
||||||
|
<literal>X-Request-Base</literal> HTTP headers set in your reverse proxy
|
||||||
|
web server. Note that enabling this option without a reverse proxy in
|
||||||
|
front will be a security issue.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
systemd.services.convos = {
|
||||||
|
description = "Convos Service";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "networking.target" ];
|
||||||
|
environment = {
|
||||||
|
CONVOS_HOME = "%S/convos";
|
||||||
|
CONVOS_REVERSE_PROXY = if cfg.reverseProxy then "1" else "0";
|
||||||
|
MOJO_LISTEN = "http://${toString cfg.listenAddress}:${toString cfg.listenPort}";
|
||||||
|
};
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.convos}/bin/convos daemon";
|
||||||
|
Restart = "on-failure";
|
||||||
|
StateDirectory = "convos";
|
||||||
|
WorkingDirectory = "%S/convos";
|
||||||
|
DynamicUser = true;
|
||||||
|
MemoryDenyWriteExecute = true;
|
||||||
|
ProtectHome = true;
|
||||||
|
ProtectClock = true;
|
||||||
|
ProtectHostname = true;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
ProtectKernelLogs = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
PrivateDevices = true;
|
||||||
|
PrivateMounts = true;
|
||||||
|
PrivateUsers = true;
|
||||||
|
LockPersonality = true;
|
||||||
|
RestrictRealtime = true;
|
||||||
|
RestrictNamespaces = true;
|
||||||
|
RestrictAddressFamilies = [ "AF_INET" "AF_INET6"];
|
||||||
|
SystemCallFilter = "@system-service";
|
||||||
|
SystemCallArchitectures = "native";
|
||||||
|
CapabilityBoundingSet = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -17,6 +17,10 @@ let
|
|||||||
lib.generators.toGitINI cfg.settings
|
lib.generators.toGitINI cfg.settings
|
||||||
);
|
);
|
||||||
|
|
||||||
|
replicationConfig = pkgs.writeText "replication.conf" (
|
||||||
|
lib.generators.toGitINI cfg.replicationSettings
|
||||||
|
);
|
||||||
|
|
||||||
# Wrap the gerrit java with all the java options so it can be called
|
# Wrap the gerrit java with all the java options so it can be called
|
||||||
# like a normal CLI app
|
# like a normal CLI app
|
||||||
gerrit-cli = pkgs.writeShellScriptBin "gerrit" ''
|
gerrit-cli = pkgs.writeShellScriptBin "gerrit" ''
|
||||||
@ -106,6 +110,15 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
replicationSettings = mkOption {
|
||||||
|
type = gitIniType;
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
Replication configuration. This will be generated to the
|
||||||
|
<literal>etc/replication.config</literal> file.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
plugins = mkOption {
|
plugins = mkOption {
|
||||||
type = types.listOf types.package;
|
type = types.listOf types.package;
|
||||||
default = [];
|
default = [];
|
||||||
@ -138,6 +151,13 @@ in
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = cfg.replicationSettings != {} -> elem "replication" cfg.builtinPlugins;
|
||||||
|
message = "Gerrit replicationSettings require enabling the replication plugin";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
services.gerrit.settings = {
|
services.gerrit.settings = {
|
||||||
cache.directory = "/var/cache/gerrit";
|
cache.directory = "/var/cache/gerrit";
|
||||||
container.heapLimit = cfg.jvmHeapLimit;
|
container.heapLimit = cfg.jvmHeapLimit;
|
||||||
@ -194,6 +214,7 @@ in
|
|||||||
|
|
||||||
# copy the config, keep it mutable because Gerrit
|
# copy the config, keep it mutable because Gerrit
|
||||||
ln -sfv ${gerritConfig} etc/gerrit.config
|
ln -sfv ${gerritConfig} etc/gerrit.config
|
||||||
|
ln -sfv ${replicationConfig} etc/replication.config
|
||||||
|
|
||||||
# install the plugins
|
# install the plugins
|
||||||
rm -rf plugins
|
rm -rf plugins
|
||||||
|
@ -69,7 +69,7 @@ in {
|
|||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
description = "Which package to use for the Nextcloud instance.";
|
description = "Which package to use for the Nextcloud instance.";
|
||||||
relatedPackages = [ "nextcloud17" "nextcloud18" ];
|
relatedPackages = [ "nextcloud17" "nextcloud18" "nextcloud19" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
maxUploadSize = mkOption {
|
maxUploadSize = mkOption {
|
||||||
@ -303,6 +303,14 @@ in {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
occ = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = occ;
|
||||||
|
internal = true;
|
||||||
|
description = ''
|
||||||
|
The nextcloud-occ program preconfigured to target this Nextcloud instance.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable (mkMerge [
|
||||||
@ -336,7 +344,16 @@ in {
|
|||||||
server, and wait until the upgrade to 17 is finished.
|
server, and wait until the upgrade to 17 is finished.
|
||||||
|
|
||||||
Then, set `services.nextcloud.package` to `pkgs.nextcloud18` to upgrade to
|
Then, set `services.nextcloud.package` to `pkgs.nextcloud18` to upgrade to
|
||||||
Nextcloud version 18.
|
Nextcloud version 18. Please note that Nextcloud 19 is already out and it's
|
||||||
|
recommended to upgrade to nextcloud19 after that.
|
||||||
|
'')
|
||||||
|
++ (optional (versionOlder cfg.package.version "19") ''
|
||||||
|
A legacy Nextcloud install (from before NixOS 20.09/unstable) may be installed.
|
||||||
|
|
||||||
|
If/After nextcloud18 is installed successfully, you can safely upgrade to
|
||||||
|
nextcloud19. If not, please upgrade to nextcloud18 first since Nextcloud doesn't
|
||||||
|
support upgrades that skip multiple versions (i.e. an upgrade from 17 to 19 isn't
|
||||||
|
possible, but an upgrade from 18 to 19).
|
||||||
'');
|
'');
|
||||||
|
|
||||||
services.nextcloud.package = with pkgs;
|
services.nextcloud.package = with pkgs;
|
||||||
@ -348,7 +365,8 @@ in {
|
|||||||
`pkgs.nextcloud`.
|
`pkgs.nextcloud`.
|
||||||
''
|
''
|
||||||
else if versionOlder stateVersion "20.03" then nextcloud17
|
else if versionOlder stateVersion "20.03" then nextcloud17
|
||||||
else nextcloud18
|
else if versionOlder stateVersion "20.09" then nextcloud18
|
||||||
|
else nextcloud19
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,6 +378,11 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
systemd.services = {
|
systemd.services = {
|
||||||
|
# When upgrading the Nextcloud package, Nextcloud can report errors such as
|
||||||
|
# "The files of the app [all apps in /var/lib/nextcloud/apps] were not replaced correctly"
|
||||||
|
# Restarting phpfpm on Nextcloud package update fixes these issues (but this is a workaround).
|
||||||
|
phpfpm-nextcloud.restartTriggers = [ cfg.package ];
|
||||||
|
|
||||||
nextcloud-setup = let
|
nextcloud-setup = let
|
||||||
c = cfg.config;
|
c = cfg.config;
|
||||||
writePhpArrary = a: "[${concatMapStringsSep "," (val: ''"${toString val}"'') a}]";
|
writePhpArrary = a: "[${concatMapStringsSep "," (val: ''"${toString val}"'') a}]";
|
||||||
|
@ -161,5 +161,11 @@
|
|||||||
};
|
};
|
||||||
}</programlisting>
|
}</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Ideally we should make sure that it's possible to jump two NixOS versions forward:
|
||||||
|
i.e. the warnings and the logic in the module should guard a user to upgrade from a
|
||||||
|
Nextcloud on e.g. 19.09 to a Nextcloud on 20.09.
|
||||||
|
</para>
|
||||||
</section>
|
</section>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
@ -4,11 +4,15 @@ with lib;
|
|||||||
|
|
||||||
let
|
let
|
||||||
blCfg = config.boot.loader;
|
blCfg = config.boot.loader;
|
||||||
|
dtCfg = config.hardware.deviceTree;
|
||||||
cfg = blCfg.generic-extlinux-compatible;
|
cfg = blCfg.generic-extlinux-compatible;
|
||||||
|
|
||||||
timeoutStr = if blCfg.timeout == null then "-1" else toString blCfg.timeout;
|
timeoutStr = if blCfg.timeout == null then "-1" else toString blCfg.timeout;
|
||||||
|
|
||||||
|
# The builder used to write during system activation
|
||||||
builder = import ./extlinux-conf-builder.nix { inherit pkgs; };
|
builder = import ./extlinux-conf-builder.nix { inherit pkgs; };
|
||||||
|
# The builder exposed in populateCmd, which runs on the build architecture
|
||||||
|
populateBuilder = import ./extlinux-conf-builder.nix { pkgs = pkgs.buildPackages; };
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
@ -34,11 +38,28 @@ in
|
|||||||
Maximum number of configurations in the boot menu.
|
Maximum number of configurations in the boot menu.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
populateCmd = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
readOnly = true;
|
||||||
|
description = ''
|
||||||
|
Contains the builder command used to populate an image,
|
||||||
|
honoring all options except the <literal>-c <path-to-default-configuration></literal>
|
||||||
|
argument.
|
||||||
|
Useful to have for sdImage.populateRootCommands
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = let
|
||||||
system.build.installBootLoader = "${builder} -g ${toString cfg.configurationLimit} -t ${timeoutStr} -c";
|
builderArgs = "-g ${toString cfg.configurationLimit} -t ${timeoutStr}" + lib.optionalString (dtCfg.name != null) " -n ${dtCfg.name}";
|
||||||
system.boot.loader.id = "generic-extlinux-compatible";
|
in
|
||||||
};
|
mkIf cfg.enable {
|
||||||
|
system.build.installBootLoader = "${builder} ${builderArgs} -c";
|
||||||
|
system.boot.loader.id = "generic-extlinux-compatible";
|
||||||
|
|
||||||
|
boot.loader.generic-extlinux-compatible.populateCmd = "${populateBuilder} ${builderArgs}";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ export PATH=/empty
|
|||||||
for i in @path@; do PATH=$PATH:$i/bin; done
|
for i in @path@; do PATH=$PATH:$i/bin; done
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "usage: $0 -t <timeout> -c <path-to-default-configuration> [-d <boot-dir>] [-g <num-generations>]" >&2
|
echo "usage: $0 -t <timeout> -c <path-to-default-configuration> [-d <boot-dir>] [-g <num-generations>] [-n <dtbName>]" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ default= # Default configuration
|
|||||||
target=/boot # Target directory
|
target=/boot # Target directory
|
||||||
numGenerations=0 # Number of other generations to include in the menu
|
numGenerations=0 # Number of other generations to include in the menu
|
||||||
|
|
||||||
while getopts "t:c:d:g:" opt; do
|
while getopts "t:c:d:g:n:" opt; do
|
||||||
case "$opt" in
|
case "$opt" in
|
||||||
t) # U-Boot interprets '0' as infinite and negative as instant boot
|
t) # U-Boot interprets '0' as infinite and negative as instant boot
|
||||||
if [ "$OPTARG" -lt 0 ]; then
|
if [ "$OPTARG" -lt 0 ]; then
|
||||||
@ -29,6 +29,7 @@ while getopts "t:c:d:g:" opt; do
|
|||||||
c) default="$OPTARG" ;;
|
c) default="$OPTARG" ;;
|
||||||
d) target="$OPTARG" ;;
|
d) target="$OPTARG" ;;
|
||||||
g) numGenerations="$OPTARG" ;;
|
g) numGenerations="$OPTARG" ;;
|
||||||
|
n) dtbName="$OPTARG" ;;
|
||||||
\?) usage ;;
|
\?) usage ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@ -96,7 +97,17 @@ addEntry() {
|
|||||||
echo " LINUX ../nixos/$(basename $kernel)"
|
echo " LINUX ../nixos/$(basename $kernel)"
|
||||||
echo " INITRD ../nixos/$(basename $initrd)"
|
echo " INITRD ../nixos/$(basename $initrd)"
|
||||||
if [ -d "$dtbDir" ]; then
|
if [ -d "$dtbDir" ]; then
|
||||||
echo " FDTDIR ../nixos/$(basename $dtbs)"
|
# if a dtbName was specified explicitly, use that, else use FDTDIR
|
||||||
|
if [ -n "$dtbName" ]; then
|
||||||
|
echo " FDT ../nixos/$(basename $dtbs)/${dtbName}"
|
||||||
|
else
|
||||||
|
echo " FDTDIR ../nixos/$(basename $dtbs)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ -n "$dtbName" ]; then
|
||||||
|
echo "Explicitly requested dtbName $dtbName, but there's no FDTDIR - bailing out." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
echo " APPEND systemConfig=$path init=$path/init $extraParams"
|
echo " APPEND systemConfig=$path init=$path/init $extraParams"
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
#! @bash@/bin/sh -e
|
#! @bash@/bin/sh
|
||||||
|
|
||||||
|
# This can end up being called disregarding the shebang.
|
||||||
|
set -e
|
||||||
|
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
|
|
||||||
|
@ -65,6 +65,7 @@ in
|
|||||||
containers-portforward = handleTest ./containers-portforward.nix {};
|
containers-portforward = handleTest ./containers-portforward.nix {};
|
||||||
containers-restart_networking = handleTest ./containers-restart_networking.nix {};
|
containers-restart_networking = handleTest ./containers-restart_networking.nix {};
|
||||||
containers-tmpfs = handleTest ./containers-tmpfs.nix {};
|
containers-tmpfs = handleTest ./containers-tmpfs.nix {};
|
||||||
|
convos = handleTest ./convos.nix {};
|
||||||
corerad = handleTest ./corerad.nix {};
|
corerad = handleTest ./corerad.nix {};
|
||||||
couchdb = handleTest ./couchdb.nix {};
|
couchdb = handleTest ./couchdb.nix {};
|
||||||
deluge = handleTest ./deluge.nix {};
|
deluge = handleTest ./deluge.nix {};
|
||||||
@ -236,6 +237,7 @@ in
|
|||||||
nginx-pubhtml = handleTest ./nginx-pubhtml.nix {};
|
nginx-pubhtml = handleTest ./nginx-pubhtml.nix {};
|
||||||
nginx-sandbox = handleTestOn ["x86_64-linux"] ./nginx-sandbox.nix {};
|
nginx-sandbox = handleTestOn ["x86_64-linux"] ./nginx-sandbox.nix {};
|
||||||
nginx-sso = handleTest ./nginx-sso.nix {};
|
nginx-sso = handleTest ./nginx-sso.nix {};
|
||||||
|
nginx-variants = handleTest ./nginx-variants.nix {};
|
||||||
nix-ssh-serve = handleTest ./nix-ssh-serve.nix {};
|
nix-ssh-serve = handleTest ./nix-ssh-serve.nix {};
|
||||||
nixos-generate-config = handleTest ./nixos-generate-config.nix {};
|
nixos-generate-config = handleTest ./nixos-generate-config.nix {};
|
||||||
novacomd = handleTestOn ["x86_64-linux"] ./novacomd.nix {};
|
novacomd = handleTestOn ["x86_64-linux"] ./novacomd.nix {};
|
||||||
@ -306,6 +308,7 @@ in
|
|||||||
spacecookie = handleTest ./spacecookie.nix {};
|
spacecookie = handleTest ./spacecookie.nix {};
|
||||||
spike = handleTest ./spike.nix {};
|
spike = handleTest ./spike.nix {};
|
||||||
sonarr = handleTest ./sonarr.nix {};
|
sonarr = handleTest ./sonarr.nix {};
|
||||||
|
sslh = handleTest ./sslh.nix {};
|
||||||
strongswan-swanctl = handleTest ./strongswan-swanctl.nix {};
|
strongswan-swanctl = handleTest ./strongswan-swanctl.nix {};
|
||||||
sudo = handleTest ./sudo.nix {};
|
sudo = handleTest ./sudo.nix {};
|
||||||
switchTest = handleTest ./switch-test.nix {};
|
switchTest = handleTest ./switch-test.nix {};
|
||||||
@ -345,6 +348,7 @@ in
|
|||||||
vault = handleTest ./vault.nix {};
|
vault = handleTest ./vault.nix {};
|
||||||
victoriametrics = handleTest ./victoriametrics.nix {};
|
victoriametrics = handleTest ./victoriametrics.nix {};
|
||||||
virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {};
|
virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {};
|
||||||
|
wasabibackend = handleTest ./wasabibackend.nix {};
|
||||||
wireguard = handleTest ./wireguard {};
|
wireguard = handleTest ./wireguard {};
|
||||||
wordpress = handleTest ./wordpress.nix {};
|
wordpress = handleTest ./wordpress.nix {};
|
||||||
xandikos = handleTest ./xandikos.nix {};
|
xandikos = handleTest ./xandikos.nix {};
|
||||||
|
30
nixos/tests/convos.nix
Normal file
30
nixos/tests/convos.nix
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import ./make-test-python.nix ({ lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
port = 3333;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name = "convos";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ sgo ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
machine =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
services.convos = {
|
||||||
|
enable = true;
|
||||||
|
listenPort = port;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
machine.wait_for_unit("convos")
|
||||||
|
machine.wait_for_open_port("${toString port}")
|
||||||
|
machine.succeed("journalctl -u convos | grep -q 'Listening at.*${toString port}'")
|
||||||
|
machine.succeed("curl http://localhost:${toString port}/")
|
||||||
|
'';
|
||||||
|
})
|
@ -2,69 +2,53 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
|||||||
|
|
||||||
let
|
let
|
||||||
configDir = "/var/lib/foobar";
|
configDir = "/var/lib/foobar";
|
||||||
apiPassword = "some_secret";
|
mqttPassword = "secret";
|
||||||
mqttPassword = "another_secret";
|
|
||||||
hassCli = "hass-cli --server http://hass:8123 --password '${apiPassword}'";
|
|
||||||
in {
|
in {
|
||||||
name = "home-assistant";
|
name = "home-assistant";
|
||||||
meta = with pkgs.stdenv.lib; {
|
meta = with pkgs.stdenv.lib; {
|
||||||
maintainers = with maintainers; [ dotlambda ];
|
maintainers = with maintainers; [ dotlambda ];
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes = {
|
nodes.hass = { pkgs, ... }: {
|
||||||
hass =
|
environment.systemPackages = with pkgs; [ mosquitto ];
|
||||||
{ pkgs, ... }:
|
services.home-assistant = {
|
||||||
{
|
inherit configDir;
|
||||||
environment.systemPackages = with pkgs; [
|
enable = true;
|
||||||
mosquitto home-assistant-cli
|
config = {
|
||||||
];
|
homeassistant = {
|
||||||
services.home-assistant = {
|
name = "Home";
|
||||||
inherit configDir;
|
time_zone = "UTC";
|
||||||
enable = true;
|
latitude = "0.0";
|
||||||
package = pkgs.home-assistant.override {
|
longitude = "0.0";
|
||||||
extraPackages = ps: with ps; [ hbmqtt ];
|
elevation = 0;
|
||||||
};
|
};
|
||||||
config = {
|
frontend = {};
|
||||||
homeassistant = {
|
# uses embedded mqtt broker
|
||||||
name = "Home";
|
mqtt.password = mqttPassword;
|
||||||
time_zone = "UTC";
|
binary_sensor = [{
|
||||||
latitude = "0.0";
|
platform = "mqtt";
|
||||||
longitude = "0.0";
|
state_topic = "home-assistant/test";
|
||||||
elevation = 0;
|
payload_on = "let_there_be_light";
|
||||||
auth_providers = [
|
payload_off = "off";
|
||||||
{
|
}];
|
||||||
type = "legacy_api_password";
|
logger = {
|
||||||
api_password = apiPassword;
|
default = "info";
|
||||||
}
|
logs."homeassistant.components.mqtt" = "debug";
|
||||||
];
|
|
||||||
};
|
|
||||||
frontend = { };
|
|
||||||
mqtt = { # Use hbmqtt as broker
|
|
||||||
password = mqttPassword;
|
|
||||||
};
|
|
||||||
binary_sensor = [
|
|
||||||
{
|
|
||||||
platform = "mqtt";
|
|
||||||
state_topic = "home-assistant/test";
|
|
||||||
payload_on = "let_there_be_light";
|
|
||||||
payload_off = "off";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
lovelaceConfig = {
|
|
||||||
title = "My Awesome Home";
|
|
||||||
views = [ {
|
|
||||||
title = "Example";
|
|
||||||
cards = [ {
|
|
||||||
type = "markdown";
|
|
||||||
title = "Lovelace";
|
|
||||||
content = "Welcome to your **Lovelace UI**.";
|
|
||||||
} ];
|
|
||||||
} ];
|
|
||||||
};
|
|
||||||
lovelaceConfigWritable = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
lovelaceConfig = {
|
||||||
|
title = "My Awesome Home";
|
||||||
|
views = [{
|
||||||
|
title = "Example";
|
||||||
|
cards = [{
|
||||||
|
type = "markdown";
|
||||||
|
title = "Lovelace";
|
||||||
|
content = "Welcome to your **Lovelace UI**.";
|
||||||
|
}];
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
lovelaceConfigWritable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
@ -77,28 +61,13 @@ in {
|
|||||||
with subtest("Check that Home Assistant's web interface and API can be reached"):
|
with subtest("Check that Home Assistant's web interface and API can be reached"):
|
||||||
hass.wait_for_open_port(8123)
|
hass.wait_for_open_port(8123)
|
||||||
hass.succeed("curl --fail http://localhost:8123/lovelace")
|
hass.succeed("curl --fail http://localhost:8123/lovelace")
|
||||||
assert "API running" in hass.succeed(
|
|
||||||
"curl --fail -H 'x-ha-access: ${apiPassword}' http://localhost:8123/api/"
|
|
||||||
)
|
|
||||||
with subtest("Toggle a binary sensor using MQTT"):
|
with subtest("Toggle a binary sensor using MQTT"):
|
||||||
assert '"state": "off"' in hass.succeed(
|
# wait for broker to become available
|
||||||
"curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'"
|
|
||||||
)
|
|
||||||
hass.wait_until_succeeds(
|
hass.wait_until_succeeds(
|
||||||
"mosquitto_pub -V mqttv311 -t home-assistant/test -u homeassistant -P '${mqttPassword}' -m let_there_be_light"
|
"mosquitto_sub -V mqttv311 -t home-assistant/test -u homeassistant -P '${mqttPassword}' -W 1 -t '*'"
|
||||||
)
|
|
||||||
assert '"state": "on"' in hass.succeed(
|
|
||||||
"curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'"
|
|
||||||
)
|
|
||||||
with subtest("Toggle a binary sensor using hass-cli"):
|
|
||||||
assert '"state": "on"' in hass.succeed(
|
|
||||||
"${hassCli} --output json state get binary_sensor.mqtt_binary_sensor"
|
|
||||||
)
|
)
|
||||||
hass.succeed(
|
hass.succeed(
|
||||||
"${hassCli} state edit binary_sensor.mqtt_binary_sensor --json='{\"state\": \"off\"}'"
|
"mosquitto_pub -V mqttv311 -t home-assistant/test -u homeassistant -P '${mqttPassword}' -m let_there_be_light"
|
||||||
)
|
|
||||||
assert '"state": "off"' in hass.succeed(
|
|
||||||
"curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'"
|
|
||||||
)
|
)
|
||||||
with subtest("Print log to ease debugging"):
|
with subtest("Print log to ease debugging"):
|
||||||
output_log = hass.succeed("cat ${configDir}/home-assistant.log")
|
output_log = hass.succeed("cat ${configDir}/home-assistant.log")
|
||||||
@ -107,5 +76,9 @@ in {
|
|||||||
|
|
||||||
with subtest("Check that no errors were logged"):
|
with subtest("Check that no errors were logged"):
|
||||||
assert "ERROR" not in output_log
|
assert "ERROR" not in output_log
|
||||||
|
|
||||||
|
# example line: 2020-06-20 10:01:32 DEBUG (MainThread) [homeassistant.components.mqtt] Received message on home-assistant/test: b'let_there_be_light'
|
||||||
|
with subtest("Check we received the mosquitto message"):
|
||||||
|
assert "let_there_be_light" in output_log
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -26,7 +26,9 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nextcloud = { config, pkgs, ... }: {
|
nextcloud = { config, pkgs, ... }: let
|
||||||
|
cfg = config;
|
||||||
|
in {
|
||||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||||
|
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
@ -42,6 +44,8 @@ in {
|
|||||||
startAt = "20:00";
|
startAt = "20:00";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [ cfg.services.nextcloud.occ ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -67,6 +71,8 @@ in {
|
|||||||
in ''
|
in ''
|
||||||
start_all()
|
start_all()
|
||||||
nextcloud.wait_for_unit("multi-user.target")
|
nextcloud.wait_for_unit("multi-user.target")
|
||||||
|
# This is just to ensure the nextcloud-occ program is working
|
||||||
|
nextcloud.succeed("nextcloud-occ status")
|
||||||
nextcloud.succeed("curl -sSf http://nextcloud/login")
|
nextcloud.succeed("curl -sSf http://nextcloud/login")
|
||||||
nextcloud.succeed(
|
nextcloud.succeed(
|
||||||
"${withRcloneEnv} ${copySharedFile}"
|
"${withRcloneEnv} ${copySharedFile}"
|
||||||
|
33
nixos/tests/nginx-variants.nix
Normal file
33
nixos/tests/nginx-variants.nix
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{ system ? builtins.currentSystem,
|
||||||
|
config ? {},
|
||||||
|
pkgs ? import ../.. { inherit system config; }
|
||||||
|
}:
|
||||||
|
|
||||||
|
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||||
|
|
||||||
|
builtins.listToAttrs (
|
||||||
|
builtins.map
|
||||||
|
(nginxName:
|
||||||
|
{
|
||||||
|
name = nginxName;
|
||||||
|
value = makeTest {
|
||||||
|
name = "nginx-variant-${nginxName}";
|
||||||
|
|
||||||
|
machine = { pkgs, ... }: {
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts.localhost.locations."/".return = "200 'foo'";
|
||||||
|
package = pkgs."${nginxName}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
machine.wait_for_unit("nginx")
|
||||||
|
machine.wait_for_open_port(80)
|
||||||
|
machine.succeed('test "$(curl -fvvv http://localhost/)" = foo')
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
[ "nginxStable" "nginxUnstable" "nginxShibboleth" "openresty" "tengine" ]
|
||||||
|
)
|
83
nixos/tests/sslh.nix
Normal file
83
nixos/tests/sslh.nix
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
import ./make-test-python.nix {
|
||||||
|
name = "sslh";
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
server = { pkgs, lib, ... }: {
|
||||||
|
networking.firewall.allowedTCPPorts = [ 443 ];
|
||||||
|
networking.interfaces.eth1.ipv6.addresses = [
|
||||||
|
{
|
||||||
|
address = "fe00:aa:bb:cc::2";
|
||||||
|
prefixLength = 64;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
# sslh is really slow when reverse dns does not work
|
||||||
|
networking.hosts = {
|
||||||
|
"fe00:aa:bb:cc::2" = [ "server" ];
|
||||||
|
"fe00:aa:bb:cc::1" = [ "client" ];
|
||||||
|
};
|
||||||
|
services.sslh = {
|
||||||
|
enable = true;
|
||||||
|
transparent = true;
|
||||||
|
appendConfig = ''
|
||||||
|
protocols:
|
||||||
|
(
|
||||||
|
{ name: "ssh"; service: "ssh"; host: "localhost"; port: "22"; probe: "builtin"; },
|
||||||
|
{ name: "http"; host: "localhost"; port: "80"; probe: "builtin"; },
|
||||||
|
);
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
services.openssh.enable = true;
|
||||||
|
users.users.root.openssh.authorizedKeys.keyFiles = [ ./initrd-network-ssh/id_ed25519.pub ];
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts."localhost" = {
|
||||||
|
addSSL = false;
|
||||||
|
default = true;
|
||||||
|
root = pkgs.runCommand "testdir" {} ''
|
||||||
|
mkdir "$out"
|
||||||
|
echo hello world > "$out/index.html"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
client = { ... }: {
|
||||||
|
networking.interfaces.eth1.ipv6.addresses = [
|
||||||
|
{
|
||||||
|
address = "fe00:aa:bb:cc::1";
|
||||||
|
prefixLength = 64;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
networking.hosts."fe00:aa:bb:cc::2" = [ "server" ];
|
||||||
|
environment.etc.sshKey = {
|
||||||
|
source = ./initrd-network-ssh/id_ed25519; # dont use this anywhere else
|
||||||
|
mode = "0600";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
|
||||||
|
server.wait_for_unit("sslh.service")
|
||||||
|
server.wait_for_unit("nginx.service")
|
||||||
|
server.wait_for_unit("sshd.service")
|
||||||
|
server.wait_for_open_port(80)
|
||||||
|
server.wait_for_open_port(443)
|
||||||
|
server.wait_for_open_port(22)
|
||||||
|
|
||||||
|
for arg in ["-6", "-4"]:
|
||||||
|
client.wait_until_succeeds(f"ping {arg} -c1 server")
|
||||||
|
|
||||||
|
# check that ssh through sslh works
|
||||||
|
client.succeed(
|
||||||
|
f"ssh {arg} -p 443 -i /etc/sshKey -o StrictHostKeyChecking=accept-new server 'echo $SSH_CONNECTION > /tmp/foo{arg}'"
|
||||||
|
)
|
||||||
|
|
||||||
|
# check that 1/ the above ssh command had an effect 2/ transparent proxying really works
|
||||||
|
ip = "fe00:aa:bb:cc::1" if arg == "-6" else "192.168.1."
|
||||||
|
server.succeed(f"grep '{ip}' /tmp/foo{arg}")
|
||||||
|
|
||||||
|
# check that http through sslh works
|
||||||
|
assert client.succeed(f"curl {arg} http://server:443").strip() == "hello world"
|
||||||
|
'';
|
||||||
|
}
|
@ -74,7 +74,7 @@ in
|
|||||||
with subtest("test5 user should not be able to run commands under root"):
|
with subtest("test5 user should not be able to run commands under root"):
|
||||||
machine.fail("sudo -u test5 sudo -n -u root true")
|
machine.fail("sudo -u test5 sudo -n -u root true")
|
||||||
|
|
||||||
with subtest("test5 user should be able to keep his environment"):
|
with subtest("test5 user should be able to keep their environment"):
|
||||||
machine.succeed("sudo -u test5 sudo -n -E -u test1 true")
|
machine.succeed("sudo -u test5 sudo -n -E -u test1 true")
|
||||||
|
|
||||||
with subtest("users in group 'barfoo' should not be able to keep their environment"):
|
with subtest("users in group 'barfoo' should not be able to keep their environment"):
|
||||||
|
@ -176,7 +176,8 @@ in {
|
|||||||
|
|
||||||
sub checkClientCert ($) {
|
sub checkClientCert ($) {
|
||||||
my $user = $_[0];
|
my $user = $_[0];
|
||||||
my $cmd = "gnutls-cli".
|
# debug level 3 is a workaround for gnutls issue https://gitlab.com/gnutls/gnutls/-/issues/1040
|
||||||
|
my $cmd = "gnutls-cli -d 3".
|
||||||
" --x509cafile=/home/$user/.task/keys/ca.cert".
|
" --x509cafile=/home/$user/.task/keys/ca.cert".
|
||||||
" --x509keyfile=/home/$user/.task/keys/private.key".
|
" --x509keyfile=/home/$user/.task/keys/private.key".
|
||||||
" --x509certfile=/home/$user/.task/keys/public.cert".
|
" --x509certfile=/home/$user/.task/keys/public.cert".
|
||||||
|
38
nixos/tests/wasabibackend.nix
Normal file
38
nixos/tests/wasabibackend.nix
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
|
name = "wasabibackend";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ mmahut ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
machine = { ... }: {
|
||||||
|
services.wasabibackend = {
|
||||||
|
enable = true;
|
||||||
|
network = "testnet";
|
||||||
|
rpc = {
|
||||||
|
user = "alice";
|
||||||
|
port = 18332;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.bitcoind = {
|
||||||
|
enable = true;
|
||||||
|
testnet = true;
|
||||||
|
rpc.users = {
|
||||||
|
alice.passwordHMAC = "e7096bc21da60b29ecdbfcdb2c3acc62$f948e61cb587c399358ed99c6ed245a41460b4bf75125d8330c9f6fcc13d7ae7";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
machine.wait_for_unit("wasabibackend.service")
|
||||||
|
machine.wait_until_succeeds(
|
||||||
|
"grep 'Wasabi Backend started' /var/lib/wasabibackend/.walletwasabi/backend/Logs.txt"
|
||||||
|
)
|
||||||
|
machine.sleep(5)
|
||||||
|
machine.succeed(
|
||||||
|
"grep 'Config is successfully initialized' /var/lib/wasabibackend/.walletwasabi/backend/Logs.txt"
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
})
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
bitwig-studio1.overrideAttrs (oldAttrs: rec {
|
bitwig-studio1.overrideAttrs (oldAttrs: rec {
|
||||||
name = "bitwig-studio-${version}";
|
name = "bitwig-studio-${version}";
|
||||||
version = "3.1.3";
|
version = "3.2.2";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://downloads.bitwig.com/stable/${version}/bitwig-studio-${version}.deb";
|
url = "https://downloads.bitwig.com/stable/${version}/bitwig-studio-${version}.deb";
|
||||||
sha256 = "11z5flmp55ywgxyccj3pzhijhaggi42i2pvacg88kcpj0cin57vl";
|
sha256 = "10zb78n75nbriyjah0m3syv3rv7qwbmj590z24hss7lifa3rs784";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = oldAttrs.buildInputs ++ [ xorg.libXtst ];
|
buildInputs = oldAttrs.buildInputs ++ [ xorg.libXtst ];
|
||||||
|
34
pkgs/applications/audio/fverb/default.nix
Normal file
34
pkgs/applications/audio/fverb/default.nix
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, pkg-config
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "fverb";
|
||||||
|
# no release yet: https://github.com/jpcima/fverb/issues/2
|
||||||
|
version = "unstable-2020-06-09";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "jpcima";
|
||||||
|
repo = pname;
|
||||||
|
rev = "462020e33e24c0204a375dc95e2c28654cc917b8";
|
||||||
|
sha256 = "12nl7qn7mnykk7v8q0j2n8kfq0xc46n0i45z6qcywspadwnncmd4";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
|
||||||
|
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
patchShebangs ./dpf/utils/generate-ttl.sh
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "A stereo variant of the reverberator by Jon Dattorro, for lv2";
|
||||||
|
homepage = "https://github.com/jpcima/fverb";
|
||||||
|
license = licenses.bsd2;
|
||||||
|
maintainers = [ maintainers.magnetophon ];
|
||||||
|
platforms = platforms.unix;
|
||||||
|
};
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
{ stdenv, mkDerivation, lib, fetchzip, cmake, pkgconfig
|
{ stdenv, mkDerivation, lib, fetchzip, cmake, pkgconfig
|
||||||
, alsaLib, freetype, libjack2, lame, libogg, libpulseaudio, libsndfile, libvorbis
|
, alsaLib, freetype, libjack2, lame, libogg, libpulseaudio, libsndfile, libvorbis
|
||||||
, portaudio, portmidi, qtbase, qtdeclarative, qtscript, qtsvg, qttools
|
, portaudio, portmidi, qtbase, qtdeclarative, qtgraphicaleffects
|
||||||
|
, qtquickcontrols2, qtscript, qtsvg, qttools
|
||||||
, qtwebengine, qtxmlpatterns
|
, qtwebengine, qtxmlpatterns
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -26,7 +27,8 @@ mkDerivation rec {
|
|||||||
buildInputs = [
|
buildInputs = [
|
||||||
alsaLib libjack2 freetype lame libogg libpulseaudio libsndfile libvorbis
|
alsaLib libjack2 freetype lame libogg libpulseaudio libsndfile libvorbis
|
||||||
portaudio portmidi # tesseract
|
portaudio portmidi # tesseract
|
||||||
qtbase qtdeclarative qtscript qtsvg qttools qtwebengine qtxmlpatterns
|
qtbase qtdeclarative qtgraphicaleffects qtquickcontrols2
|
||||||
|
qtscript qtsvg qttools qtwebengine qtxmlpatterns
|
||||||
];
|
];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
|
|||||||
description = "Pulseaudio command line mixer";
|
description = "Pulseaudio command line mixer";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
Features:
|
Features:
|
||||||
- Get the current volume of the default sink, the default source or a selected one by his id
|
- Get the current volume of the default sink, the default source or a selected one by its id
|
||||||
- Set the volume for the default sink, the default source or any other device
|
- Set the volume for the default sink, the default source or any other device
|
||||||
- List the sinks
|
- List the sinks
|
||||||
- List the sources
|
- List the sources
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig
|
{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig
|
||||||
, alsaLib, asio, avahi, flac, libogg, libvorbis }:
|
, alsaLib, asio, avahi, boost170, flac, libogg, libvorbis, soxr }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
@ -33,21 +33,21 @@ in
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "snapcast";
|
pname = "snapcast";
|
||||||
version = "0.15.0";
|
version = "0.20.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "badaix";
|
owner = "badaix";
|
||||||
repo = "snapcast";
|
repo = "snapcast";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "11rnpy6w3wm240qgmkp74k5w8wh5b7hzfx05qrnh6l7ng7m25ky2";
|
sha256 = "152ic8hlyawcmj9pykb33xc6yx7il6yb9ilmsy6m9nlh40m8yxls";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkgconfig ];
|
nativeBuildInputs = [ cmake pkgconfig boost170.dev ];
|
||||||
# snapcast also supports building against tremor but as we have libogg, that's
|
# snapcast also supports building against tremor but as we have libogg, that's
|
||||||
# not needed
|
# not needed
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
alsaLib asio avahi flac libogg libvorbis
|
alsaLib asio avahi flac libogg libvorbis
|
||||||
aixlog popl
|
aixlog popl soxr
|
||||||
];
|
];
|
||||||
|
|
||||||
# Upstream systemd unit files are pretty awful, so we provide our own in a
|
# Upstream systemd unit files are pretty awful, so we provide our own in a
|
||||||
|
46
pkgs/applications/audio/tuijam/default.nix
Normal file
46
pkgs/applications/audio/tuijam/default.nix
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{ buildPythonApplication
|
||||||
|
, fetchFromGitHub
|
||||||
|
, lib
|
||||||
|
, python3Packages
|
||||||
|
, youtube-dl
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonApplication rec {
|
||||||
|
pname = "tuijam";
|
||||||
|
version = "unstable-2020-06-05";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "cfangmeier";
|
||||||
|
repo = pname;
|
||||||
|
rev = "7baec6f6e80ee90da0d0363b430dd7d5695ff03b";
|
||||||
|
sha256 = "1l0s88jvj99jkxnczw5nfj78m8vihh29g815n4mg9jblad23mgx5";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ python3Packages.Babel ];
|
||||||
|
|
||||||
|
# the package has no tests
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
propagatedBuildInputs = with python3Packages; [
|
||||||
|
gmusicapi
|
||||||
|
google_api_python_client
|
||||||
|
mpv
|
||||||
|
pydbus
|
||||||
|
pygobject3
|
||||||
|
pyyaml
|
||||||
|
requests
|
||||||
|
rsa
|
||||||
|
urwid
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A fancy TUI client for Google Play Music";
|
||||||
|
longDescription = ''
|
||||||
|
TUIJam seeks to make a simple, attractive, terminal-based interface to
|
||||||
|
listening to music for Google Play Music All-Access subscribers.
|
||||||
|
'';
|
||||||
|
homepage = "https://github.com/cfangmeier/tuijam";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ kalbasit ];
|
||||||
|
};
|
||||||
|
}
|
41
pkgs/applications/blockchains/bitcoin-knots.nix
Normal file
41
pkgs/applications/blockchains/bitcoin-knots.nix
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, pkgconfig
|
||||||
|
, autoreconfHook
|
||||||
|
, db5
|
||||||
|
, openssl
|
||||||
|
, boost
|
||||||
|
, zlib
|
||||||
|
, miniupnpc
|
||||||
|
, libevent
|
||||||
|
, protobuf
|
||||||
|
, utillinux
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "bitcoind-knots";
|
||||||
|
version = "0.20.0";
|
||||||
|
versionDate = "20200614";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "bitcoinknots";
|
||||||
|
repo = "bitcoin";
|
||||||
|
rev = "v${version}.knots${versionDate}";
|
||||||
|
sha256 = "0c8k1154kcwz6q2803wx0zigvqaij1fi5akgfqlj3yl57jjw48jj";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig autoreconfHook ];
|
||||||
|
buildInputs = [ openssl db5 openssl utillinux
|
||||||
|
protobuf boost zlib miniupnpc libevent ];
|
||||||
|
|
||||||
|
configureFlags = [ "--with-incompatible-bdb"
|
||||||
|
"--with-boost-libdir=${boost.out}/lib" ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "An enhanced Bitcoin node software";
|
||||||
|
homepage = "https://bitcoinknots.org/";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = [ maintainers.mmahut ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
49
pkgs/applications/blockchains/cgminer/default.nix
Normal file
49
pkgs/applications/blockchains/cgminer/default.nix
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, pkgconfig
|
||||||
|
, libtool
|
||||||
|
, autoconf
|
||||||
|
, automake
|
||||||
|
, curl
|
||||||
|
, ncurses
|
||||||
|
, ocl-icd
|
||||||
|
, opencl-headers
|
||||||
|
, libusb1
|
||||||
|
, xorg
|
||||||
|
, jansson }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "cgminer";
|
||||||
|
version = "4.11.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ckolivas";
|
||||||
|
repo = "cgminer";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "0l1ms3nxnjzh4mpiadikvngcr9k3jnjqy3yna207za0va0c28dj5";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ autoconf automake libtool curl ncurses ocl-icd opencl-headers
|
||||||
|
xorg.libX11 xorg.libXext xorg.libXinerama jansson libusb1 ];
|
||||||
|
|
||||||
|
configureScript = "./autogen.sh";
|
||||||
|
configureFlags = [ "--enable-scrypt"
|
||||||
|
"--enable-opencl"
|
||||||
|
"--enable-bitforce"
|
||||||
|
"--enable-icarus"
|
||||||
|
"--enable-modminer"
|
||||||
|
"--enable-ztex"
|
||||||
|
"--enable-avalon"
|
||||||
|
"--enable-klondike"
|
||||||
|
"--enable-keccak"
|
||||||
|
"--enable-bflsc"];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "CPU/GPU miner in c for bitcoin";
|
||||||
|
homepage = "https://github.com/ckolivas/cgminer";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
maintainers = with maintainers; [ offline mmahut ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
@ -64,7 +64,7 @@ stdenv.mkDerivation rec {
|
|||||||
icon = "monero";
|
icon = "monero";
|
||||||
desktopName = "Monero";
|
desktopName = "Monero";
|
||||||
genericName = "Wallet";
|
genericName = "Wallet";
|
||||||
categories = "Application;Network;Utility;";
|
categories = "Network;Utility;";
|
||||||
};
|
};
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
98
pkgs/applications/blockchains/wasabibackend/create_deps.sh
Normal file
98
pkgs/applications/blockchains/wasabibackend/create_deps.sh
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
#! /usr/bin/env nix-shell
|
||||||
|
#! nix-shell -i bash -p dotnet-sdk_3 nixfmt
|
||||||
|
|
||||||
|
# Run this script to generate deps.nix
|
||||||
|
# ./create_deps.sh /path/to/package/source/checkout > deps.nix
|
||||||
|
|
||||||
|
# TODO: consolidate with other dotnet deps generation scripts by which
|
||||||
|
# this script is inspired:
|
||||||
|
# - pkgs/servers/nosql/eventstore/create-deps.sh
|
||||||
|
# - pkgs/development/dotnet-modules/python-language-server/create_deps.sh
|
||||||
|
|
||||||
|
URLBASE="https://www.nuget.org/api/v2/package"
|
||||||
|
|
||||||
|
DEPS_HEADER="
|
||||||
|
{ fetchurl }:
|
||||||
|
let
|
||||||
|
nugetUrlBase = \"$URLBASE\";
|
||||||
|
fetchNuGet = { name, version, sha256 }: fetchurl {
|
||||||
|
inherit sha256;
|
||||||
|
url = \"\${nugetUrlBase}/\${name}/\${version}\";
|
||||||
|
};
|
||||||
|
in ["
|
||||||
|
|
||||||
|
DEPS_FOOTER="]"
|
||||||
|
|
||||||
|
DEPS_TEMPLATE="
|
||||||
|
(fetchNuGet {
|
||||||
|
name = \"%s\";
|
||||||
|
version = \"%s\";
|
||||||
|
sha256 = \"%s\";
|
||||||
|
})"
|
||||||
|
|
||||||
|
|
||||||
|
function generate_restore_log() {
|
||||||
|
checkout_path=$1
|
||||||
|
>&2 echo "generating restore log for $checkout_path..."
|
||||||
|
cd $checkout_path
|
||||||
|
dotnet nuget locals all --clear
|
||||||
|
dotnet restore -v normal --no-cache WalletWasabi.Backend -r linux-x64
|
||||||
|
cd -
|
||||||
|
}
|
||||||
|
|
||||||
|
function process_restore_log() {
|
||||||
|
restore_log=$1
|
||||||
|
>&2 echo "processing restore log..."
|
||||||
|
while read line; do
|
||||||
|
if echo $line | grep -q "^[[:space:]]*Installing"; then
|
||||||
|
l=$(echo $line | xargs)
|
||||||
|
l=${l#Installing }
|
||||||
|
l=${l%.}
|
||||||
|
echo $l
|
||||||
|
fi
|
||||||
|
done < $restore_log
|
||||||
|
}
|
||||||
|
|
||||||
|
function prefetch_deps() {
|
||||||
|
processed_log=$1
|
||||||
|
>&2 echo "prefetching deps..."
|
||||||
|
while read line; do
|
||||||
|
name=$(echo $line | cut -d' ' -f1)
|
||||||
|
>&2 echo "prefetching '$name' version: $version"
|
||||||
|
version=$(echo $line | cut -d' ' -f2)
|
||||||
|
hash=$(nix-prefetch-url "$URLBASE/$name/$version" 2>/dev/null)
|
||||||
|
echo "$name $version $hash"
|
||||||
|
done < $processed_log
|
||||||
|
}
|
||||||
|
|
||||||
|
function generate_deps_expression() {
|
||||||
|
packages=$1
|
||||||
|
>&2 echo "generating deps nix-expression..."
|
||||||
|
echo $DEPS_HEADER
|
||||||
|
while read line; do
|
||||||
|
name=$(echo $line | cut -d' ' -f1)
|
||||||
|
version=$(echo $line | cut -d' ' -f2)
|
||||||
|
hash=$(echo $line | cut -d' ' -f3)
|
||||||
|
printf "$DEPS_TEMPLATE" $name $version $hash
|
||||||
|
done < $packages
|
||||||
|
echo $DEPS_FOOTER
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
checkout_path=$1
|
||||||
|
tmpdir=$(mktemp -d)
|
||||||
|
generate_restore_log $checkout_path > $tmpdir/restore.log
|
||||||
|
process_restore_log $tmpdir/restore.log > $tmpdir/processed.log
|
||||||
|
prefetch_deps $tmpdir/processed.log > $tmpdir/prefetched.log
|
||||||
|
generate_deps_expression $tmpdir/prefetched.log > $tmpdir/deps.nix
|
||||||
|
nixfmt $tmpdir/deps.nix
|
||||||
|
cat $tmpdir/deps.nix
|
||||||
|
rm -rf $tmpdir
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ ! -d "$1" ]; then
|
||||||
|
>&2 echo "First argument must be a directory, the path to the package source checkout"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
main $@
|
100
pkgs/applications/blockchains/wasabibackend/default.nix
Normal file
100
pkgs/applications/blockchains/wasabibackend/default.nix
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, fetchurl
|
||||||
|
, makeWrapper
|
||||||
|
, Nuget
|
||||||
|
, dotnetCorePackages
|
||||||
|
, openssl
|
||||||
|
, zlib
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
deps = import ./deps.nix { inherit fetchurl; };
|
||||||
|
|
||||||
|
dotnet-sdk = dotnetCorePackages.sdk_3_1;
|
||||||
|
dotnet-aspnetcore = dotnetCorePackages.aspnetcore_3_1;
|
||||||
|
|
||||||
|
nugetSource = stdenv.mkDerivation {
|
||||||
|
pname = "${pname}-nuget-deps";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
dontInstall = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ Nuget ];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
export HOME=$(mktemp -d)
|
||||||
|
mkdir -p $out/lib
|
||||||
|
|
||||||
|
nuget sources Disable -Name "nuget.org"
|
||||||
|
for package in ${toString deps}; do
|
||||||
|
nuget add $package -Source $out/lib
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
pname = "WasabiBackend";
|
||||||
|
version = "1.1.11.1";
|
||||||
|
|
||||||
|
projectName = "WalletWasabi.Backend";
|
||||||
|
projectConfiguration = "Release";
|
||||||
|
projectRuntime = "linux-x64";
|
||||||
|
in
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
inherit pname version;
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "zkSNACKs";
|
||||||
|
repo = "WalletWasabi";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "0kxww8ywhld00b0qsv5jh5s19jqpahnb9mvshmjnp3cb840j12a7";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
Nuget
|
||||||
|
dotnet-sdk
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
export HOME=$(mktemp -d)
|
||||||
|
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||||
|
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||||
|
export DOTNET_ROOT="${dotnet-sdk}/bin"
|
||||||
|
|
||||||
|
nuget sources Disable -Name "nuget.org"
|
||||||
|
|
||||||
|
dotnet restore \
|
||||||
|
--source ${nugetSource}/lib \
|
||||||
|
--runtime ${projectRuntime} \
|
||||||
|
${projectName}
|
||||||
|
|
||||||
|
dotnet publish \
|
||||||
|
--no-restore \
|
||||||
|
--runtime ${projectRuntime} \
|
||||||
|
--configuration ${projectConfiguration} \
|
||||||
|
${projectName}
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r ${projectName}/bin/${projectConfiguration}/netcoreapp3.1/${projectRuntime}/publish $out/lib
|
||||||
|
mkdir -p $out/bin
|
||||||
|
makeWrapper $out/lib/WalletWasabi.Backend $out/bin/${pname} \
|
||||||
|
--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ openssl zlib ]} \
|
||||||
|
--run "cd $out/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
# If we don't disable stripping the executable fails to start with segfault
|
||||||
|
dontStrip = true;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Backend for the Wasabi Wallet";
|
||||||
|
homepage = "https://wasabiwallet.io/";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ mmahut ];
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
}
|
951
pkgs/applications/blockchains/wasabibackend/deps.nix
generated
Normal file
951
pkgs/applications/blockchains/wasabibackend/deps.nix
generated
Normal file
@ -0,0 +1,951 @@
|
|||||||
|
{ fetchurl }:
|
||||||
|
let
|
||||||
|
nugetUrlBase = "https://www.nuget.org/api/v2/package";
|
||||||
|
fetchNuGet = { name, version, sha256 }:
|
||||||
|
fetchurl {
|
||||||
|
inherit sha256;
|
||||||
|
url = "${nugetUrlBase}/${name}/${version}";
|
||||||
|
};
|
||||||
|
in [
|
||||||
|
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Xml.XmlSerializer";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "01nzc3gdslw90qfykq4qzr2mdnqxjl4sj0wp3fixiwdmlmvpib5z";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading.Overlapped";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0fi79az3vmqdp9mv3wh2phblfjls89zlj6p9nc3i9f6wmfarj188";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Security.Principal";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1nbzdfqvzzbgsfdd5qsh94d7dbg2v4sw0yx6himyn52zf8z6007p";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Dynamic.Runtime";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Private.DataContractSerialization";
|
||||||
|
version = "4.1.1";
|
||||||
|
sha256 = "1xk9wvgzipssp1393nsg4n16zbr5481k03nkdlj954hzq5jkx89r";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Win32.Registry";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "1spf4m9pikkc19544p29a47qnhcd885klncahz133hbnyqbkmz9k";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Emit.Lightweight";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Emit";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Emit.ILGeneration";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Diagnostics.DiagnosticSource";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "1n6c3fbz7v8d3pn77h4v5wvsfrfg7v1c57lg3nff3cjyh597v23m";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Globalization.Extensions";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0hjhdb5ri8z9l93bw04s7ynwrjrhx2n0p34sf33a9hl9phz69fyc";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Security.Cryptography.Cng";
|
||||||
|
version = "4.2.0";
|
||||||
|
sha256 = "118jijz446kix20blxip0f0q8mhsh9bz118mwc2ch1p6g7facpzc";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Security.Cryptography.OpenSsl";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "16sx3cig3d0ilvzl8xxgffmxbiqx87zdi8fc73i3i7zjih1a7f4q";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Security.Cryptography.Csp";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "1cwv8lqj8r15q81d2pz2jwzzbaji0l28xfrpw29kdpsaypm92z2q";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.native.System.Net.Http";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1hgv2bmbaskx77v8glh7waxws973jn4ah35zysnkxmf0196sfxg6";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading.Tasks.Extensions";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.native.System.IO.Compression";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "0d720z4lzyfcabmmnvh0bnj76ll7djhji2hmfh3h44sdkjnlkknk";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Extensions.FileProviders.Physical";
|
||||||
|
version = "2.0.0";
|
||||||
|
sha256 = "0l0l92g7sq4122n139av1pn1jl6wlw92hjmdnr47xdss0ndmwrs3";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.VisualStudio.Web.CodeGeneration.Contracts";
|
||||||
|
version = "2.0.2";
|
||||||
|
sha256 = "1fs6sbjn0chx6rv38d61zgk8mhyyxz44xp4wsfya0lvkckyszyn1";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.App";
|
||||||
|
version = "2.0.5";
|
||||||
|
sha256 = "0qb7k624w7l0zhapdp519ymqg84a67r8zyd8cpj42hywsgb0dqv6";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.VisualStudio.Web.CodeGeneration.Tools";
|
||||||
|
version = "2.0.2";
|
||||||
|
sha256 = "0fkjm06irs53d77z29i6dwj5pjhgj9ivhad8v39ghnrwasc0ivq6";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "NuGet.Frameworks";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "0nar684cm53cvzx28gzl6kmpg9mrfr1yv29323din7xqal4pscgq";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.native.System";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Buffers";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "13s659bcmg9nwb6z78971z1lr6bmh2wghxi1ayqyzl4jijd351gr";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Build.Runtime";
|
||||||
|
version = "15.3.409";
|
||||||
|
sha256 = "135ycnqz5jfg61y5zaapgc7xdpjx2aq4icmxb9ph7h5inl445q7q";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Newtonsoft.Json";
|
||||||
|
version = "10.0.1";
|
||||||
|
sha256 = "15ncqic3p2rzs8q8ppi0irl2miq75kilw4lh8yfgjq96id0ds3hv";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Extensions.FileSystemGlobbing";
|
||||||
|
version = "2.0.0";
|
||||||
|
sha256 = "02lzy6r14ghwfwm384xajq08vv3pl3ww0mi5isrr10vivhijhgg4";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.native.System.Security.Cryptography";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "0k57aa2c3b10wl3hfqbgrl7xq7g8hh3a3ir44b31dn5p61iiw3z9";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Extensions.FileProviders.Abstractions";
|
||||||
|
version = "2.0.0";
|
||||||
|
sha256 = "0d6y5isjy6jpf4w3f3w89cwh9p40glzhwvm7cwhx05wkqd8bk9w4";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.Targets";
|
||||||
|
version = "1.0.1";
|
||||||
|
sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.Platforms";
|
||||||
|
version = "2.0.1";
|
||||||
|
sha256 = "1j2hmnivgb4plni2dd205kafzg6mkg7r4knrd3s7mg75wn2l25np";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.DotNetHostPolicy";
|
||||||
|
version = "2.0.5";
|
||||||
|
sha256 = "0v5csskiwpk8kz8wclqad8kcjmxr7ik4w99wl05740qvaag3qysk";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "NETStandard.Library";
|
||||||
|
version = "2.0.1";
|
||||||
|
sha256 = "0d44wjxphs1ck838v7dapm0ag0b91zpiy33cr5vflsrwrqgj51dk";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Globalization.Extensions";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Serialization.Primitives";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "01vv2p8h4hsz217xxs0rixvb7f2xzbh6wv1gzbfykcbfrza6dvnf";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Numerics";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Serialization.Formatters";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "114j35n8gcvn3sqv9ar36r1jjq0y1yws9r0yk8i6wm4aq7n9rs0m";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Xml.XmlDocument";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Collections";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Diagnostics.Debug";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Resources.ResourceManager";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Extensions";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Handles";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Text.Encoding.Extensions";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Globalization";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Linq";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Text.Encoding";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.ObjectModel";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.DotNetAppHost";
|
||||||
|
version = "2.0.5";
|
||||||
|
sha256 = "00bsxdg9c8msjxyffvfi8siqk8v2m7ca8fqy1npv7b2pzg3byjws";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.CompilerServices.Unsafe";
|
||||||
|
version = "4.4.0";
|
||||||
|
sha256 = "0a6ahgi5b148sl5qyfpyw383p3cb4yrkm802k29fsi4mxkiwir29";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.CSharp";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.IO.Pipes";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "0fxfvcf55s9q8zsykwh8dkq2xb5jcqnml2ycq8srfry2l07h18za";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Text.RegularExpressions";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.IO";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Xml.XDocument";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "08h8fm4l77n0nd4i4fk2386y809bfbwqb7ih9d7564ifcxr5ssxd";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading.Tasks";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.ComponentModel.TypeConverter";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Extensions";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Dynamic.Runtime";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Xml.ReaderWriter";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Linq.Expressions";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "NETStandard.Library";
|
||||||
|
version = "1.6.0";
|
||||||
|
sha256 = "0nmmv4yw7gw04ik8ialj3ak0j6pxa9spih67hnn1h2c38ba8h58k";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Build.Framework";
|
||||||
|
version = "15.3.409";
|
||||||
|
sha256 = "1dhanwb9ihbfay85xj7cwn0byzmmdz94hqfi3q6r1ncwdjd8y1s2";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Build.Tasks.Core";
|
||||||
|
version = "15.3.409";
|
||||||
|
sha256 = "135swyygp7cz2civwsz6a7dj7h8bzp7yrybmgxjanxwrw66hm933";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Build.Utilities.Core";
|
||||||
|
version = "15.3.409";
|
||||||
|
sha256 = "1p8a0l9sxmjj86qha748qjw2s2n07q8mn41mj5r6apjnwl27ywnf";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Text.Encoding.CodePages";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "00wpm3b9y0k996rm9whxprngm8l500ajmzgy2ip9pgwk0icp06y3";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Build";
|
||||||
|
version = "15.3.409";
|
||||||
|
sha256 = "0vzq6csp2yys9s96c7i37bjml439rdi47g8f5rzqdr7xf5a1jk81";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading.Tasks.Dataflow";
|
||||||
|
version = "4.6.0";
|
||||||
|
sha256 = "0a1davr71wssyn4z1hr75lk82wqa0daz0vfwkmg1fm3kckfd72k1";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Extensions.Primitives";
|
||||||
|
version = "2.0.0";
|
||||||
|
sha256 = "1xppr5jbny04slyjgngxjdm0maxdh47vq481ps944d7jrfs0p3mb";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.DotNetHostResolver";
|
||||||
|
version = "2.0.5";
|
||||||
|
sha256 = "1sz2fdp8fdwz21x3lr2m1zhhrbix6iz699fjkwiryqdjl4ygd3hw";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.Platforms";
|
||||||
|
version = "1.1.0";
|
||||||
|
sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.Targets";
|
||||||
|
version = "1.1.0";
|
||||||
|
sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.TypeExtensions";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Primitives";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.InteropServices";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Diagnostics.Tools";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0in3pic3s2ddyibi8cvgl102zmvp9r9mchh82ns9f0ms4basylw1";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.ComponentModel.Primitives";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.ComponentModel";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Collections.NonGeneric";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Collections.Specialized";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Emit.ILGeneration";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Emit";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.IO.FileSystem.Primitives";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading.Tasks.Extensions";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.IO.FileSystem";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Emit.Lightweight";
|
||||||
|
version = "4.3.0";
|
||||||
|
sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.AppContext";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "0fv3cma1jp4vgj7a8hqc9n7hr1f1kjp541s6z0q1r6nazb4iz9mz";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.ObjectModel";
|
||||||
|
version = "4.0.12";
|
||||||
|
sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Collections.Concurrent";
|
||||||
|
version = "4.0.12";
|
||||||
|
sha256 = "07y08kvrzpak873pmyxs129g1ch8l27zmg51pcyj2jvq03n0r0fc";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.IO.FileSystem.Primitives";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Win32.Primitives";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1n8ap0cmljbqskxpf8fjzn7kh1vvlndsa75k01qig26mbw97k2q7";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Diagnostics.Tracing";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "1d2r76v1x610x61ahfpigda89gd13qydz6vbwzhpqlyvq8jj6394";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Net.Sockets";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "1385fvh8h29da5hh58jm1v78fzi9fi5vj93vhlm2kvqpfahvpqls";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading.Timer";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "15n54f1f8nn3mjcjrlzdg6q3520571y012mx7v991x2fvp73lmg6";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.Platforms";
|
||||||
|
version = "1.0.1";
|
||||||
|
sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Globalization.Calendars";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0bv0alrm2ck2zk3rz25lfyk9h42f3ywq77mx1syl6vvyncnpg4qh";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Security.Cryptography.Encoding";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "0a8y1a5wkmpawc787gfmnrnbzdgxmx1a14ax43jf3rj9gxmy3vk4";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Primitives";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Diagnostics.Tools";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Console";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "0ynxqbc3z1nwbrc11hkkpw9skw116z4y9wjzn7id49p9yi7mzmlf";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Handles";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Security.Cryptography.Primitives";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "0i7cfnwph9a10bm26m538h5xcr8b36jscp9sy1zhgifksxz4yixh";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Diagnostics.Debug";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Collections";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Extensions";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.IO.FileSystem";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Numerics";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1y308zfvy0l5nrn46mqqr4wb4z1xk758pkk8svbz8b5ij7jnv4nn";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.IO.Compression.ZipFile";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0h72znbagmgvswzr46mihn7xm7chfk2fhrp5krzkjf29pz0i6z82";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Resources.ResourceManager";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Security.Cryptography.Algorithms";
|
||||||
|
version = "4.2.0";
|
||||||
|
sha256 = "148s9g5dgm33ri7dnh19s4lgnlxbpwvrw2jnzllq2kijj4i4vs85";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Linq";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Text.Encoding";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.InteropServices.RuntimeInformation";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.IO.Compression";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "0iym7s3jkl8n0vzm3jd6xqg9zjjjqni05x45dwxyjr2dy88hlgji";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Text.Encoding.Extensions";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Globalization";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Text.RegularExpressions";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Xml.XDocument";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading.Tasks";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Net.Primitives";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "10xzzaynkzkakp7jai1ik3r805zrqjxiz7vcagchyxs2v26a516r";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.IO";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Extensions";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Security.Cryptography.X509Certificates";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "0clg1bv55mfv5dq00m19cp634zx6inm31kf8ppbq1jgyjf2185dh";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Net.Http";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "1i5rqij1icg05j8rrkw4gd4pgia1978mqhjzhsjg69lvwcdfg8yb";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Xml.ReaderWriter";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.InteropServices";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Linq.Expressions";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading.Thread";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "1gxxm5fl36pjjpnx1k688dcw8m9l7nmf802nxis6swdaw8k54jzc";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Diagnostics.TraceSource";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "1mc7r72xznczzf6mz62dm8xhdi14if1h8qgx353xvhz89qyxsa3h";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.TypeExtensions";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Serialization.Primitives";
|
||||||
|
version = "4.1.1";
|
||||||
|
sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Xml.XmlDocument";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0ihsnkvyc76r4dcky7v3ansnbyqjzkbyyia0ir5zvqirzan0bnl1";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.AspNetCore.App.Runtime.linux-x64";
|
||||||
|
version = "3.1.2";
|
||||||
|
sha256 = "19wfh9yg4n2khbl7pvf6ngx95m5p8lw4l9y935pv7nh4xgwk02p9";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.App.Runtime.linux-x64";
|
||||||
|
version = "3.1.2";
|
||||||
|
sha256 = "0a332ia5pabnz7mdfc99a5hlc7drnwzlc7cj9b5c3an6dq636p66";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Collections.NonGeneric";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "19994r5y5bpdhj7di6w047apvil8lh06lh2c2yv9zc4fc5g9bl4d";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Resources.Reader";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "1jafi73dcf1lalrir46manq3iy6xnxk2z7gpdpwg4wqql7dv3ril";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Xml.XPath.XmlDocument";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0l7yljgif41iv5g56l3nxy97hzzgck2a7rhnfnljhx9b0ry41bvc";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.NETCore.Platforms";
|
||||||
|
version = "3.1.0";
|
||||||
|
sha256 = "1gc1x8f95wk8yhgznkwsg80adk1lc65v9n5rx4yaa4bc5dva0z3j";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.CSharp";
|
||||||
|
version = "4.7.0";
|
||||||
|
sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Xml.XPath";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0fjqgb6y66d72d5n8qq1h213d9nv2vi8mpv8p28j3m9rccmsh04m";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Extensions.Logging.Abstractions";
|
||||||
|
version = "1.0.0";
|
||||||
|
sha256 = "1sh9bidmhy32gkz6fkli79mxv06546ybrzppfw5v2aq0bda1ghka";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Security.Principal.Windows";
|
||||||
|
version = "4.7.0";
|
||||||
|
sha256 = "1a56ls5a9sr3ya0nr086sdpa9qv0abv31dd6fp27maqa9zclqq5d";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Security.AccessControl";
|
||||||
|
version = "4.7.0";
|
||||||
|
sha256 = "0n0k0w44flkd8j0xw7g3g3vhw7dijfm51f75xkm1qxnbh4y45mpz";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.AspNetCore.JsonPatch";
|
||||||
|
version = "3.1.1";
|
||||||
|
sha256 = "0c0aaz9rlh9chc53dnv5jryp0x0415hipaizrmih3kzwd3fmqpml";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Newtonsoft.Json";
|
||||||
|
version = "12.0.2";
|
||||||
|
sha256 = "0w2fbji1smd2y7x25qqibf1qrznmv4s6s0jvrbvr6alb7mfyqvh5";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Resources.Writer";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "07hp218kjdcvpl27djspnixgnacbp9apma61zz3wsca9fx5g3lmv";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Reflection.Metadata";
|
||||||
|
version = "1.3.0";
|
||||||
|
sha256 = "1y5m6kryhjpqqm2g3h3b6bzig13wkiw954x3b7icqjm6xypm1x3b";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Collections.Immutable";
|
||||||
|
version = "1.2.0";
|
||||||
|
sha256 = "1jm4pc666yiy7af1mcf7766v710gp0h40p228ghj6bavx7xfa38m";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Linq.Parallel";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0i33x9f4h3yq26yvv6xnq4b0v51rl5z8v1bm7vk972h5lvf4apad";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Diagnostics.Process";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "061lrcs7xribrmq7kab908lww6kn2xn1w3rdc41q189y0jibl19s";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Serialization.Xml";
|
||||||
|
version = "4.1.1";
|
||||||
|
sha256 = "11747an5gbz821pwahaim3v82gghshnj9b5c4cw539xg5a3gq7rk";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Threading.ThreadPool";
|
||||||
|
version = "4.0.10";
|
||||||
|
sha256 = "0fdr61yjcxh5imvyf93n2m3n5g9pp54bnw2l1d2rdl9z6dd31ypx";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Runtime.Loader";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "0lpfi3psqcp6zxsjk2qyahal7zaawviimc8lhrlswhip2mx7ykl0";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Diagnostics.Contracts";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0y6dkd9n5k98vzhc3w14r2pbhf10qjn2axpghpmfr6rlxx9qrb9j";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Diagnostics.FileVersionInfo";
|
||||||
|
version = "4.0.0";
|
||||||
|
sha256 = "1s5vxhy7i09bmw51kxqaiz9zaj9am8wsjyz13j85sp23z267hbv3";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "NBitcoin.Secp256k1";
|
||||||
|
version = "1.0.1";
|
||||||
|
sha256 = "0j3a8iamqh06b7am6k8gh6d41zvrnmsif3525bw742jw5byjypdl";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.AspNetCore.Mvc.NewtonsoftJson";
|
||||||
|
version = "3.1.1";
|
||||||
|
sha256 = "1c2lrlp64kkacnjgdyygr6fqdawk10l8j4qgppii6rq61yjwhcig";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Newtonsoft.Json.Bson";
|
||||||
|
version = "1.0.2";
|
||||||
|
sha256 = "0c27bhy9x3c2n26inq32kmp6drpm71n6mqnmcr19wrlcaihglj35";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Win32.Registry";
|
||||||
|
version = "4.7.0";
|
||||||
|
sha256 = "0bx21jjbs7l5ydyw4p6cn07chryxpmchq2nl5pirzz4l3b0q4dgs";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.OpenApi";
|
||||||
|
version = "1.1.4";
|
||||||
|
sha256 = "1sn79829nhx6chi2qxsza1801di7zdl5fd983m0jakawzbjhjcb3";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "NBitcoin";
|
||||||
|
version = "5.0.29";
|
||||||
|
sha256 = "0a6jvdvnf5h9j6c3ii3pdnkq79shmcm1hf6anaqcwvi3gq19chak";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Swashbuckle.AspNetCore.SwaggerUI";
|
||||||
|
version = "5.0.0";
|
||||||
|
sha256 = "0d7vjq489rz208j6k3rb7vq6mzxzff3mqg83yk2rqy25vklrsbjd";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Swashbuckle.AspNetCore";
|
||||||
|
version = "5.0.0";
|
||||||
|
sha256 = "0rn2awmzrsrppk97xbbwk4kq1mys9bygb5xhl6mphbk0hchrvh09";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Swashbuckle.AspNetCore.SwaggerGen";
|
||||||
|
version = "5.0.0";
|
||||||
|
sha256 = "00swg2avqnb38q2bsxljd34n8rpknp74h9vbn0fdnfds3a32cqr4";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Microsoft.Extensions.ApiDescription.Server";
|
||||||
|
version = "3.0.0";
|
||||||
|
sha256 = "13a47xcqyi5gz85swxd4mgp7ndgl4kknrvv3xwmbn71hsh953hsh";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "Swashbuckle.AspNetCore.Swagger";
|
||||||
|
version = "5.0.0";
|
||||||
|
sha256 = "1341nv8nmh6avs3y7w2szzir5qd0bndxwrkdmvvj3hcxj1126w2f";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.unix.System.Private.Uri";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0ic5dgc45jkhcr1g9xmmzjm7ffiw4cymm0fprczlx4fnww4783nm";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Text.Encoding";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "0m4vgmzi1ky8xlj0r7xcyazxln3j9dlialnk6d2gmgrfnzf8f9m7";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Threading.Tasks";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "1qzdp09qs8br5qxzlm1lgbjn4n57fk8vr1lzrmli2ysdg6x1xzvk";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "System.Private.Uri";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "0k57qhawjysm4cpbfpc49kl4av7lji310kjcamkl23bwgij5ld9j";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Diagnostics.Tracing";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "041im8hmp1zdgrx6jzyrdch6kshvbddmkar7r2mlm1ksb5c5kwpq";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.IO";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "0kasfkjiml2kk8prnyn1990nhsahnjggvqwszqjdsfwfl43vpcb5";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Runtime.Handles";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1kswgqhy34qvc49i981fk711s7knd6z13bp0rin8ms6axkh98nas";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Reflection.Primitives";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1zxrpvixr5fqzkxpnin6g6gjq6xajy1snghz99ds2dwbhm276rhz";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Runtime";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "0mjr2bi7wvnkphfjqgkyf8vfyvy15a829jz6mivl6jmksh2bx40m";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Resources.ResourceManager";
|
||||||
|
version = "4.0.1";
|
||||||
|
sha256 = "1jmgs7hynb2rff48623wnyb37558bbh1q28k9c249j5r5sgsr5kr";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Globalization";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "0240rp66pi5bw1xklmh421hj7arwcdmjmgfkiq1cbc6nrm8ah286";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Collections";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "1x44bm1cgv28zmrp095wf9mn8a6a0ivnzp9v14dcbhx06igxzgg0";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.unix.System.Diagnostics.Debug";
|
||||||
|
version = "4.0.11";
|
||||||
|
sha256 = "05ndbai4vpqrry0ghbfgqc8xblmplwjgndxmdn1zklqimczwjg2d";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.unix.System.Runtime.Extensions";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "0x1cwd7cvifzmn5x1wafvj75zdxlk3mxy860igh3x1wx0s8167y4";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Reflection";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "06kcs059d5czyakx75rvlwa2mr86156w18fs7chd03f7084l7mq6";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
name = "runtime.any.System.Runtime.InteropServices";
|
||||||
|
version = "4.1.0";
|
||||||
|
sha256 = "0gm8if0hcmp1qys1wmx4970k2x62pqvldgljsyzbjhiy5644vl8z";
|
||||||
|
})
|
||||||
|
]
|
@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
|
|||||||
desktopName = "Wasabi";
|
desktopName = "Wasabi";
|
||||||
genericName = "Bitcoin wallet";
|
genericName = "Bitcoin wallet";
|
||||||
comment = meta.description;
|
comment = meta.description;
|
||||||
categories = "Application;Network;Utility;";
|
categories = "Network;Utility;";
|
||||||
};
|
};
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
|
|||||||
comment = "Integrated Development Environment";
|
comment = "Integrated Development Environment";
|
||||||
desktopName = "Eclipse IDE";
|
desktopName = "Eclipse IDE";
|
||||||
genericName = "Integrated Development Environment";
|
genericName = "Integrated Development Environment";
|
||||||
categories = "Application;Development;";
|
categories = "Development;";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -1,25 +1,35 @@
|
|||||||
{ stdenv, buildGoPackage, fetchFromGitHub }:
|
{ stdenv, buildGoPackage, fetchFromGitHub, installShellFiles }:
|
||||||
|
|
||||||
buildGoPackage rec {
|
buildGoPackage rec {
|
||||||
pname = "micro";
|
pname = "micro";
|
||||||
version = "2.0.3";
|
version = "2.0.5";
|
||||||
|
|
||||||
goPackagePath = "github.com/zyedidia/micro";
|
goPackagePath = "github.com/zyedidia/micro";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "zyedidia";
|
owner = "zyedidia";
|
||||||
repo = "micro";
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "017m9kb3gfrgzd06f1nma1i3m5rb0hzpgdikb86lsyv8ik18y12z";
|
sha256 = "12fyyax1mr0n82s5yhmk90iyyzbh32rppkkpj37c25pal73czdhc";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ installShellFiles ];
|
||||||
|
|
||||||
subPackages = [ "cmd/micro" ];
|
subPackages = [ "cmd/micro" ];
|
||||||
|
|
||||||
buildFlagsArray = [ "-ldflags=" "-X ${goPackagePath}/internal/util.Version=${version}" ];
|
buildFlagsArray = let t = "${goPackagePath}/internal/util"; in ''
|
||||||
|
-ldflags=
|
||||||
|
-X ${t}.Version=${version}
|
||||||
|
-X ${t}.CommitHash=${src.rev}
|
||||||
|
'';
|
||||||
|
|
||||||
goDeps = ./deps.nix;
|
goDeps = ./deps.nix;
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
installManPage $src/assets/packaging/micro.1
|
||||||
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
homepage = "https://micro-editor.github.io";
|
homepage = "https://micro-editor.github.io";
|
||||||
description = "Modern and intuitive terminal-based text editor";
|
description = "Modern and intuitive terminal-based text editor";
|
||||||
|
8
pkgs/applications/editors/micro/deps.nix
generated
8
pkgs/applications/editors/micro/deps.nix
generated
@ -203,8 +203,8 @@
|
|||||||
fetch = {
|
fetch = {
|
||||||
type = "git";
|
type = "git";
|
||||||
url = "https://github.com/zyedidia/clipboard";
|
url = "https://github.com/zyedidia/clipboard";
|
||||||
rev = "241f98e9b197";
|
rev = "7c45b8673834";
|
||||||
sha256 = "1glc8w30sijpbppcvaf3503rmx5nxqkcgw87dr2pr3q3vv1bg3zi";
|
sha256 = "0ag36wd3830d4s6fvpj05v6f662c5rymgdydsj2gq8aaqplfb0v4";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -257,8 +257,8 @@
|
|||||||
fetch = {
|
fetch = {
|
||||||
type = "git";
|
type = "git";
|
||||||
url = "https://github.com/zyedidia/tcell";
|
url = "https://github.com/zyedidia/tcell";
|
||||||
rev = "v1.4.4";
|
rev = "v1.4.7";
|
||||||
sha256 = "0d62a9csab15b64y09jcbvq71065wliw4bd5m7lfpl5k8rmrrdyi";
|
sha256 = "1ddaznp0haz35mxfjjh2fmamdrlk1igqg65fz22l5r6vvhcdsfxa";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
@ -10,7 +10,7 @@ let
|
|||||||
comment = "Integrated Development Environment";
|
comment = "Integrated Development Environment";
|
||||||
desktopName = "Apache NetBeans IDE";
|
desktopName = "Apache NetBeans IDE";
|
||||||
genericName = "Integrated Development Environment";
|
genericName = "Integrated Development Environment";
|
||||||
categories = "Application;Development;";
|
categories = "Development;";
|
||||||
icon = "netbeans";
|
icon = "netbeans";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
@ -104,6 +104,8 @@ in stdenv.mkDerivation rec {
|
|||||||
++ stdenv.lib.optionals luaSupport [
|
++ stdenv.lib.optionals luaSupport [
|
||||||
"--with-lua-prefix=${lua}"
|
"--with-lua-prefix=${lua}"
|
||||||
"--enable-luainterp"
|
"--enable-luainterp"
|
||||||
|
] ++ stdenv.lib.optional lua.pkgs.isLuaJIT [
|
||||||
|
"--with-luajit"
|
||||||
]
|
]
|
||||||
++ stdenv.lib.optionals pythonSupport [
|
++ stdenv.lib.optionals pythonSupport [
|
||||||
"--enable-python${if isPython3 then "3" else ""}interp=yes"
|
"--enable-python${if isPython3 then "3" else ""}interp=yes"
|
||||||
|
@ -10,7 +10,7 @@ let
|
|||||||
[ qscintilla-qt5 gdal jinja2 numpy psycopg2
|
[ qscintilla-qt5 gdal jinja2 numpy psycopg2
|
||||||
chardet dateutil pyyaml pytz requests urllib3 pygments pyqt5 sip owslib six ];
|
chardet dateutil pyyaml pytz requests urllib3 pygments pyqt5 sip owslib six ];
|
||||||
in mkDerivation rec {
|
in mkDerivation rec {
|
||||||
version = "3.10.4";
|
version = "3.10.7";
|
||||||
pname = "qgis";
|
pname = "qgis";
|
||||||
name = "${pname}-unwrapped-${version}";
|
name = "${pname}-unwrapped-${version}";
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ in mkDerivation rec {
|
|||||||
owner = "qgis";
|
owner = "qgis";
|
||||||
repo = "QGIS";
|
repo = "QGIS";
|
||||||
rev = "final-${lib.replaceStrings ["."] ["_"] version}";
|
rev = "final-${lib.replaceStrings ["."] ["_"] version}";
|
||||||
sha256 = "0d1rsgjgnnq6jgms5bgppz8lkh4518nf90fk0qvxajdfi9j4jn12";
|
sha256 = "0z593n5g3zwhlzhs0z7nlpblz6z2rl3y7y3j1wf1rdx76i8p3qgf";
|
||||||
};
|
};
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
|
@ -1,25 +1,22 @@
|
|||||||
{ stdenv, rustPlatform , fetchFromGitHub, Security }:
|
{ stdenv, rustPlatform , fetchFromGitHub, Security }:
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "whitebox_tools";
|
pname = "whitebox_tools";
|
||||||
version = "1.2.0";
|
version = "1.3.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jblindsay";
|
owner = "jblindsay";
|
||||||
repo = "whitebox-tools";
|
repo = "whitebox-tools";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0zi32d0wrbl2763dcllv2g0liwacsfiza5lkx52620prjjbhby8i";
|
sha256 = "0c9jmfjz6ys65y65zlllv9xvaaavr9jpqc1dc217iywhj07j8k2v";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
|
buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
|
||||||
|
|
||||||
cargoSha256 = "13k21akyfqgamywj39bw73sldby1s02vyvxfglxbaqq1x96xcy4i";
|
cargoSha256 = "05w2jimmygg7dc93i8bpjpjc5yj5xfpfkjnbbgw2sq4kh06r5ii4";
|
||||||
|
|
||||||
# failures: structures::polyline::test::test_polyline_split
|
|
||||||
doCheck = false;
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "An advanced geospatial data analysis platform";
|
description = "An advanced geospatial data analysis platform";
|
||||||
homepage = "http://www.uoguelph.ca/~hydrogeo/WhiteboxTools/index.html";
|
homepage = "https://jblindsay.github.io/ghrg/WhiteboxTools/index.html";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = [ maintainers.mpickering ];
|
maintainers = [ maintainers.mpickering ];
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
|
@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
|
|||||||
icon = "avocode";
|
icon = "avocode";
|
||||||
desktopName = "Avocode";
|
desktopName = "Avocode";
|
||||||
genericName = "Design Inspector";
|
genericName = "Design Inspector";
|
||||||
categories = "Application;Development;";
|
categories = "Development;";
|
||||||
comment = "The bridge between designers and developers";
|
comment = "The bridge between designers and developers";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -11,11 +11,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "drawio";
|
pname = "drawio";
|
||||||
version = "13.2.2";
|
version = "13.3.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/draw.io-x86_64-${version}.rpm";
|
url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/draw.io-x86_64-${version}.rpm";
|
||||||
sha256 = "0npqw4ih047d9s1yyllcvcih2r61fgji4rvzsw88r02mj5q5rgdn";
|
sha256 = "0zvxmqqbgfxad1n9pa4h99l8hys486wziw5yyndxbv1v80p55p0p";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
59
pkgs/applications/graphics/evilpixie/default.nix
Normal file
59
pkgs/applications/graphics/evilpixie/default.nix
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
{ mkDerivation
|
||||||
|
, lib
|
||||||
|
, fetchFromGitHub
|
||||||
|
, makeDesktopItem
|
||||||
|
, qmake
|
||||||
|
, qtbase
|
||||||
|
, libpng
|
||||||
|
, giflib
|
||||||
|
, impy
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
desktopItem = makeDesktopItem {
|
||||||
|
name = "EvilPixie";
|
||||||
|
desktopName = "EvilPixie";
|
||||||
|
exec = "evilpixie %F";
|
||||||
|
icon = "evilpixie";
|
||||||
|
genericName = "Image Editor";
|
||||||
|
categories = "Graphics;2DGraphics;RasterGraphics;";
|
||||||
|
mimeType = "image/bmp;image/gif;image/jpeg;image/jpg;image/png;image/x-pcx;image/x-targa;image/x-tga;";
|
||||||
|
};
|
||||||
|
|
||||||
|
in mkDerivation rec {
|
||||||
|
pname = "evilpixie";
|
||||||
|
version = "0.2";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "bcampbell";
|
||||||
|
repo = "evilpixie";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "1yg4ic3kcxqmr7k5bbvrv5iavlnhpdx6510z5wha9k9k5q9c4dvh";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
qmake
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
qtbase
|
||||||
|
libpng
|
||||||
|
giflib
|
||||||
|
impy
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
ln -s ${desktopItem}/share/applications $out/share
|
||||||
|
install -Dm 444 icon_128x128.png $out/share/icons/hicolor/128x128/apps/evilpixie.png
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Pixel-oriented paint program, modelled on Deluxe Paint";
|
||||||
|
homepage = "http://evilpixie.scumways.com/";
|
||||||
|
downloadPage = "https://github.com/bcampbell/evilpixie/releases";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
maintainers = with maintainers; [ fgaz ];
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
|||||||
desktopName = "SwingSane";
|
desktopName = "SwingSane";
|
||||||
genericName = "Scan from local or remote SANE servers";
|
genericName = "Scan from local or remote SANE servers";
|
||||||
comment = meta.description;
|
comment = meta.description;
|
||||||
categories = "Office;Application;";
|
categories = "Office;";
|
||||||
};
|
};
|
||||||
|
|
||||||
in ''
|
in ''
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
# Generated by debian-patches.sh from debian-patches.txt
|
|
||||||
let
|
|
||||||
prefix = "http://patch-tracker.debian.org/patch/series/dl/xaralx/0.7r1785-5";
|
|
||||||
in
|
|
||||||
[
|
|
||||||
{
|
|
||||||
url = "${prefix}/30_gtk_wxwidgets_symbol_clash";
|
|
||||||
sha256 = "1rc9dh9mnp93mad96dkp7idyhhcw7h6w0g5s92mqgzj79hqgaziz";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
url = "${prefix}/40_algorithm_include";
|
|
||||||
sha256 = "03jhl1qnxj7nl8malf6v1y24aldfz87x1p2jxp04mrr35nzvyyc0";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
url = "${prefix}/50_update_imagemagick_version_parser";
|
|
||||||
sha256 = "1nilsqghlr649sc14n1aqkhdx7f66rq91gqccdpi17jwijs27497";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
url = "${prefix}/remove-icon-suffix";
|
|
||||||
sha256 = "160zmkgwlsanqivnip89558yvd9zvqp8ks2wbyr2aigl2rafin22";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
url = "${prefix}/45_fix_gcc4";
|
|
||||||
sha256 = "06zsj0z9v5n557gj8337v6xd26clbvm4dc0qhvpvzbisq81l9jyi";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
url = "${prefix}/55_fix_contstuctor_call";
|
|
||||||
sha256 = "0b14glrcwhv0ja960h56n5jm4f9563ladap2pgaywihq485ql1c1";
|
|
||||||
}
|
|
||||||
]
|
|
@ -1,7 +0,0 @@
|
|||||||
xaralx/0.7r1785-5
|
|
||||||
30_gtk_wxwidgets_symbol_clash
|
|
||||||
40_algorithm_include
|
|
||||||
50_update_imagemagick_version_parser
|
|
||||||
remove-icon-suffix
|
|
||||||
45_fix_gcc4
|
|
||||||
55_fix_contstuctor_call
|
|
@ -1,22 +0,0 @@
|
|||||||
{stdenv, fetchurl, automake, gettext, freetype, libxml2, pango, pkgconfig
|
|
||||||
, wxGTK, gtk2, perl, zip}:
|
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "xaralx-0.7r1785";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "http://downloads2.xara.com/opensource/XaraLX-0.7r1785.tar.bz2";
|
|
||||||
sha256 = "05xbzq1i1vw2mdsv7zjqfpxfv3g1j0g5kks0gq6sh373xd6y8lyh";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ automake pkgconfig gettext perl zip ];
|
|
||||||
buildInputs = [ wxGTK gtk2 libxml2 freetype pango ];
|
|
||||||
|
|
||||||
configureFlags = [ "--disable-svnversion" ];
|
|
||||||
|
|
||||||
patches = map fetchurl (import ./debian-patches.nix);
|
|
||||||
|
|
||||||
prePatch = "patchShebangs Scripts";
|
|
||||||
|
|
||||||
meta.broken = true;
|
|
||||||
}
|
|
@ -89,6 +89,7 @@ let
|
|||||||
kaddressbook = callPackage ./kaddressbook.nix {};
|
kaddressbook = callPackage ./kaddressbook.nix {};
|
||||||
kalarm = callPackage ./kalarm.nix {};
|
kalarm = callPackage ./kalarm.nix {};
|
||||||
kalarmcal = callPackage ./kalarmcal.nix {};
|
kalarmcal = callPackage ./kalarmcal.nix {};
|
||||||
|
kapptemplate = callPackage ./kapptemplate.nix { };
|
||||||
kate = callPackage ./kate.nix {};
|
kate = callPackage ./kate.nix {};
|
||||||
kbreakout = callPackage ./kbreakout.nix {};
|
kbreakout = callPackage ./kbreakout.nix {};
|
||||||
kcachegrind = callPackage ./kcachegrind.nix {};
|
kcachegrind = callPackage ./kcachegrind.nix {};
|
||||||
|
24
pkgs/applications/kde/kapptemplate.nix
Normal file
24
pkgs/applications/kde/kapptemplate.nix
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{ lib
|
||||||
|
, mkDerivation
|
||||||
|
, fetchurl
|
||||||
|
, cmake
|
||||||
|
, extra-cmake-modules
|
||||||
|
, qtbase
|
||||||
|
, kactivities
|
||||||
|
}:
|
||||||
|
mkDerivation {
|
||||||
|
|
||||||
|
name = "kapptemplate";
|
||||||
|
|
||||||
|
nativeBuildInputs = [ extra-cmake-modules cmake ];
|
||||||
|
|
||||||
|
buildInputs = [ kactivities qtbase ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "KDE App Code Template Generator";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
homepage = "https://kde.org/applications/en/development/org.kde.kapptemplate";
|
||||||
|
maintainers = [ maintainers.shamilton ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
@ -30,7 +30,7 @@ in stdenv.mkDerivation rec {
|
|||||||
desktopName = "Airtame";
|
desktopName = "Airtame";
|
||||||
icon = name;
|
icon = name;
|
||||||
genericName = comment;
|
genericName = comment;
|
||||||
categories = "Application;Network;";
|
categories = "Network;";
|
||||||
};
|
};
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
@ -90,8 +90,6 @@ rustPlatform.buildRustPackage rec {
|
|||||||
--replace xdg-open ${xdg_utils}/bin/xdg-open
|
--replace xdg-open ${xdg_utils}/bin/xdg-open
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postBuild = lib.optionalString stdenv.isDarwin "make app";
|
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
@ -100,7 +98,8 @@ rustPlatform.buildRustPackage rec {
|
|||||||
'' + (
|
'' + (
|
||||||
if stdenv.isDarwin then ''
|
if stdenv.isDarwin then ''
|
||||||
mkdir $out/Applications
|
mkdir $out/Applications
|
||||||
cp -r $releaseDir/osx/Alacritty.app $out/Applications/Alacritty.app
|
cp -r extra/osx/Alacritty.app $out/Applications
|
||||||
|
ln -s $out/bin $out/Applications/Alacritty.app/Contents/MacOS
|
||||||
'' else ''
|
'' else ''
|
||||||
install -D extra/linux/Alacritty.desktop -t $out/share/applications/
|
install -D extra/linux/Alacritty.desktop -t $out/share/applications/
|
||||||
install -D extra/logo/compat/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg
|
install -D extra/logo/compat/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
{ stdenv, python3, fetchFromGitHub }:
|
{ stdenv, python3, fetchFromGitHub }:
|
||||||
|
|
||||||
with python3.pkgs; buildPythonApplication rec {
|
with python3.pkgs; buildPythonApplication rec {
|
||||||
version = "4.3";
|
version = "4.4";
|
||||||
pname = "buku";
|
pname = "buku";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jarun";
|
owner = "jarun";
|
||||||
repo = "buku";
|
repo = "buku";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1cq508ymak3g5fhi1n4bdiiqkc86s2l3k4dvzw842vv2x0441cac";
|
sha256 = "10r5f1n0vcxxmqqqsgmlvibwg1xffijrr2id6r140rgiyhprz556";
|
||||||
};
|
};
|
||||||
|
|
||||||
checkInputs = [
|
checkInputs = [
|
||||||
@ -38,6 +38,7 @@ with python3.pkgs; buildPythonApplication rec {
|
|||||||
click
|
click
|
||||||
html5lib
|
html5lib
|
||||||
vcrpy
|
vcrpy
|
||||||
|
toml
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
{ fetchgit, stdenv, pkgconfig, libtool, autoconf, automake
|
|
||||||
, curl, ncurses, ocl-icd, opencl-headers, xorg, jansson }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
version = "3.7.2";
|
|
||||||
pname = "cgminer";
|
|
||||||
|
|
||||||
src = fetchgit {
|
|
||||||
url = "https://github.com/ckolivas/cgminer.git";
|
|
||||||
rev = "refs/tags/v3.7.2";
|
|
||||||
sha256 = "1xfzx91dpwjj1vmhas3v9ybs0p2i74lrhinijmpav15acfggm9fq";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
|
||||||
buildInputs = [
|
|
||||||
autoconf automake libtool curl ncurses ocl-icd opencl-headers
|
|
||||||
xorg.libX11 xorg.libXext xorg.libXinerama jansson
|
|
||||||
];
|
|
||||||
configureScript = "./autogen.sh";
|
|
||||||
configureFlags = [ "--enable-scrypt" "--enable-opencl" ];
|
|
||||||
NIX_LDFLAGS = "-lgcc_s -lX11 -lXext -lXinerama";
|
|
||||||
|
|
||||||
postBuild = ''
|
|
||||||
gcc api-example.c -o cgminer-api
|
|
||||||
'';
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
cp cgminer-api $out/bin/
|
|
||||||
chmod 444 $out/bin/*.cl
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
description = "CPU/GPU miner in c for bitcoin";
|
|
||||||
longDescription= ''
|
|
||||||
This is a multi-threaded multi-pool GPU, FPGA and ASIC miner with ATI GPU
|
|
||||||
monitoring, (over)clocking and fanspeed support for bitcoin and derivative
|
|
||||||
coins. Do not use on multiple block chains at the same time!
|
|
||||||
'';
|
|
||||||
homepage = "https://github.com/ckolivas/cgminer";
|
|
||||||
license = licenses.gpl3;
|
|
||||||
maintainers = [ maintainers.offline ];
|
|
||||||
platforms = stdenv.lib.platforms.linux;
|
|
||||||
hydraPlatforms = [];
|
|
||||||
};
|
|
||||||
}
|
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "dbeaver-ce";
|
pname = "dbeaver-ce";
|
||||||
version = "7.1.0";
|
version = "7.1.1";
|
||||||
|
|
||||||
desktopItem = makeDesktopItem {
|
desktopItem = makeDesktopItem {
|
||||||
name = "dbeaver";
|
name = "dbeaver";
|
||||||
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
|
|||||||
desktopName = "dbeaver";
|
desktopName = "dbeaver";
|
||||||
comment = "SQL Integrated Development Environment";
|
comment = "SQL Integrated Development Environment";
|
||||||
genericName = "SQL Integrated Development Environment";
|
genericName = "SQL Integrated Development Environment";
|
||||||
categories = "Application;Development;";
|
categories = "Development;";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
@ -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 = "1q3f5bghm3jw5c7c62ivf32fldjqhmj1a0qlwgqjxyhmfcig0rnb";
|
sha256 = "11c9jvpjg72xkwnni4clwg3inig77s7jz3ik52gk52m6f09brxhs";
|
||||||
};
|
};
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
|
|||||||
desktopName = "GanttProject";
|
desktopName = "GanttProject";
|
||||||
genericName = "Shedule and manage projects";
|
genericName = "Shedule and manage projects";
|
||||||
comment = meta.description;
|
comment = meta.description;
|
||||||
categories = "Office;Application;";
|
categories = "Office;";
|
||||||
};
|
};
|
||||||
|
|
||||||
javaOptions = [
|
javaOptions = [
|
||||||
|
@ -12,7 +12,7 @@ let
|
|||||||
desktopName = "GoldenCheetah";
|
desktopName = "GoldenCheetah";
|
||||||
genericName = "GoldenCheetah";
|
genericName = "GoldenCheetah";
|
||||||
comment = "Performance software for cyclists, runners and triathletes";
|
comment = "Performance software for cyclists, runners and triathletes";
|
||||||
categories = "Application;Utility;";
|
categories = "Utility;";
|
||||||
};
|
};
|
||||||
in mkDerivation rec {
|
in mkDerivation rec {
|
||||||
pname = "golden-cheetah";
|
pname = "golden-cheetah";
|
||||||
|
@ -15,15 +15,7 @@ stdenv.mkDerivation rec {
|
|||||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||||
buildInputs = [ readline ncurses gettext ];
|
buildInputs = [ readline ncurses gettext ];
|
||||||
|
|
||||||
configurePhase = ''
|
configureFlags = [ "--prefix=$(out)" ];
|
||||||
autoreconf -fvi
|
|
||||||
./configure
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/bin/
|
|
||||||
mv src/hstr $out/bin/
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://github.com/dvorka/hstr";
|
homepage = "https://github.com/dvorka/hstr";
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "hugo";
|
pname = "hugo";
|
||||||
version = "0.72.0";
|
version = "0.73.0";
|
||||||
|
|
||||||
buildInputs = [ libsass ];
|
buildInputs = [ libsass ];
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ buildGoModule rec {
|
|||||||
owner = "gohugoio";
|
owner = "gohugoio";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "05parzx0wm51z4qkvh4k096ykgiyr9i5xy55c0g99j4y96drcybb";
|
sha256 = "0qhv8kdv5k1xfk6106lxvsz7f92k7w6wk05ngz7qxbkb6zkcnshw";
|
||||||
};
|
};
|
||||||
|
|
||||||
golibsass = fetchFromGitHub {
|
golibsass = fetchFromGitHub {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
activesupport (6.0.3.1)
|
activesupport (6.0.3.2)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
@ -15,16 +15,16 @@ GEM
|
|||||||
eventmachine (>= 0.12.9)
|
eventmachine (>= 0.12.9)
|
||||||
http_parser.rb (~> 0.6.0)
|
http_parser.rb (~> 0.6.0)
|
||||||
eventmachine (1.2.7)
|
eventmachine (1.2.7)
|
||||||
ffi (1.12.2)
|
ffi (1.13.1)
|
||||||
forwardable-extended (2.6.0)
|
forwardable-extended (2.6.0)
|
||||||
gemoji (3.0.1)
|
gemoji (3.0.1)
|
||||||
html-pipeline (2.12.3)
|
html-pipeline (2.13.0)
|
||||||
activesupport (>= 2)
|
activesupport (>= 2)
|
||||||
nokogiri (>= 1.4)
|
nokogiri (>= 1.4)
|
||||||
http_parser.rb (0.6.0)
|
http_parser.rb (0.6.0)
|
||||||
i18n (1.8.2)
|
i18n (1.8.3)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
jekyll (4.1.0)
|
jekyll (4.1.1)
|
||||||
addressable (~> 2.4)
|
addressable (~> 2.4)
|
||||||
colorator (~> 1.0)
|
colorator (~> 1.0)
|
||||||
em-websocket (~> 0.5)
|
em-websocket (~> 0.5)
|
||||||
@ -76,9 +76,9 @@ GEM
|
|||||||
rb-inotify (0.10.1)
|
rb-inotify (0.10.1)
|
||||||
ffi (~> 1.0)
|
ffi (~> 1.0)
|
||||||
rexml (3.2.4)
|
rexml (3.2.4)
|
||||||
rouge (3.19.0)
|
rouge (3.20.0)
|
||||||
safe_yaml (1.0.5)
|
safe_yaml (1.0.5)
|
||||||
sassc (2.3.0)
|
sassc (2.4.0)
|
||||||
ffi (~> 1.9)
|
ffi (~> 1.9)
|
||||||
terminal-table (1.8.0)
|
terminal-table (1.8.0)
|
||||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1l29n9n38c9lpy5smh26r7fy7jp2bpjqlzhxgsr79cv7xpwlrbhs";
|
sha256 = "02sh4q8izyfdnh7z2nj5mn5sklfvqgx9rrag5j3l51y8aqkrg2yk";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.0.3.1";
|
version = "6.0.3.2";
|
||||||
};
|
};
|
||||||
addressable = {
|
addressable = {
|
||||||
dependencies = ["public_suffix"];
|
dependencies = ["public_suffix"];
|
||||||
@ -67,10 +67,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4";
|
sha256 = "12lpwaw82bb0rm9f52v1498bpba8aj2l2q359mkwbxsswhpga5af";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.12.2";
|
version = "1.13.1";
|
||||||
};
|
};
|
||||||
forwardable-extended = {
|
forwardable-extended = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@ -98,10 +98,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1x5i330yks7pb1jxcbm9n6gslkgaqhyvl13d0cqxmxzkcajvb7z4";
|
sha256 = "01snn9z3c2p17d9wfczkdkml6mdffah6fpyzgs9mdskb14m68rq6";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "2.12.3";
|
version = "2.13.0";
|
||||||
};
|
};
|
||||||
"http_parser.rb" = {
|
"http_parser.rb" = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@ -119,10 +119,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0jwrd1l4mxz06iyx6053lr6hz2zy7ah2k3ranfzisvych5q19kwm";
|
sha256 = "10nq1xjqvkhngiygji831qx9bryjwws95r4vrnlq9142bzkg670s";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.8.2";
|
version = "1.8.3";
|
||||||
};
|
};
|
||||||
jekyll = {
|
jekyll = {
|
||||||
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table"];
|
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table"];
|
||||||
@ -130,10 +130,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0v01g9cwn4v7rnpsl9yvscjzvah3p4xwh03zp37zxkvw5kv004n8";
|
sha256 = "192k1ggw99slpqpxb4xamcvcm2pdahgnmygl746hmkrar0i3xa5r";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "4.1.0";
|
version = "4.1.1";
|
||||||
};
|
};
|
||||||
jekyll-avatar = {
|
jekyll-avatar = {
|
||||||
dependencies = ["jekyll"];
|
dependencies = ["jekyll"];
|
||||||
@ -353,10 +353,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "102rc07d78k5bkl0s9nd1gw6wz0w0zcvg4g5sl7z9xxi4r793c35";
|
sha256 = "1r5npy9a95qh5v74lw7ir3nhaq4xrzyhfdixd7c5xy295i92nnic";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "3.19.0";
|
version = "3.20.0";
|
||||||
};
|
};
|
||||||
safe_yaml = {
|
safe_yaml = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@ -374,10 +374,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1qzfnvb8khvc6w2sn3k91mndc2w50xxx5c84jkr6xdxlmaq1a3kg";
|
sha256 = "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "2.3.0";
|
version = "2.4.0";
|
||||||
};
|
};
|
||||||
terminal-table = {
|
terminal-table = {
|
||||||
dependencies = ["unicode-display_width"];
|
dependencies = ["unicode-display_width"];
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
activesupport (6.0.3.1)
|
activesupport (6.0.3.2)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
@ -11,7 +11,7 @@ GEM
|
|||||||
public_suffix (>= 2.0.2, < 5.0)
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
classifier-reborn (2.2.0)
|
classifier-reborn (2.2.0)
|
||||||
fast-stemmer (~> 1.0)
|
fast-stemmer (~> 1.0)
|
||||||
coderay (1.1.2)
|
coderay (1.1.3)
|
||||||
coffee-script (2.4.1)
|
coffee-script (2.4.1)
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
execjs
|
execjs
|
||||||
@ -26,16 +26,16 @@ GEM
|
|||||||
faraday (1.0.1)
|
faraday (1.0.1)
|
||||||
multipart-post (>= 1.2, < 3)
|
multipart-post (>= 1.2, < 3)
|
||||||
fast-stemmer (1.0.2)
|
fast-stemmer (1.0.2)
|
||||||
ffi (1.12.2)
|
ffi (1.13.1)
|
||||||
forwardable-extended (2.6.0)
|
forwardable-extended (2.6.0)
|
||||||
gemoji (3.0.1)
|
gemoji (3.0.1)
|
||||||
html-pipeline (2.12.3)
|
html-pipeline (2.13.0)
|
||||||
activesupport (>= 2)
|
activesupport (>= 2)
|
||||||
nokogiri (>= 1.4)
|
nokogiri (>= 1.4)
|
||||||
http_parser.rb (0.6.0)
|
http_parser.rb (0.6.0)
|
||||||
i18n (1.8.2)
|
i18n (1.8.3)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
jekyll (4.1.0)
|
jekyll (4.1.1)
|
||||||
addressable (~> 2.4)
|
addressable (~> 2.4)
|
||||||
colorator (~> 1.0)
|
colorator (~> 1.0)
|
||||||
em-websocket (~> 0.5)
|
em-websocket (~> 0.5)
|
||||||
@ -55,7 +55,7 @@ GEM
|
|||||||
jekyll-coffeescript (2.0.0)
|
jekyll-coffeescript (2.0.0)
|
||||||
coffee-script (~> 2.2)
|
coffee-script (~> 2.2)
|
||||||
coffee-script-source (~> 1.12)
|
coffee-script-source (~> 1.12)
|
||||||
jekyll-feed (0.13.0)
|
jekyll-feed (0.14.0)
|
||||||
jekyll (>= 3.7, < 5.0)
|
jekyll (>= 3.7, < 5.0)
|
||||||
jekyll-gist (1.5.0)
|
jekyll-gist (1.5.0)
|
||||||
octokit (~> 4.2)
|
octokit (~> 4.2)
|
||||||
@ -110,9 +110,9 @@ GEM
|
|||||||
ffi (~> 1.0)
|
ffi (~> 1.0)
|
||||||
rdoc (6.2.1)
|
rdoc (6.2.1)
|
||||||
rexml (3.2.4)
|
rexml (3.2.4)
|
||||||
rouge (3.19.0)
|
rouge (3.20.0)
|
||||||
safe_yaml (1.0.5)
|
safe_yaml (1.0.5)
|
||||||
sassc (2.3.0)
|
sassc (2.4.0)
|
||||||
ffi (~> 1.9)
|
ffi (~> 1.9)
|
||||||
sawyer (0.8.2)
|
sawyer (0.8.2)
|
||||||
addressable (>= 2.3.5)
|
addressable (>= 2.3.5)
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1l29n9n38c9lpy5smh26r7fy7jp2bpjqlzhxgsr79cv7xpwlrbhs";
|
sha256 = "02sh4q8izyfdnh7z2nj5mn5sklfvqgx9rrag5j3l51y8aqkrg2yk";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.0.3.1";
|
version = "6.0.3.2";
|
||||||
};
|
};
|
||||||
addressable = {
|
addressable = {
|
||||||
dependencies = ["public_suffix"];
|
dependencies = ["public_suffix"];
|
||||||
@ -49,10 +49,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
|
sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.1.2";
|
version = "1.1.3";
|
||||||
};
|
};
|
||||||
coffee-script = {
|
coffee-script = {
|
||||||
dependencies = ["coffee-script-source" "execjs"];
|
dependencies = ["coffee-script-source" "execjs"];
|
||||||
@ -164,10 +164,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4";
|
sha256 = "12lpwaw82bb0rm9f52v1498bpba8aj2l2q359mkwbxsswhpga5af";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.12.2";
|
version = "1.13.1";
|
||||||
};
|
};
|
||||||
forwardable-extended = {
|
forwardable-extended = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@ -195,10 +195,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1x5i330yks7pb1jxcbm9n6gslkgaqhyvl13d0cqxmxzkcajvb7z4";
|
sha256 = "01snn9z3c2p17d9wfczkdkml6mdffah6fpyzgs9mdskb14m68rq6";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "2.12.3";
|
version = "2.13.0";
|
||||||
};
|
};
|
||||||
"http_parser.rb" = {
|
"http_parser.rb" = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@ -216,10 +216,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0jwrd1l4mxz06iyx6053lr6hz2zy7ah2k3ranfzisvych5q19kwm";
|
sha256 = "10nq1xjqvkhngiygji831qx9bryjwws95r4vrnlq9142bzkg670s";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.8.2";
|
version = "1.8.3";
|
||||||
};
|
};
|
||||||
jekyll = {
|
jekyll = {
|
||||||
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table"];
|
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table"];
|
||||||
@ -227,10 +227,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0v01g9cwn4v7rnpsl9yvscjzvah3p4xwh03zp37zxkvw5kv004n8";
|
sha256 = "192k1ggw99slpqpxb4xamcvcm2pdahgnmygl746hmkrar0i3xa5r";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "4.1.0";
|
version = "4.1.1";
|
||||||
};
|
};
|
||||||
jekyll-avatar = {
|
jekyll-avatar = {
|
||||||
dependencies = ["jekyll"];
|
dependencies = ["jekyll"];
|
||||||
@ -260,10 +260,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1lx8nvkhd8l1wm3b6s506rycwbmpbzbsbjl65p21asjz6vbwf1ir";
|
sha256 = "0fhbz5wc8cf60dwsbqcr49wygyk5qarpc7g77p6dlwq2r21nil5c";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.13.0";
|
version = "0.14.0";
|
||||||
};
|
};
|
||||||
jekyll-gist = {
|
jekyll-gist = {
|
||||||
dependencies = ["octokit"];
|
dependencies = ["octokit"];
|
||||||
@ -602,10 +602,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "102rc07d78k5bkl0s9nd1gw6wz0w0zcvg4g5sl7z9xxi4r793c35";
|
sha256 = "1r5npy9a95qh5v74lw7ir3nhaq4xrzyhfdixd7c5xy295i92nnic";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "3.19.0";
|
version = "3.20.0";
|
||||||
};
|
};
|
||||||
safe_yaml = {
|
safe_yaml = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@ -623,10 +623,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1qzfnvb8khvc6w2sn3k91mndc2w50xxx5c84jkr6xdxlmaq1a3kg";
|
sha256 = "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "2.3.0";
|
version = "2.4.0";
|
||||||
};
|
};
|
||||||
sawyer = {
|
sawyer = {
|
||||||
dependencies = ["addressable" "faraday"];
|
dependencies = ["addressable" "faraday"];
|
||||||
|
@ -68,7 +68,7 @@ with builtins; buildDotnetPackage rec {
|
|||||||
icon = "keepass";
|
icon = "keepass";
|
||||||
desktopName = "Keepass";
|
desktopName = "Keepass";
|
||||||
genericName = "Password manager";
|
genericName = "Password manager";
|
||||||
categories = "Application;Utility;";
|
categories = "Utility;";
|
||||||
mimeType = stdenv.lib.concatStringsSep ";" [
|
mimeType = stdenv.lib.concatStringsSep ";" [
|
||||||
"application/x-keepass2"
|
"application/x-keepass2"
|
||||||
""
|
""
|
||||||
|
@ -22,6 +22,11 @@ python3.pkgs.buildPythonApplication rec {
|
|||||||
install -D misc/zsh/_khard $out/share/zsh/site-functions/_khard
|
install -D misc/zsh/_khard $out/share/zsh/site-functions/_khard
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
preCheck = ''
|
||||||
|
# see https://github.com/scheibler/khard/issues/263
|
||||||
|
export COLUMNS=80
|
||||||
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://github.com/scheibler/khard";
|
homepage = "https://github.com/scheibler/khard";
|
||||||
description = "Console carddav client";
|
description = "Console carddav client";
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
libstartup_notification, libGL, libX11, libXrandr, libXinerama, libXcursor,
|
libstartup_notification, libGL, libX11, libXrandr, libXinerama, libXcursor,
|
||||||
libxkbcommon, libXi, libXext, wayland-protocols, wayland,
|
libxkbcommon, libXi, libXext, wayland-protocols, wayland,
|
||||||
installShellFiles,
|
installShellFiles,
|
||||||
which, dbus,
|
dbus,
|
||||||
Cocoa,
|
Cocoa,
|
||||||
CoreGraphics,
|
CoreGraphics,
|
||||||
Foundation,
|
Foundation,
|
||||||
@ -20,14 +20,14 @@
|
|||||||
with python3Packages;
|
with python3Packages;
|
||||||
buildPythonApplication rec {
|
buildPythonApplication rec {
|
||||||
pname = "kitty";
|
pname = "kitty";
|
||||||
version = "0.17.4";
|
version = "0.18.1";
|
||||||
format = "other";
|
format = "other";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kovidgoyal";
|
owner = "kovidgoyal";
|
||||||
repo = "kitty";
|
repo = "kitty";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1rbyj84y8r6h7qd6w7cw58v2abspippignj458ihv2m26i4als2x";
|
sha256 = "1g4mfgygyl143k0k6d3cb8b2l05ahiamlcqs1iqi66pc73cax4z6";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
@ -50,7 +50,7 @@ buildPythonApplication rec {
|
|||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pkgconfig which sphinx ncurses
|
pkgconfig sphinx ncurses
|
||||||
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
||||||
imagemagick
|
imagemagick
|
||||||
libicns # For the png2icns tool.
|
libicns # For the png2icns tool.
|
||||||
@ -63,13 +63,6 @@ buildPythonApplication rec {
|
|||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
./fix-paths.patch
|
./fix-paths.patch
|
||||||
] ++ stdenv.lib.optionals stdenv.isLinux [
|
|
||||||
(substituteAll {
|
|
||||||
src = ./library-paths.patch;
|
|
||||||
libstartup_notification = "${libstartup_notification}/lib/libstartup-notification-1.so";
|
|
||||||
libcanberra = "${libcanberra}/lib/libcanberra.so";
|
|
||||||
libEGL = "${stdenv.lib.getLib libGL}/lib/libEGL.so.1";
|
|
||||||
})
|
|
||||||
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
||||||
./no-lto.patch
|
./no-lto.patch
|
||||||
];
|
];
|
||||||
@ -77,11 +70,23 @@ buildPythonApplication rec {
|
|||||||
# Causes build failure due to warning
|
# Causes build failure due to warning
|
||||||
hardeningDisable = stdenv.lib.optional stdenv.isDarwin "strictoverflow";
|
hardeningDisable = stdenv.lib.optional stdenv.isDarwin "strictoverflow";
|
||||||
|
|
||||||
|
dontConfigure = true;
|
||||||
|
|
||||||
buildPhase = if stdenv.isDarwin then ''
|
buildPhase = if stdenv.isDarwin then ''
|
||||||
${python.interpreter} setup.py kitty.app --update-check-interval=0
|
${python.interpreter} setup.py kitty.app --update-check-interval=0
|
||||||
make man
|
make man
|
||||||
'' else ''
|
'' else ''
|
||||||
${python.interpreter} setup.py linux-package --update-check-interval=0
|
${python.interpreter} setup.py linux-package \
|
||||||
|
--update-check-interval=0 \
|
||||||
|
--egl-library='${stdenv.lib.getLib libGL}/lib/libEGL.so.1' \
|
||||||
|
--startup-notification-library='${libstartup_notification}/lib/libstartup-notification-1.so' \
|
||||||
|
--canberra-library='${libcanberra}/lib/libcanberra.so'
|
||||||
|
'';
|
||||||
|
|
||||||
|
checkInputs = [ pillow ];
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
${python.interpreter} test.py
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
@ -100,8 +105,6 @@ buildPythonApplication rec {
|
|||||||
wrapProgram "$out/bin/kitty" --prefix PATH : "$out/bin:${stdenv.lib.makeBinPath [ imagemagick xsel ncurses.dev ]}"
|
wrapProgram "$out/bin/kitty" --prefix PATH : "$out/bin:${stdenv.lib.makeBinPath [ imagemagick xsel ncurses.dev ]}"
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
|
|
||||||
# ZSH completions need to be invoked with `source`:
|
|
||||||
# https://github.com/kovidgoyal/kitty/blob/8ceb941051b89b7c50850778634f0b6137aa5e6e/docs/index.rst#zsh
|
|
||||||
mkdir -p "$out/share/"{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions}
|
mkdir -p "$out/share/"{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions}
|
||||||
"$out/bin/kitty" + complete setup fish > "$out/share/fish/vendor_completions.d/kitty.fish"
|
"$out/bin/kitty" + complete setup fish > "$out/share/fish/vendor_completions.d/kitty.fish"
|
||||||
"$out/bin/kitty" + complete setup bash > "$out/share/bash-completion/completions/kitty.bash"
|
"$out/bin/kitty" + complete setup bash > "$out/share/bash-completion/completions/kitty.bash"
|
||||||
@ -125,6 +128,7 @@ buildPythonApplication rec {
|
|||||||
homepage = "https://github.com/kovidgoyal/kitty";
|
homepage = "https://github.com/kovidgoyal/kitty";
|
||||||
description = "A modern, hackable, featureful, OpenGL based terminal emulator";
|
description = "A modern, hackable, featureful, OpenGL based terminal emulator";
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
|
changelog = "https://sw.kovidgoyal.net/kitty/changelog.html";
|
||||||
platforms = platforms.darwin ++ platforms.linux;
|
platforms = platforms.darwin ++ platforms.linux;
|
||||||
maintainers = with maintainers; [ tex rvolosatovs ma27 Luflosi ];
|
maintainers = with maintainers; [ tex rvolosatovs ma27 Luflosi ];
|
||||||
};
|
};
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
--- a/glfw/egl_context.c
|
|
||||||
+++ b/glfw/egl_context.c
|
|
||||||
@@ -314,7 +314,7 @@ bool _glfwInitEGL(void)
|
|
||||||
#elif defined(__CYGWIN__)
|
|
||||||
"libEGL-1.so",
|
|
||||||
#else
|
|
||||||
- "libEGL.so.1",
|
|
||||||
+ "@libEGL@",
|
|
||||||
#endif
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
--- a/kitty/desktop.c
|
|
||||||
+++ b/kitty/desktop.c
|
|
||||||
@@ -34,10 +34,7 @@ init_x11_startup_notification(PyObject UNUSED *self, PyObject *args) {
|
|
||||||
done = true;
|
|
||||||
|
|
||||||
const char* libnames[] = {
|
|
||||||
- "libstartup-notification-1.so",
|
|
||||||
- // some installs are missing the .so symlink, so try the full name
|
|
||||||
- "libstartup-notification-1.so.0",
|
|
||||||
- "libstartup-notification-1.so.0.0.0",
|
|
||||||
+ "@libstartup_notification@",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
for (int i = 0; libnames[i]; i++) {
|
|
||||||
@@ -113,10 +110,7 @@ load_libcanberra(void) {
|
|
||||||
if (done) return;
|
|
||||||
done = true;
|
|
||||||
const char* libnames[] = {
|
|
||||||
- "libcanberra.so",
|
|
||||||
- // some installs are missing the .so symlink, so try the full name
|
|
||||||
- "libcanberra.so.0",
|
|
||||||
- "libcanberra.so.0.2.5",
|
|
||||||
+ "@libcanberra@",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
for (int i = 0; libnames[i]; i++) {
|
|
@ -1,6 +1,6 @@
|
|||||||
--- a/setup.py
|
--- a/setup.py
|
||||||
+++ b/setup.py
|
+++ b/setup.py
|
||||||
@@ -277,10 +277,6 @@ def init_env(
|
@@ -287,10 +287,6 @@ def init_env(
|
||||||
cppflags += shlex.split(os.environ.get('CPPFLAGS', ''))
|
cppflags += shlex.split(os.environ.get('CPPFLAGS', ''))
|
||||||
cflags += shlex.split(os.environ.get('CFLAGS', ''))
|
cflags += shlex.split(os.environ.get('CFLAGS', ''))
|
||||||
ldflags += shlex.split(os.environ.get('LDFLAGS', ''))
|
ldflags += shlex.split(os.environ.get('LDFLAGS', ''))
|
||||||
|
@ -9,13 +9,13 @@
|
|||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
pname = "moolticute";
|
pname = "moolticute";
|
||||||
version = "0.43.16";
|
version = "0.43.19";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mooltipass";
|
owner = "mooltipass";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1gx1hbxiilggwfw0jspyk2cw92r6qs9a8yqa8x1d2ndf493mjx9y";
|
sha256 = "1rpkiyhy7z5zq0rmn0kj2kva57bnhkhvaplrlhfczv99h1kwsixg";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = [ "out" "udev" ];
|
outputs = [ "out" "udev" ];
|
||||||
|
@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
|
|||||||
desktopName = "PDFsam Basic";
|
desktopName = "PDFsam Basic";
|
||||||
genericName = "PDF Split and Merge";
|
genericName = "PDF Split and Merge";
|
||||||
mimeType = "application/pdf;";
|
mimeType = "application/pdf;";
|
||||||
categories = "Office;Application;";
|
categories = "Office;";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
@ -46,4 +46,4 @@ stdenv.mkDerivation rec {
|
|||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
maintainers = with maintainers; [ maintainers."1000101" ];
|
maintainers = with maintainers; [ maintainers."1000101" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ stdenv.mkDerivation rec {
|
|||||||
exec = "pgadmin3";
|
exec = "pgadmin3";
|
||||||
icon = "pgAdmin3";
|
icon = "pgAdmin3";
|
||||||
type = "Application";
|
type = "Application";
|
||||||
categories = "Application;Development;";
|
categories = "Development;";
|
||||||
mimeType = "text/html";
|
mimeType = "text/html";
|
||||||
};
|
};
|
||||||
in ''
|
in ''
|
||||||
|
@ -86,7 +86,7 @@ stdenv.mkDerivation rec {
|
|||||||
comment = "G-code generator for 3D printers";
|
comment = "G-code generator for 3D printers";
|
||||||
desktopName = "PrusaSlicer";
|
desktopName = "PrusaSlicer";
|
||||||
genericName = "3D printer tool";
|
genericName = "3D printer tool";
|
||||||
categories = "Application;Development;";
|
categories = "Development;";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
|
|||||||
comment = "G-code generator for 3D printers";
|
comment = "G-code generator for 3D printers";
|
||||||
desktopName = "Slic3r";
|
desktopName = "Slic3r";
|
||||||
genericName = "3D printer tool";
|
genericName = "3D printer tool";
|
||||||
categories = "Application;Development;";
|
categories = "Development;";
|
||||||
};
|
};
|
||||||
|
|
||||||
prePatch = ''
|
prePatch = ''
|
||||||
|
@ -4,11 +4,12 @@
|
|||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "st-0.8.3";
|
pname = "st";
|
||||||
|
version = "0.8.4";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://dl.suckless.org/st/${name}.tar.gz";
|
url = "https://dl.suckless.org/st/${pname}-${version}.tar.gz";
|
||||||
sha256 = "0ll5wbw1szs70wdf8zy1y2ig5mfbqw2w4ls8d64r8z3y4gdf76lk";
|
sha256 = "19j66fhckihbg30ypngvqc9bcva47mp379ch5vinasjdxgn3qbfl";
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit patches;
|
inherit patches;
|
||||||
|
@ -24,7 +24,7 @@ let
|
|||||||
icon = pname;
|
icon = pname;
|
||||||
comment = description;
|
comment = description;
|
||||||
genericName = "Computer Aided (Interior) Design";
|
genericName = "Computer Aided (Interior) Design";
|
||||||
categories = "Application;Graphics;2DGraphics;3DGraphics;";
|
categories = "Graphics;2DGraphics;3DGraphics;";
|
||||||
};
|
};
|
||||||
|
|
||||||
patchPhase = ''
|
patchPhase = ''
|
||||||
|
@ -20,7 +20,7 @@ let
|
|||||||
name = pname;
|
name = pname;
|
||||||
comment = description;
|
comment = description;
|
||||||
genericName = "Computer Aided (Interior) Design";
|
genericName = "Computer Aided (Interior) Design";
|
||||||
categories = "Application;Graphics;2DGraphics;3DGraphics;";
|
categories = "Graphics;2DGraphics;3DGraphics;";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ ant jre jdk makeWrapper gtk3 gsettings-desktop-schemas ];
|
buildInputs = [ ant jre jdk makeWrapper gtk3 gsettings-desktop-schemas ];
|
||||||
|
1351
pkgs/applications/networking/browsers/asuka/cargo-lock.patch
Normal file
1351
pkgs/applications/networking/browsers/asuka/cargo-lock.patch
Normal file
File diff suppressed because it is too large
Load Diff
28
pkgs/applications/networking/browsers/asuka/default.nix
Normal file
28
pkgs/applications/networking/browsers/asuka/default.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{ stdenv, rustPlatform, fetchurl, pkgconfig, ncurses, openssl, Security }:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "asuka";
|
||||||
|
version = "0.8.0";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://git.sr.ht/~julienxx/${pname}/archive/${version}.tar.gz";
|
||||||
|
sha256 = "10hmsdwf2nrsmpycqa08vd31c6vhx7w5fhvv5a9f92sqp0lcavf0";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoPatches = [ ./cargo-lock.patch ];
|
||||||
|
|
||||||
|
cargoSha256 = "0csj63x77nkdh543pzl9cbaip6xp8anw0942hc6j19y7yicd29ns";
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
|
||||||
|
buildInputs = [ ncurses openssl ]
|
||||||
|
++ stdenv.lib.optional stdenv.isDarwin Security;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Gemini Project client written in Rust with NCurses";
|
||||||
|
homepage = "https://git.sr.ht/~julienxx/asuka";
|
||||||
|
license = licenses.mit;
|
||||||
|
platforms = platforms.unix;
|
||||||
|
maintainers = with maintainers; [ sikmir ];
|
||||||
|
};
|
||||||
|
}
|
21
pkgs/applications/networking/browsers/av-98/default.nix
Normal file
21
pkgs/applications/networking/browsers/av-98/default.nix
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{ lib, python3Packages, fetchgit }:
|
||||||
|
|
||||||
|
python3Packages.buildPythonApplication rec {
|
||||||
|
pname = "av-98";
|
||||||
|
version = "1.0.2dev";
|
||||||
|
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://tildegit.org/solderpunk/AV-98.git";
|
||||||
|
rev = "96cf8e13fe5714c8cdc754f51eef9f0293b8ca1f";
|
||||||
|
sha256 = "09iskh33hl5aaif763j1fmbz7yvf0yqsxycfd41scj7vbwdsbxl0";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = with python3Packages; [ ansiwrap cryptography ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://tildegit.org/solderpunk/AV-98";
|
||||||
|
description = "Experimental console client for the Gemini protocol";
|
||||||
|
license = licenses.bsd2;
|
||||||
|
maintainers = with maintainers; [ ehmry ];
|
||||||
|
};
|
||||||
|
}
|
@ -86,11 +86,11 @@ in
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "brave";
|
pname = "brave";
|
||||||
version = "1.8.95";
|
version = "1.10.97";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
||||||
sha256 = "1mlffg2v31b42gj354w5yv0yzlqc2f4f3cmdnddzkplw10jgw6f1";
|
sha256 = "1qwk75k8km2sy7l3m4k5m383sl75dph4dyrp8hd65x5hnpip67yi";
|
||||||
};
|
};
|
||||||
|
|
||||||
dontConfigure = true;
|
dontConfigure = true;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user