Merge master into staging-next
This commit is contained in:
commit
c18f9c2fbd
@ -131,6 +131,12 @@ rec {
|
||||
armhf-embedded = {
|
||||
config = "arm-none-eabihf";
|
||||
libc = "newlib";
|
||||
# GCC8+ does not build without this
|
||||
# (https://www.mail-archive.com/gcc-bugs@gcc.gnu.org/msg552339.html):
|
||||
gcc = {
|
||||
arch = "armv5t";
|
||||
fpu = "vfp";
|
||||
};
|
||||
};
|
||||
|
||||
aarch64-embedded = {
|
||||
|
@ -63,6 +63,15 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
hardware.nvidia.powerManagement.finegrained = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Experimental power management of PRIME offload. For more information, see
|
||||
the NVIDIA docs, chapter 22. PCI-Express runtime power management.
|
||||
'';
|
||||
};
|
||||
|
||||
hardware.nvidia.modesetting.enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
@ -96,6 +105,16 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
hardware.nvidia.prime.amdgpuBusId = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
example = "PCI:4:0:0";
|
||||
description = ''
|
||||
Bus ID of the AMD APU. You can find it using lspci; for example if lspci
|
||||
shows the AMD APU at "04:00.0", set this option to "PCI:4:0:0".
|
||||
'';
|
||||
};
|
||||
|
||||
hardware.nvidia.prime.sync.enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
@ -153,7 +172,10 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf enabled {
|
||||
config = let
|
||||
igpuDriver = if pCfg.intelBusId != "" then "modesetting" else "amdgpu";
|
||||
igpuBusId = if pCfg.intelBusId != "" then pCfg.intelBusId else pCfg.amdgpuBusId;
|
||||
in mkIf enabled {
|
||||
assertions = [
|
||||
{
|
||||
assertion = with config.services.xserver.displayManager; gdm.nvidiaWayland -> cfg.modesetting.enable;
|
||||
@ -161,7 +183,13 @@ in
|
||||
}
|
||||
|
||||
{
|
||||
assertion = primeEnabled -> pCfg.nvidiaBusId != "" && pCfg.intelBusId != "";
|
||||
assertion = primeEnabled -> pCfg.intelBusId == "" || pCfg.amdgpuBusId == "";
|
||||
message = ''
|
||||
You cannot configure both an Intel iGPU and an AMD APU. Pick the one corresponding to your processor.
|
||||
'';
|
||||
}
|
||||
{
|
||||
assertion = primeEnabled -> pCfg.nvidiaBusId != "" && (pCfg.intelBusId != "" || pCfg.amdgpuBusId != "");
|
||||
message = ''
|
||||
When NVIDIA PRIME is enabled, the GPU bus IDs must configured.
|
||||
'';
|
||||
@ -174,6 +202,14 @@ in
|
||||
assertion = !(syncCfg.enable && offloadCfg.enable);
|
||||
message = "Only one NVIDIA PRIME solution may be used at a time.";
|
||||
}
|
||||
{
|
||||
assertion = !(syncCfg.enable && cfg.powerManagement.finegrained);
|
||||
message = "Sync precludes powering down the NVIDIA GPU.";
|
||||
}
|
||||
{
|
||||
assertion = cfg.powerManagement.enable -> offloadCfg.enable;
|
||||
message = "Fine-grained power management requires offload to be enabled.";
|
||||
}
|
||||
];
|
||||
|
||||
# If Optimus/PRIME is enabled, we:
|
||||
@ -183,18 +219,22 @@ in
|
||||
# "nvidia" driver, in order to allow the X server to start without any outputs.
|
||||
# - Add a separate Device section for the Intel GPU, using the "modesetting"
|
||||
# driver and with the configured BusID.
|
||||
# - OR add a separate Device section for the AMD APU, using the "amdgpu"
|
||||
# driver and with the configures BusID.
|
||||
# - Reference that Device section from the ServerLayout section as an inactive
|
||||
# device.
|
||||
# - Configure the display manager to run specific `xrandr` commands which will
|
||||
# configure/enable displays connected to the Intel GPU.
|
||||
# configure/enable displays connected to the Intel iGPU / AMD APU.
|
||||
|
||||
services.xserver.useGlamor = mkDefault offloadCfg.enable;
|
||||
|
||||
services.xserver.drivers = optional primeEnabled {
|
||||
name = "modesetting";
|
||||
services.xserver.drivers = let
|
||||
in optional primeEnabled {
|
||||
name = igpuDriver;
|
||||
display = offloadCfg.enable;
|
||||
modules = optional (igpuDriver == "amdgpu") [ pkgs.xorg.xf86videoamdgpu ];
|
||||
deviceSection = ''
|
||||
BusID "${pCfg.intelBusId}"
|
||||
BusID "${igpuBusId}"
|
||||
${optionalString syncCfg.enable ''Option "AccelMethod" "none"''}
|
||||
'';
|
||||
} ++ singleton {
|
||||
@ -205,6 +245,7 @@ in
|
||||
''
|
||||
BusID "${pCfg.nvidiaBusId}"
|
||||
${optionalString syncCfg.allowExternalGpu "Option \"AllowExternalGpus\""}
|
||||
${optionalString cfg.powerManagement.finegrained "Option \"NVreg_DynamicPowerManagement=0x02\""}
|
||||
'';
|
||||
screenSection =
|
||||
''
|
||||
@ -214,14 +255,14 @@ in
|
||||
};
|
||||
|
||||
services.xserver.serverLayoutSection = optionalString syncCfg.enable ''
|
||||
Inactive "Device-modesetting[0]"
|
||||
Inactive "Device-${igpuDriver}[0]"
|
||||
'' + optionalString offloadCfg.enable ''
|
||||
Option "AllowNVIDIAGPUScreens"
|
||||
'';
|
||||
|
||||
services.xserver.displayManager.setupCommands = optionalString syncCfg.enable ''
|
||||
# Added by nvidia configuration module for Optimus/PRIME.
|
||||
${pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource modesetting NVIDIA-0
|
||||
${pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource ${igpuDriver} NVIDIA-0
|
||||
${pkgs.xorg.xrandr}/bin/xrandr --auto
|
||||
'';
|
||||
|
||||
@ -292,16 +333,37 @@ in
|
||||
boot.kernelParams = optional (offloadCfg.enable || cfg.modesetting.enable) "nvidia-drm.modeset=1"
|
||||
++ optional cfg.powerManagement.enable "nvidia.NVreg_PreserveVideoMemoryAllocations=1";
|
||||
|
||||
# Create /dev/nvidia-uvm when the nvidia-uvm module is loaded.
|
||||
services.udev.extraRules =
|
||||
''
|
||||
# Create /dev/nvidia-uvm when the nvidia-uvm module is loaded.
|
||||
KERNEL=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidiactl c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 255'"
|
||||
KERNEL=="nvidia_modeset", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-modeset c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 254'"
|
||||
KERNEL=="card*", SUBSYSTEM=="drm", DRIVERS=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia%n c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) %n'"
|
||||
KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'"
|
||||
KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm-tools c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'"
|
||||
'' + optionalString cfg.powerManagement.finegrained ''
|
||||
# Remove NVIDIA USB xHCI Host Controller devices, if present
|
||||
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{remove}="1"
|
||||
|
||||
# Remove NVIDIA USB Type-C UCSI devices, if present
|
||||
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{remove}="1"
|
||||
|
||||
# Remove NVIDIA Audio devices, if present
|
||||
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{remove}="1"
|
||||
|
||||
# Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind
|
||||
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="auto"
|
||||
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="auto"
|
||||
|
||||
# Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind
|
||||
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="on"
|
||||
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="on"
|
||||
'';
|
||||
|
||||
boot.extraModprobeConfig = mkIf cfg.powerManagement.finegrained ''
|
||||
options nvidia "NVreg_DynamicPowerManagement=0x02"
|
||||
'';
|
||||
|
||||
boot.blacklistedKernelModules = [ "nouveau" "nvidiafb" ];
|
||||
|
||||
services.acpid.enable = true;
|
||||
|
@ -115,15 +115,18 @@ services.nginx = {
|
||||
<programlisting>
|
||||
<xref linkend="opt-security.acme.acceptTerms" /> = true;
|
||||
<xref linkend="opt-security.acme.email" /> = "admin+acme@example.com";
|
||||
|
||||
# /var/lib/acme/.challenges must be writable by the ACME user
|
||||
# and readable by the Nginx user. The easiest way to achieve
|
||||
# this is to add the Nginx user to the ACME group.
|
||||
<link linkend="opt-users.users._name_.extraGroups">users.users.nginx.extraGroups</link> = [ "acme" ];
|
||||
|
||||
services.nginx = {
|
||||
<link linkend="opt-services.nginx.enable">enable</link> = true;
|
||||
<link linkend="opt-services.nginx.virtualHosts">virtualHosts</link> = {
|
||||
"acmechallenge.example.com" = {
|
||||
# Catchall vhost, will redirect users to HTTPS for all vhosts
|
||||
<link linkend="opt-services.nginx.virtualHosts._name_.serverAliases">serverAliases</link> = [ "*.example.com" ];
|
||||
# /var/lib/acme/.challenges must be writable by the ACME user
|
||||
# and readable by the Nginx user.
|
||||
# By default, this is the case.
|
||||
locations."/.well-known/acme-challenge" = {
|
||||
<link linkend="opt-services.nginx.virtualHosts._name_.locations._name_.root">root</link> = "/var/lib/acme/.challenges";
|
||||
};
|
||||
@ -134,6 +137,7 @@ services.nginx = {
|
||||
};
|
||||
}
|
||||
# Alternative config for Apache
|
||||
<link linkend="opt-users.users._name_.extraGroups">users.users.wwwrun.extraGroups</link> = [ "acme" ];
|
||||
services.httpd = {
|
||||
<link linkend="opt-services.httpd.enable">enable = true;</link>
|
||||
<link linkend="opt-services.httpd.virtualHosts">virtualHosts</link> = {
|
||||
|
@ -41,6 +41,7 @@ in {
|
||||
haskellPackages = mkOption {
|
||||
description = "Which haskell package set to use.";
|
||||
default = pkgs.haskellPackages;
|
||||
type = types.package;
|
||||
defaultText = "pkgs.haskellPackages";
|
||||
};
|
||||
|
||||
|
@ -68,6 +68,7 @@ in
|
||||
interface = mkOption {
|
||||
default = "";
|
||||
example = "wlp2s0";
|
||||
type = types.str;
|
||||
description = ''
|
||||
The interfaces <command>hostapd</command> will use.
|
||||
'';
|
||||
|
@ -20,8 +20,24 @@ let
|
||||
--config ${configFile} --adapter ${cfg.adapter} > $out
|
||||
'';
|
||||
tlsJSON = pkgs.writeText "tls.json" (builtins.toJSON tlsConfig);
|
||||
configJSON = pkgs.runCommand "caddy-config.json" { } ''
|
||||
${pkgs.jq}/bin/jq -s '.[0] * .[1]' ${adaptedConfig} ${tlsJSON} > $out
|
||||
|
||||
# merge the TLS config options we expose with the ones originating in the Caddyfile
|
||||
configJSON =
|
||||
let tlsConfigMerge = ''
|
||||
{"apps":
|
||||
{"tls":
|
||||
{"automation":
|
||||
{"policies":
|
||||
(if .[0].apps.tls.automation.policies == .[1]?.apps.tls.automation.policies
|
||||
then .[0].apps.tls.automation.policies
|
||||
else (.[0].apps.tls.automation.policies + .[1]?.apps.tls.automation.policies)
|
||||
end)
|
||||
}
|
||||
}
|
||||
}
|
||||
}'';
|
||||
in pkgs.runCommand "caddy-config.json" { } ''
|
||||
${pkgs.jq}/bin/jq -s '.[0] * ${tlsConfigMerge}' ${adaptedConfig} ${tlsJSON} > $out
|
||||
'';
|
||||
in {
|
||||
imports = [
|
||||
|
@ -1,10 +1,9 @@
|
||||
{ pkgs, configTxt }:
|
||||
{ pkgs, configTxt, firmware ? pkgs.raspberrypifw }:
|
||||
|
||||
pkgs.substituteAll {
|
||||
src = ./raspberrypi-builder.sh;
|
||||
isExecutable = true;
|
||||
inherit (pkgs) bash;
|
||||
path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
|
||||
firmware = pkgs.raspberrypifw;
|
||||
inherit configTxt;
|
||||
inherit firmware configTxt;
|
||||
}
|
||||
|
@ -2,6 +2,13 @@
|
||||
|
||||
targetRoot=/mnt-root
|
||||
console=tty1
|
||||
verbose="@verbose@"
|
||||
|
||||
info() {
|
||||
if [[ -n "$verbose" ]]; then
|
||||
echo "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
extraUtils="@extraUtils@"
|
||||
export LD_LIBRARY_PATH=@extraUtils@/lib
|
||||
@ -55,7 +62,7 @@ EOF
|
||||
echo "Rebooting..."
|
||||
reboot -f
|
||||
else
|
||||
echo "Continuing..."
|
||||
info "Continuing..."
|
||||
fi
|
||||
}
|
||||
|
||||
@ -63,9 +70,9 @@ trap 'fail' 0
|
||||
|
||||
|
||||
# Print a greeting.
|
||||
echo
|
||||
echo "[1;32m<<< NixOS Stage 1 >>>[0m"
|
||||
echo
|
||||
info
|
||||
info "[1;32m<<< NixOS Stage 1 >>>[0m"
|
||||
info
|
||||
|
||||
# Make several required directories.
|
||||
mkdir -p /etc/udev
|
||||
@ -210,14 +217,14 @@ ln -s @modulesClosure@/lib/modules /lib/modules
|
||||
ln -s @modulesClosure@/lib/firmware /lib/firmware
|
||||
echo @extraUtils@/bin/modprobe > /proc/sys/kernel/modprobe
|
||||
for i in @kernelModules@; do
|
||||
echo "loading module $(basename $i)..."
|
||||
info "loading module $(basename $i)..."
|
||||
modprobe $i
|
||||
done
|
||||
|
||||
|
||||
# Create device nodes in /dev.
|
||||
@preDeviceCommands@
|
||||
echo "running udev..."
|
||||
info "running udev..."
|
||||
ln -sfn /proc/self/fd /dev/fd
|
||||
ln -sfn /proc/self/fd/0 /dev/stdin
|
||||
ln -sfn /proc/self/fd/1 /dev/stdout
|
||||
@ -235,8 +242,7 @@ udevadm settle
|
||||
# XXX: Use case usb->lvm will still fail, usb->luks->lvm is covered
|
||||
@preLVMCommands@
|
||||
|
||||
|
||||
echo "starting device mapper and LVM..."
|
||||
info "starting device mapper and LVM..."
|
||||
lvm vgchange -ay
|
||||
|
||||
if test -n "$debug1devices"; then fail; fi
|
||||
@ -379,7 +385,7 @@ mountFS() {
|
||||
done
|
||||
fi
|
||||
|
||||
echo "mounting $device on $mountPoint..."
|
||||
info "mounting $device on $mountPoint..."
|
||||
|
||||
mkdir -p "/mnt-root$mountPoint"
|
||||
|
||||
|
@ -280,7 +280,7 @@ let
|
||||
|
||||
inherit (config.system.build) earlyMountScript;
|
||||
|
||||
inherit (config.boot.initrd) checkJournalingFS
|
||||
inherit (config.boot.initrd) checkJournalingFS verbose
|
||||
preLVMCommands preDeviceCommands postDeviceCommands postMountCommands preFailCommands kernelModules;
|
||||
|
||||
resumeDevices = map (sd: if sd ? device then sd.device else "/dev/disk/by-label/${sd.label}")
|
||||
@ -565,6 +565,23 @@ in
|
||||
description = "Names of supported filesystem types in the initial ramdisk.";
|
||||
};
|
||||
|
||||
boot.initrd.verbose = mkOption {
|
||||
default = true;
|
||||
type = types.bool;
|
||||
description =
|
||||
''
|
||||
Verbosity of the initrd. Please note that disabling verbosity removes
|
||||
only the mandatory messages generated by the NixOS scripts. For a
|
||||
completely silent boot, you might also want to set the two following
|
||||
configuration options:
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para><literal>boot.consoleLogLevel = 0;</literal></para></listitem>
|
||||
<listitem><para><literal>boot.kernelParams = [ "quiet" "udev.log_priority=3" ];</literal></para></listitem>
|
||||
</itemizedlist>
|
||||
'';
|
||||
};
|
||||
|
||||
boot.loader.supportsInitrdSecrets = mkOption
|
||||
{ internal = true;
|
||||
default = false;
|
||||
|
@ -217,7 +217,7 @@ let
|
||||
environment = proxy_env;
|
||||
|
||||
path =
|
||||
if cfg.backend == "docker" then [ pkgs.docker ]
|
||||
if cfg.backend == "docker" then [ config.virtualisation.docker.package ]
|
||||
else if cfg.backend == "podman" then [ config.virtualisation.podman.package ]
|
||||
else throw "Unhandled backend: ${cfg.backend}";
|
||||
|
||||
@ -227,29 +227,30 @@ let
|
||||
${cfg.backend} load -i ${container.imageFile}
|
||||
''}
|
||||
'';
|
||||
|
||||
script = concatStringsSep " \\\n " ([
|
||||
"exec ${cfg.backend} run"
|
||||
"--rm"
|
||||
"--name=${escapeShellArg name}"
|
||||
"--log-driver=${container.log-driver}"
|
||||
] ++ optional (container.entrypoint != null)
|
||||
"--entrypoint=${escapeShellArg container.entrypoint}"
|
||||
++ (mapAttrsToList (k: v: "-e ${escapeShellArg k}=${escapeShellArg v}") container.environment)
|
||||
++ map (p: "-p ${escapeShellArg p}") container.ports
|
||||
++ optional (container.user != null) "-u ${escapeShellArg container.user}"
|
||||
++ map (v: "-v ${escapeShellArg v}") container.volumes
|
||||
++ optional (container.workdir != null) "-w ${escapeShellArg container.workdir}"
|
||||
++ map escapeShellArg container.extraOptions
|
||||
++ [container.image]
|
||||
++ map escapeShellArg container.cmd
|
||||
);
|
||||
|
||||
preStop = "[ $SERVICE_RESULT = success ] || ${cfg.backend} stop ${name}";
|
||||
postStop = "${cfg.backend} rm -f ${name} || true";
|
||||
|
||||
serviceConfig = {
|
||||
StandardOutput = "null";
|
||||
StandardError = "null";
|
||||
ExecStart = concatStringsSep " \\\n " ([
|
||||
"${config.system.path}/bin/${cfg.backend} run"
|
||||
"--rm"
|
||||
"--name=${name}"
|
||||
"--log-driver=${container.log-driver}"
|
||||
] ++ optional (container.entrypoint != null)
|
||||
"--entrypoint=${escapeShellArg container.entrypoint}"
|
||||
++ (mapAttrsToList (k: v: "-e ${escapeShellArg k}=${escapeShellArg v}") container.environment)
|
||||
++ map (p: "-p ${escapeShellArg p}") container.ports
|
||||
++ optional (container.user != null) "-u ${escapeShellArg container.user}"
|
||||
++ map (v: "-v ${escapeShellArg v}") container.volumes
|
||||
++ optional (container.workdir != null) "-w ${escapeShellArg container.workdir}"
|
||||
++ map escapeShellArg container.extraOptions
|
||||
++ [container.image]
|
||||
++ map escapeShellArg container.cmd
|
||||
);
|
||||
|
||||
ExecStop = ''${pkgs.bash}/bin/sh -c "[ $SERVICE_RESULT = success ] || ${cfg.backend} stop ${name}"'';
|
||||
|
||||
### There is no generalized way of supporting `reload` for docker
|
||||
### containers. Some containers may respond well to SIGHUP sent to their
|
||||
|
@ -1,7 +1,7 @@
|
||||
let
|
||||
pkgs = import ../../../.. {};
|
||||
|
||||
emacsEnv = pkgs.emacs.withPackages (epkgs: let
|
||||
emacsEnv = pkgs.emacs.pkgs.withPackages (epkgs: let
|
||||
|
||||
promise = epkgs.trivialBuild {
|
||||
pname = "promise";
|
||||
|
@ -31,12 +31,12 @@ let
|
||||
|
||||
in mkDerivationWith python3Packages.buildPythonApplication rec {
|
||||
pname = "qutebrowser";
|
||||
version = "1.14.1";
|
||||
version = "2.0.1";
|
||||
|
||||
# the release tarballs are different from the git checkout!
|
||||
src = fetchurl {
|
||||
url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz";
|
||||
sha256 = "15l7jphy1qjsh6y6kd5mgkxsl6ymm9564g1yypa946jbyrgi8k2m";
|
||||
sha256 = "0hmj19bp5dihzpphxz77377yfmygj498am0h23kxg5m3y5hqv65a";
|
||||
};
|
||||
|
||||
# Needs tox
|
||||
@ -55,13 +55,16 @@ in mkDerivationWith python3Packages.buildPythonApplication rec {
|
||||
docbook_xml_dtd_45 docbook_xsl libxml2 libxslt
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
propagatedBuildInputs = with python3Packages; ([
|
||||
pyyaml backendPackage jinja2 pygments
|
||||
pypeg2 cssutils pyopengl attrs setuptools
|
||||
# scripts and userscripts libs
|
||||
tldextract beautifulsoup4
|
||||
pyreadability pykeepass stem
|
||||
];
|
||||
# extensive ad blocking
|
||||
adblock
|
||||
]
|
||||
++ lib.optional (pythonOlder "3.9") importlib-resources
|
||||
);
|
||||
|
||||
patches = [ ./fix-restart.patch ];
|
||||
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "scheme-manpages-unstable";
|
||||
version = "2020-08-14";
|
||||
version = "2021-01-17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "schemedoc";
|
||||
repo = "manpages";
|
||||
rev = "2e99a0aea9c0327e3c2dcfb9b7a2f8f528b4fe43";
|
||||
sha256 = "0ykj4i8mx50mgyz9q63glfnc0mw1lf89hwsflpnbizjda5b4s0fp";
|
||||
rev = "817798ccca81424e797fda0e218d53a95f50ded7";
|
||||
sha256 = "1amc0dmliz2a37pivlkx88jbc08ypfiwv3z477znx8khhc538glk";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
@ -5,13 +5,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ayatana-ido";
|
||||
version = "0.8.1";
|
||||
version = "0.8.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AyatanaIndicators";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1mcw6gmacrzx4cyg4223dpwcmj3qf8l30mxsg43292lajzwsm2hz";
|
||||
sha256 = "sha256-nJ4F2faK0XZPj9GzUk3Ueap5h6rALFXISHqFQ30RuoU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config autoreconfHook gtk-doc vala gobject-introspection ];
|
||||
|
31
pkgs/development/python-modules/aiocoap/default.nix
Normal file
31
pkgs/development/python-modules/aiocoap/default.nix
Normal file
@ -0,0 +1,31 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, python
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aiocoap";
|
||||
version = "0.4b3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "chrysn";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1zjg475xgvi19rqg7jmfgy5nfabq50aph0231p9jba211ps7cmxw";
|
||||
};
|
||||
|
||||
checkPhase = ''
|
||||
${python.interpreter} -m aiocoap.cli.defaults
|
||||
${python.interpreter} -m unittest discover -v
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "aiocoap" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python CoAP library";
|
||||
homepage = "https://aiocoap.readthedocs.io/";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
}
|
@ -13,11 +13,11 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "boto3";
|
||||
version = "1.16.61"; # N.B: if you change this, change botocore too
|
||||
version = "1.16.62"; # N.B: if you change this, change botocore too
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-OPUD8FAqukJR3/TRkFfDGnud0PVDM99VIfiTHuTGXiY=";
|
||||
sha256 = "sha256-u5H+z5guG7+2i7a9LJoMzjyErG+X3TONHvnkd4BnkJE=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ botocore jmespath s3transfer ] ++ lib.optionals (!isPy3k) [ futures ];
|
||||
|
@ -12,11 +12,11 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "botocore";
|
||||
version = "1.19.61"; # N.B: if you change this, change boto3 and awscli to a matching version
|
||||
version = "1.19.62"; # N.B: if you change this, change boto3 and awscli to a matching version
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-MkXJ6ZYUO8/epz0QUUXKcz/NfVr+dEqHYGEvxEnD+BA=";
|
||||
sha256 = "sha256-KbS5vltA85KgM5JsCMAEwBvWRxOE728S6qSe44cKAQw=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
66
pkgs/development/python-modules/plugwise/default.nix
Normal file
66
pkgs/development/python-modules/plugwise/default.nix
Normal file
@ -0,0 +1,66 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, aiohttp
|
||||
, async-timeout
|
||||
, crcmod
|
||||
, defusedxml
|
||||
, pyserial
|
||||
, pytz
|
||||
, python-dateutil
|
||||
, semver
|
||||
, jsonpickle
|
||||
, mypy
|
||||
, pytest-aiohttp
|
||||
, pytest-asyncio
|
||||
, pytest-cov
|
||||
, pytestCheckHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "plugwise";
|
||||
version = "0.8.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = "python-plugwise";
|
||||
rev = version;
|
||||
sha256 = "1gviyy31l1j8z0if2id3m13r43kw4mcgd8921813yfhmf174piq4";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
aiohttp
|
||||
async-timeout
|
||||
crcmod
|
||||
defusedxml
|
||||
pyserial
|
||||
pytz
|
||||
python-dateutil
|
||||
semver
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
jsonpickle
|
||||
mypy
|
||||
pytest-aiohttp
|
||||
pytest-asyncio
|
||||
pytest-cov
|
||||
pytest-asyncio
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "plugwise" ];
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python module for Plugwise Smiles, Stretch and USB stick";
|
||||
longDescription = ''
|
||||
XKNX is an asynchronous Python library for reading and writing KNX/IP
|
||||
packets. It provides support for KNX/IP routing and tunneling devices.
|
||||
'';
|
||||
homepage = "https://github.com/plugwise/python-plugwise";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
}
|
51
pkgs/development/python-modules/regenmaschine/default.nix
Normal file
51
pkgs/development/python-modules/regenmaschine/default.nix
Normal file
@ -0,0 +1,51 @@
|
||||
{ lib
|
||||
, aiohttp
|
||||
, aresponses
|
||||
, asynctest
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, poetry-core
|
||||
, pytest-aiohttp
|
||||
, pytest-asyncio
|
||||
, pytest-cov
|
||||
, pytest-mock
|
||||
, pytestCheckHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "regenmaschine";
|
||||
version = "3.1.1";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bachya";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0m6i7vspp8ssdk2k32kznql1j8gkp300kzb7pk67hzvpijdy3mca";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ poetry-core ];
|
||||
|
||||
propagatedBuildInputs = [ aiohttp ];
|
||||
|
||||
checkInputs = [
|
||||
aresponses
|
||||
asynctest
|
||||
pytest-aiohttp
|
||||
pytest-asyncio
|
||||
pytest-cov
|
||||
pytest-mock
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "regenmaschine" ];
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python library for interacting with RainMachine smart sprinkler controllers";
|
||||
homepage = "https://github.com/bachya/regenmaschine";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
}
|
@ -1,13 +1,13 @@
|
||||
{ lib, stdenv, fetchurl, common-updater-scripts, coreutils, git, gnused, nix, nixfmt
|
||||
, writeScript, nixosTests, jq, cacert, curl }:
|
||||
{ lib, stdenv, fetchurl, common-updater-scripts, coreutils, git, gnused, nix
|
||||
, nixfmt, writeScript, nixosTests, jq, cacert, curl }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "jenkins";
|
||||
version = "2.263.2";
|
||||
version = "2.263.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://mirrors.jenkins.io/war-stable/${version}/jenkins.war";
|
||||
sha256 = "13l7y1307iv54z2zsjy0slzv2hpqv9i35qb15xa8s6sl7lcm9l49";
|
||||
sha256 = "0lyzmv378yjz4p4dlpm1nwdq4p781nycvspdik82xbxg4s6gamd3";
|
||||
};
|
||||
|
||||
buildCommand = ''
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-c";
|
||||
version = "0.7.1";
|
||||
version = "0.7.2";
|
||||
|
||||
src = stdenv.mkDerivation rec {
|
||||
name = "${pname}-source-${version}";
|
||||
@ -14,11 +14,11 @@ rustPlatform.buildRustPackage rec {
|
||||
owner = "lu-zero";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1a348ys4lbgsr23px81kw985i5bp8z75wgzl9l2jv9sdzirpb8k4";
|
||||
sha256 = "1rgwj3kf31n4rz0b7jw67wsgyapdycfic7plm5gm4n9rlslp5ax5";
|
||||
};
|
||||
cargoLock = fetchurl {
|
||||
url = "https://github.com/lu-zero/${pname}/releases/download/v${version}/Cargo.lock";
|
||||
sha256 = "1f78wlid8jx26pqybmafzcl1656nnp87hdiib0v1p5k73mk4ymvy";
|
||||
sha256 = "0jnawnkf4m7cqcq9iahnxa53l61a5riax400n96vxrqf3fa752c6";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
@ -28,7 +28,7 @@ rustPlatform.buildRustPackage rec {
|
||||
'';
|
||||
};
|
||||
|
||||
cargoSha256 = "1nj54igm57h9d8hhqdgkay2nnblcdxhpnha68jqvjazd8a0bq3la";
|
||||
cargoSha256 = "0svmhq64aqw1vidq8jmw7w4xhhnyp04vcs9yzhjyz25c4cn9grsf";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ openssl ]
|
||||
|
@ -11,13 +11,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mednaffe";
|
||||
version = "0.8.8";
|
||||
version = "0.9.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AmatCoder";
|
||||
repo = "mednaffe";
|
||||
rev = version;
|
||||
sha256 = "15qk3a3l1phr8bap2ayh3c0vyvw2jwhny1iz1ajq2adyjpm9fhr7";
|
||||
sha256 = "sha256-BS/GNnRYj9klc4RRj7LwNikgApNttv4IyWPL694j+gM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkg-config wrapGAppsHook ];
|
||||
|
@ -621,7 +621,7 @@
|
||||
"plaato" = ps: with ps; [ aiohttp-cors ];
|
||||
"plant" = ps: with ps; [ sqlalchemy ];
|
||||
"plex" = ps: with ps; [ aiohttp-cors plexapi plexauth plexwebsocket pysonos ];
|
||||
"plugwise" = ps: with ps; [ ]; # missing inputs: plugwise
|
||||
"plugwise" = ps: with ps; [ plugwise ];
|
||||
"plum_lightpad" = ps: with ps; [ ]; # missing inputs: plumlightpad
|
||||
"pocketcasts" = ps: with ps; [ ]; # missing inputs: pycketcasts
|
||||
"point" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pypoint
|
||||
@ -659,7 +659,7 @@
|
||||
"rainbird" = ps: with ps; [ ]; # missing inputs: pyrainbird
|
||||
"raincloud" = ps: with ps; [ ]; # missing inputs: raincloudy
|
||||
"rainforest_eagle" = ps: with ps; [ ]; # missing inputs: eagle200_reader uEagle
|
||||
"rainmachine" = ps: with ps; [ ]; # missing inputs: regenmaschine
|
||||
"rainmachine" = ps: with ps; [ regenmaschine ];
|
||||
"random" = ps: with ps; [ ];
|
||||
"raspihats" = ps: with ps; [ smbus-cffi ]; # missing inputs: raspihats
|
||||
"raspyrfm" = ps: with ps; [ ]; # missing inputs: raspyrfm-client
|
||||
|
@ -15,13 +15,13 @@
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "postgis";
|
||||
version = "3.1.0";
|
||||
version = "3.1.1";
|
||||
|
||||
outputs = [ "out" "doc" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.osgeo.org/postgis/source/postgis-${version}.tar.gz";
|
||||
sha256 = "008280ijd6m9h35y9lcpql0fk0h9f3zkc1pfkdm0rkbnd12y41ns";
|
||||
sha256 = "0z9a39243fv37mansbbjq5mmxpnhr7xzn8pv92fr7dkdb3psz5hf";
|
||||
};
|
||||
|
||||
buildInputs = [ libxml2 postgresql geos proj gdal json_c protobufc ]
|
||||
|
@ -28,11 +28,11 @@ let
|
||||
|
||||
in with py.pkgs; buildPythonApplication rec {
|
||||
pname = "awscli";
|
||||
version = "1.18.221"; # N.B: if you change this, change botocore to a matching version too
|
||||
version = "1.18.222"; # N.B: if you change this, change botocore to a matching version too
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-G8HonN02eFcfMRhj9+cporugVsF7nDeHEopuHnbS1Is=";
|
||||
sha256 = "sha256-nVBQ2Lj5+zyvj3g0W3Rxh+CZwG7sbqKehvg6vAhHexs=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -10,11 +10,11 @@ with lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "acme-client";
|
||||
version = "1.0.1";
|
||||
version = "1.1.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://data.wolfsden.cz/sources/acme-client-${version}.tar.xz";
|
||||
sha256 = "0gmdvmyw8a61w08hrxllypf7rpnqg0fxipbk3zmvsxj7m5i6iysj";
|
||||
sha256 = "sha256-AYI7WfRTb5R0/hDX5Iqkq5nrLZ4gQecAGObSajSA+vw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bpytop";
|
||||
version = "1.0.59";
|
||||
version = "1.0.61";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "aristocratos";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-RlrUUIbZRNTvxU8LVW0/ZcARlKDVvSMlkN0+6BgAink=";
|
||||
sha256 = "sha256-E6blMhDkZa3Wbdbsw7f8jdHwHFINOQ48XC5pQdkVPtQ=";
|
||||
};
|
||||
|
||||
buildInputs = [ makeWrapper ];
|
||||
|
@ -22,13 +22,13 @@ let
|
||||
++ recommendedDisplayInformationPrograms;
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "inxi";
|
||||
version = "3.2.02-2";
|
||||
version = "3.3.00-1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "smxi";
|
||||
repo = "inxi";
|
||||
rev = version;
|
||||
sha256 = "sha256-WHfW0empveOxC3jvYq46jlvVZDb8JLne5JHPtFE6nTs=";
|
||||
sha256 = "sha256-P1AYo4Ao9lDxJXyZd64wBxNgQIvEcT00ThjtcB2v52I=";
|
||||
};
|
||||
|
||||
buildInputs = [ perl makeWrapper ];
|
||||
|
@ -204,6 +204,8 @@ in {
|
||||
|
||||
aioamqp = callPackage ../development/python-modules/aioamqp { };
|
||||
|
||||
aiocoap = callPackage ../development/python-modules/aiocoap { };
|
||||
|
||||
aioconsole = callPackage ../development/python-modules/aioconsole { };
|
||||
|
||||
aiocontextvars = callPackage ../development/python-modules/aiocontextvars { };
|
||||
@ -4911,6 +4913,8 @@ in {
|
||||
|
||||
pluginbase = callPackage ../development/python-modules/pluginbase { };
|
||||
|
||||
plugwise = callPackage ../development/python-modules/plugwise { };
|
||||
|
||||
plumbum = callPackage ../development/python-modules/plumbum { };
|
||||
|
||||
ply = callPackage ../development/python-modules/ply { };
|
||||
@ -6652,6 +6656,8 @@ in {
|
||||
|
||||
reflink = callPackage ../development/python-modules/reflink { };
|
||||
|
||||
regenmaschine = callPackage ../development/python-modules/regenmaschine { };
|
||||
|
||||
regex = callPackage ../development/python-modules/regex { };
|
||||
|
||||
regional = callPackage ../development/python-modules/regional { };
|
||||
|
Loading…
Reference in New Issue
Block a user