Merge staging-next into staging
This commit is contained in:
commit
ef59504ab1
@ -278,6 +278,16 @@
|
||||
<link linkend="opt-services.prometheus.sachet.enable">services.prometheus.sachet</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://evcc.io">EVCC</link> is an EV charge
|
||||
controller with PV integration. It supports a multitude of
|
||||
chargers, meters, vehicle APIs and more and ties that together
|
||||
with a well-tested backend and a lightweight web frontend.
|
||||
Available as
|
||||
<link linkend="opt-services.evcc.enable">services.evcc</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://github.com/leetronics/infnoise">infnoise</link>,
|
||||
|
@ -98,6 +98,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- [Sachet](https://github.com/messagebird/sachet/), an SMS alerting tool for the Prometheus Alertmanager. Available as [services.prometheus.sachet](#opt-services.prometheus.sachet.enable).
|
||||
|
||||
- [EVCC](https://evcc.io) is an EV charge controller with PV integration. It supports a multitude of chargers, meters, vehicle APIs and more and ties that together with a well-tested backend and a lightweight web frontend. Available as [services.evcc](#opt-services.evcc.enable).
|
||||
|
||||
- [infnoise](https://github.com/leetronics/infnoise), a hardware True Random Number Generator dongle.
|
||||
Available as [services.infnoise](options.html#opt-services.infnoise.enable).
|
||||
|
||||
|
@ -491,6 +491,7 @@
|
||||
./services/hardware/vdr.nix
|
||||
./services/home-automation/home-assistant.nix
|
||||
./services/home-automation/zigbee2mqtt.nix
|
||||
./services/home-automation/evcc.nix
|
||||
./services/logging/SystemdJournal2Gelf.nix
|
||||
./services/logging/awstats.nix
|
||||
./services/logging/filebeat.nix
|
||||
|
92
nixos/modules/services/home-automation/evcc.nix
Normal file
92
nixos/modules/services/home-automation/evcc.nix
Normal file
@ -0,0 +1,92 @@
|
||||
{ lib
|
||||
, pkgs
|
||||
, config
|
||||
, ...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.evcc;
|
||||
|
||||
format = pkgs.formats.yaml {};
|
||||
configFile = format.generate "evcc.yml" cfg.settings;
|
||||
|
||||
package = pkgs.evcc;
|
||||
in
|
||||
|
||||
{
|
||||
meta.maintainers = with lib.maintainers; [ hexa ];
|
||||
|
||||
options.services.evcc = with types; {
|
||||
enable = mkEnableOption (lib.mdDoc "EVCC, the extensible EV Charge Controller with PV integration");
|
||||
|
||||
extraArgs = mkOption {
|
||||
type = listOf str;
|
||||
default = [];
|
||||
description = lib.mdDoc ''
|
||||
Extra arguments to pass to the evcc executable.
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = format.type;
|
||||
description = lib.mdDoc ''
|
||||
evcc configuration as a Nix attribute set.
|
||||
|
||||
Check for possible options in the sample [evcc.dist.yaml](https://github.com/andig/evcc/blob/${package.version}/evcc.dist.yaml].
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.evcc = {
|
||||
after = [
|
||||
"network-online.target"
|
||||
"mosquitto.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"multi-user.target"
|
||||
];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${package}/bin/evcc --config ${configFile} ${escapeShellArgs cfg.extraArgs}";
|
||||
CapabilityBoundingSet = [ "" ];
|
||||
DeviceAllow = [
|
||||
"char-ttyUSB"
|
||||
];
|
||||
DevicePolicy = "closed";
|
||||
DynamicUser = true;
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
RestrictAddressFamilies = [
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
"AF_UNIX"
|
||||
];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
PrivateTmp = true;
|
||||
PrivateUsers = true;
|
||||
ProcSubset = "pid";
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups= true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectProc = "invisible";
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
"@system-service"
|
||||
"~@privileged"
|
||||
];
|
||||
UMask = "0077";
|
||||
User = "evcc";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.buildDocsInSandbox = false;
|
||||
}
|
@ -14,7 +14,7 @@ let
|
||||
serviceDirectories = cfg.packages;
|
||||
};
|
||||
|
||||
inherit (lib) mkOption types;
|
||||
inherit (lib) mkOption mkIf mkMerge types;
|
||||
|
||||
in
|
||||
|
||||
@ -33,6 +33,18 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
implementation = mkOption {
|
||||
type = types.enum [ "dbus" "broker" ];
|
||||
default = "dbus";
|
||||
description = lib.mdDoc ''
|
||||
The implementation to use for the message bus defined by the D-Bus specification.
|
||||
Can be either the classic dbus daemon or dbus-broker, which aims to provide high
|
||||
performance and reliability, while keeping compatibility to the D-Bus
|
||||
reference implementation.
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
packages = mkOption {
|
||||
type = types.listOf types.path;
|
||||
default = [ ];
|
||||
@ -66,66 +78,114 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [
|
||||
pkgs.dbus
|
||||
];
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
{
|
||||
environment.etc."dbus-1".source = configDir;
|
||||
|
||||
environment.etc."dbus-1".source = configDir;
|
||||
|
||||
users.users.messagebus = {
|
||||
uid = config.ids.uids.messagebus;
|
||||
description = "D-Bus system message bus daemon user";
|
||||
home = homeDir;
|
||||
group = "messagebus";
|
||||
};
|
||||
|
||||
users.groups.messagebus.gid = config.ids.gids.messagebus;
|
||||
|
||||
systemd.packages = [
|
||||
pkgs.dbus
|
||||
];
|
||||
|
||||
security.wrappers.dbus-daemon-launch-helper = {
|
||||
source = "${pkgs.dbus}/libexec/dbus-daemon-launch-helper";
|
||||
owner = "root";
|
||||
group = "messagebus";
|
||||
setuid = true;
|
||||
setgid = false;
|
||||
permissions = "u+rx,g+rx,o-rx";
|
||||
};
|
||||
|
||||
services.dbus.packages = [
|
||||
pkgs.dbus
|
||||
config.system.path
|
||||
];
|
||||
|
||||
systemd.services.dbus = {
|
||||
# Don't restart dbus-daemon. Bad things tend to happen if we do.
|
||||
reloadIfChanged = true;
|
||||
restartTriggers = [
|
||||
configDir
|
||||
environment.pathsToLink = [
|
||||
"/etc/dbus-1"
|
||||
"/share/dbus-1"
|
||||
];
|
||||
environment = {
|
||||
LD_LIBRARY_PATH = config.system.nssModules.path;
|
||||
|
||||
users.users.messagebus = {
|
||||
uid = config.ids.uids.messagebus;
|
||||
description = "D-Bus system message bus daemon user";
|
||||
home = homeDir;
|
||||
group = "messagebus";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services.dbus = {
|
||||
# Don't restart dbus-daemon. Bad things tend to happen if we do.
|
||||
reloadIfChanged = true;
|
||||
restartTriggers = [
|
||||
configDir
|
||||
users.groups.messagebus.gid = config.ids.gids.messagebus;
|
||||
|
||||
# You still need the dbus reference implementation installed to use dbus-broker
|
||||
systemd.packages = [
|
||||
pkgs.dbus
|
||||
];
|
||||
};
|
||||
|
||||
systemd.user.sockets.dbus.wantedBy = [
|
||||
"sockets.target"
|
||||
];
|
||||
services.dbus.packages = [
|
||||
pkgs.dbus
|
||||
config.system.path
|
||||
];
|
||||
|
||||
environment.pathsToLink = [
|
||||
"/etc/dbus-1"
|
||||
"/share/dbus-1"
|
||||
];
|
||||
};
|
||||
systemd.user.sockets.dbus.wantedBy = [
|
||||
"sockets.target"
|
||||
];
|
||||
}
|
||||
|
||||
(mkIf (cfg.implementation == "dbus") {
|
||||
environment.systemPackages = [
|
||||
pkgs.dbus
|
||||
];
|
||||
|
||||
security.wrappers.dbus-daemon-launch-helper = {
|
||||
source = "${pkgs.dbus}/libexec/dbus-daemon-launch-helper";
|
||||
owner = "root";
|
||||
group = "messagebus";
|
||||
setuid = true;
|
||||
setgid = false;
|
||||
permissions = "u+rx,g+rx,o-rx";
|
||||
};
|
||||
|
||||
systemd.services.dbus = {
|
||||
# Don't restart dbus-daemon. Bad things tend to happen if we do.
|
||||
reloadIfChanged = true;
|
||||
restartTriggers = [
|
||||
configDir
|
||||
];
|
||||
environment = {
|
||||
LD_LIBRARY_PATH = config.system.nssModules.path;
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services.dbus = {
|
||||
# Don't restart dbus-daemon. Bad things tend to happen if we do.
|
||||
reloadIfChanged = true;
|
||||
restartTriggers = [
|
||||
configDir
|
||||
];
|
||||
};
|
||||
|
||||
})
|
||||
|
||||
(mkIf (cfg.implementation == "broker") {
|
||||
environment.systemPackages = [
|
||||
pkgs.dbus-broker
|
||||
];
|
||||
|
||||
systemd.packages = [
|
||||
pkgs.dbus-broker
|
||||
];
|
||||
|
||||
# Just to be sure we don't restart through the unit alias
|
||||
systemd.services.dbus.reloadIfChanged = true;
|
||||
systemd.user.services.dbus.reloadIfChanged = true;
|
||||
|
||||
# NixOS Systemd Module doesn't respect 'Install'
|
||||
# https://github.com/NixOS/nixpkgs/issues/108643
|
||||
systemd.services.dbus-broker = {
|
||||
aliases = [
|
||||
"dbus.service"
|
||||
];
|
||||
# Don't restart dbus. Bad things tend to happen if we do.
|
||||
reloadIfChanged = true;
|
||||
restartTriggers = [
|
||||
configDir
|
||||
];
|
||||
environment = {
|
||||
LD_LIBRARY_PATH = config.system.nssModules.path;
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services.dbus-broker = {
|
||||
aliases = [
|
||||
"dbus.service"
|
||||
];
|
||||
# Don't restart dbus. Bad things tend to happen if we do.
|
||||
reloadIfChanged = true;
|
||||
restartTriggers = [
|
||||
configDir
|
||||
];
|
||||
};
|
||||
})
|
||||
|
||||
]);
|
||||
}
|
||||
|
@ -198,6 +198,7 @@ in {
|
||||
etebase-server = handleTest ./etebase-server.nix {};
|
||||
etesync-dav = handleTest ./etesync-dav.nix {};
|
||||
extra-python-packages = handleTest ./extra-python-packages.nix {};
|
||||
evcc = handleTest ./evcc.nix {};
|
||||
fancontrol = handleTest ./fancontrol.nix {};
|
||||
fcitx = handleTest ./fcitx {};
|
||||
fenics = handleTest ./fenics.nix {};
|
||||
|
96
nixos/tests/evcc.nix
Normal file
96
nixos/tests/evcc.nix
Normal file
@ -0,0 +1,96 @@
|
||||
import ./make-test-python.nix ({ pkgs, lib, ...} :
|
||||
|
||||
{
|
||||
name = "evcc";
|
||||
meta.maintainers = with lib.maintainers; [ hexa ];
|
||||
|
||||
nodes = {
|
||||
machine = { config, ... }: {
|
||||
services.evcc = {
|
||||
enable = true;
|
||||
settings = {
|
||||
network = {
|
||||
schema = "http";
|
||||
host = "localhost";
|
||||
port = 7070;
|
||||
};
|
||||
|
||||
log = "info";
|
||||
|
||||
site = {
|
||||
title = "NixOS Test";
|
||||
meters = {
|
||||
grid = "grid";
|
||||
pv = "pv";
|
||||
};
|
||||
};
|
||||
|
||||
meters = [ {
|
||||
type = "custom";
|
||||
name = "grid";
|
||||
power = {
|
||||
source = "script";
|
||||
cmd = "/bin/sh -c 'echo -4500'";
|
||||
};
|
||||
} {
|
||||
type = "custom";
|
||||
name = "pv";
|
||||
power = {
|
||||
source = "script";
|
||||
cmd = "/bin/sh -c 'echo 7500'";
|
||||
};
|
||||
} ];
|
||||
|
||||
chargers = [ {
|
||||
name = "dummy-charger";
|
||||
type = "custom";
|
||||
status = {
|
||||
source = "script";
|
||||
cmd = "/bin/sh -c 'echo charger status F'";
|
||||
};
|
||||
enabled = {
|
||||
source = "script";
|
||||
cmd = "/bin/sh -c 'echo charger enabled state false'";
|
||||
};
|
||||
enable = {
|
||||
source = "script";
|
||||
cmd = "/bin/sh -c 'echo set charger enabled state true'";
|
||||
};
|
||||
maxcurrent = {
|
||||
source = "script";
|
||||
cmd = "/bin/sh -c 'echo set charger max current 7200'";
|
||||
};
|
||||
} ];
|
||||
|
||||
loadpoints = [ {
|
||||
title = "Dummy";
|
||||
charger = "dummy-charger";
|
||||
} ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
machine.wait_for_unit("evcc.service")
|
||||
machine.wait_for_open_port(7070)
|
||||
|
||||
with subtest("Check package version propagates into frontend"):
|
||||
machine.fail(
|
||||
"curl --fail http://localhost:7070 | grep '0.0.1-alpha'"
|
||||
)
|
||||
machine.succeed(
|
||||
"curl --fail http://localhost:7070 | grep '${pkgs.evcc.version}'"
|
||||
)
|
||||
|
||||
with subtest("Check journal for errors"):
|
||||
_, output = machine.execute("journalctl -o cat -u evcc.service")
|
||||
assert "ERROR" not in output
|
||||
|
||||
with subtest("Check systemd hardening"):
|
||||
_, output = machine.execute("systemd-analyze security evcc.service | grep -v '✓'")
|
||||
machine.log(output)
|
||||
'';
|
||||
})
|
@ -12,7 +12,6 @@
|
||||
, pixman
|
||||
, libpng
|
||||
, wayland
|
||||
, wlroots
|
||||
, dbus
|
||||
, fcft
|
||||
}:
|
||||
@ -43,7 +42,6 @@ stdenv.mkDerivation rec {
|
||||
pixman
|
||||
libpng
|
||||
wayland
|
||||
wlroots
|
||||
dbus
|
||||
fcft
|
||||
];
|
||||
|
@ -441,24 +441,24 @@
|
||||
"version": "3.19.0"
|
||||
},
|
||||
"google": {
|
||||
"hash": "sha256-qOB4UV53j0Bm0332U1YETzLfyBtGwfXs2hGDAL2BCCk=",
|
||||
"hash": "sha256-etTMRjQeZoLNpFlKBWa63eowXQC8wDP/O0YdwzbmFK0=",
|
||||
"owner": "hashicorp",
|
||||
"provider-source-address": "registry.terraform.io/hashicorp/google",
|
||||
"proxyVendor": true,
|
||||
"repo": "terraform-provider-google",
|
||||
"rev": "v4.43.1",
|
||||
"vendorHash": "sha256-Hzl95NLEZlvTBpCGJYzF5rtHWfYe26TwW0pbtqWmxOo=",
|
||||
"version": "4.43.1"
|
||||
"rev": "v4.44.0",
|
||||
"vendorHash": "sha256-X5wjho+hotqi9aZ5ABv3RY0xJj1HFH7IN/HLPKIxi2c=",
|
||||
"version": "4.44.0"
|
||||
},
|
||||
"google-beta": {
|
||||
"hash": "sha256-nNz9BgTJ8Aj3QZNpT0XK14s44+thDu4EfLvbEB8OFRc=",
|
||||
"hash": "sha256-AD2ZtjjlmYZYmBA3csjIDH+4g7DTskaLeuBGjqIKpbU=",
|
||||
"owner": "hashicorp",
|
||||
"provider-source-address": "registry.terraform.io/hashicorp/google-beta",
|
||||
"proxyVendor": true,
|
||||
"repo": "terraform-provider-google-beta",
|
||||
"rev": "v4.43.1",
|
||||
"vendorHash": "sha256-Hzl95NLEZlvTBpCGJYzF5rtHWfYe26TwW0pbtqWmxOo=",
|
||||
"version": "4.43.1"
|
||||
"rev": "v4.44.0",
|
||||
"vendorHash": "sha256-X5wjho+hotqi9aZ5ABv3RY0xJj1HFH7IN/HLPKIxi2c=",
|
||||
"version": "4.44.0"
|
||||
},
|
||||
"googleworkspace": {
|
||||
"hash": "sha256-dedYnsKHizxJZibuvJOMbJoux0W6zgKaK5fxIofKqCY=",
|
||||
@ -950,13 +950,13 @@
|
||||
"version": "1.7.0"
|
||||
},
|
||||
"rancher2": {
|
||||
"hash": "sha256-TqztIk0sHevfv+BpNZJUs1XbwrbzJtcqdafGN5fTVaE=",
|
||||
"hash": "sha256-DInP+DpCBOsBdlg1tiujlmN20WB5VQbeHgOiabEv9Zc=",
|
||||
"owner": "rancher",
|
||||
"provider-source-address": "registry.terraform.io/rancher/rancher2",
|
||||
"repo": "terraform-provider-rancher2",
|
||||
"rev": "v1.24.2",
|
||||
"rev": "v1.25.0",
|
||||
"vendorHash": "sha256-Ntq4wxXPUGbu4+6X1pBsmQsqfJ/jccTiHDJeHVpWe8Y=",
|
||||
"version": "1.24.2"
|
||||
"version": "1.25.0"
|
||||
},
|
||||
"random": {
|
||||
"hash": "sha256-oYtvVK0OOHyLUG6amhkvmr6zlbzy0CKoS3DxztoLbdE=",
|
||||
@ -1112,13 +1112,13 @@
|
||||
"version": "0.13.5"
|
||||
},
|
||||
"tencentcloud": {
|
||||
"hash": "sha256-HSZP6O9s6KkvaJK3xpy7uT3sjBlhBYEOu5k7VYW8MdU=",
|
||||
"hash": "sha256-62G9q/MZtVnKO0ALXX9/pgkHDV6Bfdol4tSVdl0kx3I=",
|
||||
"owner": "tencentcloudstack",
|
||||
"provider-source-address": "registry.terraform.io/tencentcloudstack/tencentcloud",
|
||||
"repo": "terraform-provider-tencentcloud",
|
||||
"rev": "v1.78.12",
|
||||
"rev": "v1.78.13",
|
||||
"vendorHash": null,
|
||||
"version": "1.78.12"
|
||||
"version": "1.78.13"
|
||||
},
|
||||
"tfe": {
|
||||
"hash": "sha256-ikuLRGm9Z+tt0Zsx7DYKNBrS08rW4DOvVWYpl3wvaeU=",
|
||||
|
@ -1,16 +1,31 @@
|
||||
{ lib, fetchFromGitHub, cmake, extra-cmake-modules, pkg-config
|
||||
, qtbase, qtimageformats, qtwebengine, qtx11extras, mkDerivation
|
||||
, libarchive, libXdmcp, libpthreadstubs, xcbutilkeysyms }:
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, extra-cmake-modules
|
||||
, pkg-config
|
||||
, qtbase
|
||||
, qtimageformats
|
||||
, qtwebengine
|
||||
, qtx11extras ? null # qt5 only
|
||||
, libarchive
|
||||
, libXdmcp
|
||||
, libpthreadstubs
|
||||
, wrapQtAppsHook
|
||||
, xcbutilkeysyms
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
let
|
||||
isQt5 = lib.versions.major qtbase.version == "5";
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "zeal";
|
||||
version = "0.6.999";
|
||||
version = "0.6.20221022";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zealdocs";
|
||||
repo = "zeal";
|
||||
rev = "763edca12ccd6c67e51f10891d1ced8b2510904f";
|
||||
sha256 = "sha256-1/wQXkRWvpRia8UDvvvmzHinPG8q2Tz9Uoeegej9uC8=";
|
||||
rev = "7ea03e4bb9754020e902a2989f56f4bc42b85c82";
|
||||
sha256 = "sha256-BozRLlws56i9P7Qtc5qPZWgJR5yhYqnLQsEdsymt5us=";
|
||||
};
|
||||
|
||||
# we only need this if we are using a version that hasn't been released. We
|
||||
@ -22,13 +37,18 @@ mkDerivation rec {
|
||||
-e 's@^project.*@project(Zeal VERSION ${version})@'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake extra-cmake-modules pkg-config ];
|
||||
nativeBuildInputs = [ cmake extra-cmake-modules pkg-config wrapQtAppsHook ];
|
||||
|
||||
buildInputs = [
|
||||
qtbase qtimageformats qtwebengine qtx11extras
|
||||
libarchive
|
||||
libXdmcp libpthreadstubs xcbutilkeysyms
|
||||
];
|
||||
buildInputs =
|
||||
[
|
||||
qtbase
|
||||
qtimageformats
|
||||
qtwebengine
|
||||
libarchive
|
||||
libXdmcp
|
||||
libpthreadstubs
|
||||
xcbutilkeysyms
|
||||
] ++ lib.optionals isQt5 [ qtx11extras ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A simple offline API documentation browser";
|
||||
|
@ -17,7 +17,9 @@ stdenv.mkDerivation rec {
|
||||
mv * $out
|
||||
'';
|
||||
|
||||
fixupPhase = ''
|
||||
# Use preFixup instead of fixupPhase
|
||||
# because we want the default fixupPhase as well
|
||||
preFixup = ''
|
||||
bin_files=$(find $out/bin -type f ! -name common)
|
||||
for f in $bin_files ; do
|
||||
wrapProgram $f --set JAVA_HOME ${jre} --prefix PATH : '${ncurses.dev}/bin'
|
||||
|
@ -1,64 +0,0 @@
|
||||
{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, wayland-scanner
|
||||
, libGL, wayland, wayland-protocols, libinput, libxkbcommon, pixman
|
||||
, libcap, mesa, xorg
|
||||
, libpng, ffmpeg_4, seatd
|
||||
|
||||
, enableXWayland ? true, xwayland ? null
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "wlroots";
|
||||
version = "0.14.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "swaywm";
|
||||
repo = "wlroots";
|
||||
rev = version;
|
||||
sha256 = "1sshp3lvlkl1i670kxhwsb4xzxl8raz6769kqvgmxzcb63ns9ay1";
|
||||
};
|
||||
|
||||
# $out for the library and $examples for the example programs (in examples):
|
||||
outputs = [ "out" "examples" ];
|
||||
|
||||
strictDeps = true;
|
||||
depsBuildBuild = [ pkg-config ];
|
||||
|
||||
nativeBuildInputs = [ meson ninja pkg-config wayland-scanner ];
|
||||
|
||||
buildInputs = [
|
||||
libGL wayland wayland-protocols libinput libxkbcommon pixman
|
||||
xorg.xcbutilwm xorg.libX11 libcap xorg.xcbutilimage xorg.xcbutilerrors mesa
|
||||
libpng ffmpeg_4 xorg.xcbutilrenderutil seatd
|
||||
]
|
||||
++ lib.optional enableXWayland xwayland
|
||||
;
|
||||
|
||||
mesonFlags =
|
||||
lib.optional (!enableXWayland) "-Dxwayland=disabled"
|
||||
;
|
||||
|
||||
postFixup = ''
|
||||
# Install ALL example programs to $examples:
|
||||
# screencopy dmabuf-capture input-inhibitor layer-shell idle-inhibit idle
|
||||
# screenshot output-layout multi-pointer rotation tablet touch pointer
|
||||
# simple
|
||||
mkdir -p $examples/bin
|
||||
cd ./examples
|
||||
for binary in $(find . -executable -type f -printf '%P\n' | grep -vE '\.so'); do
|
||||
cp "$binary" "$examples/bin/wlroots-$binary"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A modular Wayland compositor library";
|
||||
longDescription = ''
|
||||
Pluggable, composable, unopinionated modules for building a Wayland
|
||||
compositor; or about 50,000 lines of code you were going to write anyway.
|
||||
'';
|
||||
inherit (src.meta) homepage;
|
||||
changelog = "https://github.com/swaywm/wlroots/releases/tag/${version}";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ primeos synthetica ];
|
||||
};
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
{ lib, stdenv, fetchFromGitLab, meson, ninja, pkg-config, wayland-scanner
|
||||
, libGL, wayland, wayland-protocols, libinput, libxkbcommon, pixman
|
||||
,libcap, mesa, xorg
|
||||
, libpng, ffmpeg_4, seatd, vulkan-loader, glslang
|
||||
, nixosTests
|
||||
|
||||
, enableXWayland ? true, xwayland ? null
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "wlroots";
|
||||
version = "0.15.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.freedesktop.org";
|
||||
owner = "wlroots";
|
||||
repo = "wlroots";
|
||||
rev = version;
|
||||
sha256 = "sha256-MFR38UuB/wW7J9ODDUOfgTzKLse0SSMIRYTpEaEdRwM=";
|
||||
};
|
||||
|
||||
# $out for the library and $examples for the example programs (in examples):
|
||||
outputs = [ "out" "examples" ];
|
||||
|
||||
strictDeps = true;
|
||||
depsBuildBuild = [ pkg-config ];
|
||||
|
||||
nativeBuildInputs = [ meson ninja pkg-config wayland-scanner glslang ];
|
||||
|
||||
buildInputs = [
|
||||
libGL wayland wayland-protocols libinput libxkbcommon pixman
|
||||
xorg.xcbutilwm xorg.libX11 libcap xorg.xcbutilimage xorg.xcbutilerrors mesa
|
||||
libpng ffmpeg_4 xorg.xcbutilrenderutil seatd vulkan-loader
|
||||
]
|
||||
++ lib.optional enableXWayland xwayland
|
||||
;
|
||||
|
||||
mesonFlags =
|
||||
lib.optional (!enableXWayland) "-Dxwayland=disabled"
|
||||
;
|
||||
|
||||
postFixup = ''
|
||||
# Install ALL example programs to $examples:
|
||||
# screencopy dmabuf-capture input-inhibitor layer-shell idle-inhibit idle
|
||||
# screenshot output-layout multi-pointer rotation tablet touch pointer
|
||||
# simple
|
||||
mkdir -p $examples/bin
|
||||
cd ./examples
|
||||
for binary in $(find . -executable -type f -printf '%P\n' | grep -vE '\.so'); do
|
||||
cp "$binary" "$examples/bin/wlroots-$binary"
|
||||
done
|
||||
'';
|
||||
|
||||
# Test via TinyWL (the "minimum viable product" Wayland compositor based on wlroots):
|
||||
passthru.tests.tinywl = nixosTests.tinywl;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A modular Wayland compositor library";
|
||||
longDescription = ''
|
||||
Pluggable, composable, unopinionated modules for building a Wayland
|
||||
compositor; or about 50,000 lines of code you were going to write anyway.
|
||||
'';
|
||||
inherit (src.meta) homepage;
|
||||
changelog = "https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/${version}";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ primeos synthetica ];
|
||||
};
|
||||
}
|
135
pkgs/development/libraries/wlroots/default.nix
Normal file
135
pkgs/development/libraries/wlroots/default.nix
Normal file
@ -0,0 +1,135 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitLab
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, wayland-scanner
|
||||
, libGL
|
||||
, wayland
|
||||
, wayland-protocols
|
||||
, libinput
|
||||
, libxkbcommon
|
||||
, pixman
|
||||
, libcap
|
||||
, mesa
|
||||
, xorg
|
||||
, libpng
|
||||
, ffmpeg_4
|
||||
, hwdata
|
||||
, seatd
|
||||
, vulkan-loader
|
||||
, glslang
|
||||
, nixosTests
|
||||
|
||||
, enableXWayland ? true
|
||||
, xwayland ? null
|
||||
}:
|
||||
|
||||
let
|
||||
generic = { version, hash, extraBuildInputs ? [ ], extraNativeBuildInputs ? [ ], extraPatch ? "" }:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "wlroots";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.freedesktop.org";
|
||||
owner = "wlroots";
|
||||
repo = "wlroots";
|
||||
rev = version;
|
||||
inherit hash;
|
||||
};
|
||||
|
||||
postPatch = extraPatch;
|
||||
|
||||
# $out for the library and $examples for the example programs (in examples):
|
||||
outputs = [ "out" "examples" ];
|
||||
|
||||
strictDeps = true;
|
||||
depsBuildBuild = [ pkg-config ];
|
||||
|
||||
nativeBuildInputs = [ meson ninja pkg-config wayland-scanner ]
|
||||
++ extraNativeBuildInputs;
|
||||
|
||||
buildInputs = [
|
||||
ffmpeg_4
|
||||
libGL
|
||||
libcap
|
||||
libinput
|
||||
libpng
|
||||
libxkbcommon
|
||||
mesa
|
||||
pixman
|
||||
seatd
|
||||
vulkan-loader
|
||||
wayland
|
||||
wayland-protocols
|
||||
xorg.libX11
|
||||
xorg.xcbutilerrors
|
||||
xorg.xcbutilimage
|
||||
xorg.xcbutilrenderutil
|
||||
xorg.xcbutilwm
|
||||
]
|
||||
++ lib.optional enableXWayland xwayland
|
||||
++ extraBuildInputs;
|
||||
|
||||
mesonFlags =
|
||||
lib.optional (!enableXWayland) "-Dxwayland=disabled"
|
||||
;
|
||||
|
||||
postFixup = ''
|
||||
# Install ALL example programs to $examples:
|
||||
# screencopy dmabuf-capture input-inhibitor layer-shell idle-inhibit idle
|
||||
# screenshot output-layout multi-pointer rotation tablet touch pointer
|
||||
# simple
|
||||
mkdir -p $examples/bin
|
||||
cd ./examples
|
||||
for binary in $(find . -executable -type f -printf '%P\n' | grep -vE '\.so'); do
|
||||
cp "$binary" "$examples/bin/wlroots-$binary"
|
||||
done
|
||||
'';
|
||||
|
||||
# Test via TinyWL (the "minimum viable product" Wayland compositor based on wlroots):
|
||||
passthru.tests.tinywl = nixosTests.tinywl;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A modular Wayland compositor library";
|
||||
longDescription = ''
|
||||
Pluggable, composable, unopinionated modules for building a Wayland
|
||||
compositor; or about 50,000 lines of code you were going to write anyway.
|
||||
'';
|
||||
inherit (src.meta) homepage;
|
||||
changelog = "https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/${version}";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ primeos synthetica ];
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
rec {
|
||||
wlroots_0_14 = generic {
|
||||
version = "0.14.1";
|
||||
hash = "sha256-wauk7TCL/V7fxjOZY77KiPbfydIc9gmOiYFOuum4UOs=";
|
||||
};
|
||||
|
||||
wlroots_0_15 = generic {
|
||||
version = "0.15.1";
|
||||
hash = "sha256-MFR38UuB/wW7J9ODDUOfgTzKLse0SSMIRYTpEaEdRwM=";
|
||||
extraBuildInputs = [ vulkan-loader ];
|
||||
extraNativeBuildInputs = [ glslang ];
|
||||
};
|
||||
|
||||
wlroots_0_16 = generic {
|
||||
version = "0.16.0";
|
||||
hash = "sha256-k7BFx1xvvsdCXNWX0XeZYwv8H/myk4p42i2Y6vjILqM=";
|
||||
extraBuildInputs = [ vulkan-loader ];
|
||||
extraNativeBuildInputs = [ glslang ];
|
||||
extraPatch = ''
|
||||
substituteInPlace backend/drm/meson.build \
|
||||
--replace /usr/share/hwdata/ ${hwdata}/share/hwdata/
|
||||
'';
|
||||
};
|
||||
|
||||
wlroots = wlroots_0_15;
|
||||
}
|
@ -1,17 +1,42 @@
|
||||
{ lib, buildPythonPackage, fetchPypi }:
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, pythonOlder
|
||||
, setuptools
|
||||
, pytestCheckHook
|
||||
, lxml
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "cssselect";
|
||||
version = "1.1.0";
|
||||
version = "1.2.0";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "f95f8dedd925fd8f54edb3d2dfb44c190d9d18512377d3c1e2388d16126879bc";
|
||||
sha256 = "666b19839cfaddb9ce9d36bfe4c969132c647b92fc9088c4e23f786b30f1b3dc";
|
||||
};
|
||||
|
||||
# AttributeError: 'module' object has no attribute 'tests'
|
||||
doCheck = false;
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
lxml
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"cssselect"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "CSS Selectors for Python";
|
||||
homepage = "https://cssselect.readthedocs.io/";
|
||||
changelog = "https://github.com/scrapy/cssselect/v${version}//CHANGES";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ ];
|
||||
};
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pebble";
|
||||
version = "5.0.2";
|
||||
version = "5.0.3";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
@ -16,7 +16,7 @@ buildPythonPackage rec {
|
||||
src = fetchPypi {
|
||||
pname = "Pebble";
|
||||
inherit version;
|
||||
hash = "sha256-nFjAPq+SDDEodETG/vOdxTuurJ3iIerRBPXJtI6L1Yc=";
|
||||
hash = "sha256-vc/Z6n4K7biVsgQXfBnm1lQ9mWL040AuurIXUASGPag=";
|
||||
};
|
||||
|
||||
checkInputs = [
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "esbuild";
|
||||
version = "0.15.14";
|
||||
version = "0.15.15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "evanw";
|
||||
repo = "esbuild";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-RcXVynR/dHI0Wn9gTQsYVjxqzAfeiI52Ph+hfpM9RhU=";
|
||||
sha256 = "sha256-vWpm9tbzLZE+rrEHC6mBH+ajMdhdAk9Fwy5MBFG35ss=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
|
||||
|
@ -7,16 +7,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-expand";
|
||||
version = "1.0.32";
|
||||
version = "1.0.35";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dtolnay";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-5zWJsc0OKgQMp0PeCuL99RE/Uj5sudXRMITjoKniPqQ=";
|
||||
sha256 = "sha256-hJb4FLL3+AMNLL05eQc7Mkhp0KEGxmHg8/ETDoZiLV4=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-/euiu7WNFY89QU1BKFfOAn7k93dZpuwbS6u2A6MDsoM=";
|
||||
cargoSha256 = "sha256-wKVlmO2/ugAb7vUSIGMz0WGnjEVEsm459DV9FaM28Mk=";
|
||||
|
||||
buildInputs = lib.optional stdenv.isDarwin libiconv;
|
||||
|
||||
|
96
pkgs/servers/home-automation/evcc/default.nix
Normal file
96
pkgs/servers/home-automation/evcc/default.nix
Normal file
@ -0,0 +1,96 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
, fetchNpmDeps
|
||||
, cacert
|
||||
, go
|
||||
, git
|
||||
, enumer
|
||||
, mockgen
|
||||
, nodejs
|
||||
, npmHooks
|
||||
, nix-update-script
|
||||
, nixosTests
|
||||
, stdenv
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "evcc";
|
||||
version = "0.107.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "evcc-io";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-Yu7ebZ6WkLpdvmg7H9A1Sveyu9SRuQ+78gFrCZrYhCU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-10W1BNHcdP77m7lJ/mc+jQeUigoUid3K0wI4bUm5y+s=";
|
||||
|
||||
npmDeps = fetchNpmDeps {
|
||||
inherit src;
|
||||
hash = "sha256-+l5LuxJAjrTvOL5XEQ4OIktdupSpn6IqrNX5x4MRmNw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
npmHooks.npmConfigHook
|
||||
];
|
||||
|
||||
overrideModAttrs = _: {
|
||||
nativeBuildInputs = [
|
||||
enumer
|
||||
go
|
||||
git
|
||||
cacert
|
||||
mockgen
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
make assets
|
||||
'';
|
||||
};
|
||||
|
||||
tags = [
|
||||
"release"
|
||||
];
|
||||
|
||||
ldflags = [
|
||||
"-X github.com/evcc-io/evcc/server.Version=${version}"
|
||||
"-X github.com/evcc-io/evcc/server.Commit=${src.rev}"
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
|
||||
npmInstallFlags = [
|
||||
"--legacy-peer-deps"
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
make ui
|
||||
'';
|
||||
|
||||
doCheck = !stdenv.isDarwin; # tries to bind to local network, doesn't work in darwin sandbox
|
||||
|
||||
preCheck = ''
|
||||
# requires network access
|
||||
rm meter/template_test.go
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
tests = {
|
||||
inherit (nixosTests) evcc;
|
||||
};
|
||||
updateScript = nix-update-script {
|
||||
attrPath = pname;
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "EV Charge Controller";
|
||||
homepage = "https://evcc.io";
|
||||
changelog = "https://github.com/andig/evcc/releases/tag/${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ hexa ];
|
||||
};
|
||||
}
|
@ -9,13 +9,13 @@
|
||||
|
||||
buildDotnetModule rec {
|
||||
pname = "jackett";
|
||||
version = "0.20.2264";
|
||||
version = "0.20.2271";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "Y1m828STKL4ANuf11oCekvT2ctCRBlT7Blyvvoltdxc=";
|
||||
sha256 = "Sngvd9OWCB2I0qfYvb7yEGb7HiWuHtc+jU6O5r68mbU=";
|
||||
};
|
||||
|
||||
projectFile = "src/Jackett.Server/Jackett.Server.csproj";
|
||||
|
@ -26,14 +26,14 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dwarfs";
|
||||
version = "0.6.1";
|
||||
version = "0.6.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mhx";
|
||||
repo = "dwarfs";
|
||||
rev = "v${version}";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-bGJkgcq8JxueRTX08QpJv1A0O5wXbiIgUY7BrY0Ln/M=";
|
||||
sha256 = "sha256-fA/3AooDndqYiK215cu/zTqCqeccHnwIX2CfJ9sC+Fc=";
|
||||
};
|
||||
|
||||
patches = with lib.versions; [
|
||||
@ -59,6 +59,10 @@ stdenv.mkDerivation rec {
|
||||
# may be added under an option in the future
|
||||
# "-DWITH_LEGACY_FUSE=ON"
|
||||
"-DWITH_TESTS=ON"
|
||||
|
||||
# temporary hack until folly builds work on aarch64,
|
||||
# see https://github.com/facebook/folly/issues/1880
|
||||
"-DCMAKE_LIBRARY_ARCHITECTURE=${if stdenv.isx86_64 then "x86_64" else "dummy"}"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "broadlink-cli";
|
||||
version = "0.18.2";
|
||||
version = "0.18.3";
|
||||
|
||||
# the tools are available as part of the source distribution from GH but
|
||||
# not pypi, so we have to fetch them here.
|
||||
@ -10,7 +10,7 @@ python3Packages.buildPythonApplication rec {
|
||||
owner = "mjg59";
|
||||
repo = "python-broadlink";
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "sha256-JX+Io5EP1OgtP7T+UQtkfCPWE1rd3MTrCYRhU9C0+0c=";
|
||||
sha256 = "sha256-8bSlMA5Nb3hqpVMeHlgb8AkKt5JrfEiyKjobxRBdmNM=";
|
||||
};
|
||||
|
||||
format = "other";
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cyberchef";
|
||||
version = "9.48.0";
|
||||
version = "9.49.0";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/gchq/CyberChef/releases/download/v${version}/CyberChef_v${version}.zip";
|
||||
sha256 = "sha256-tKNU+gUcuZMjsQes/vpEpn216/0fWCgb0mgvJ8WWoDQ=";
|
||||
sha256 = "sha256-5cqCPxyH4O4TzAIwRR2oyWMzIl5Hi5YcdOKdpl518zw=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
26
pkgs/tools/misc/enumer/default.nix
Normal file
26
pkgs/tools/misc/enumer/default.nix
Normal file
@ -0,0 +1,26 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, buildGoModule
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "enumer";
|
||||
version = "1.5.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dmarkham";
|
||||
repo = "enumer";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-2fVWrrWOiCtg7I3Lul2PgQ2u/qDEDioPSB61Tp0rfEo=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-BmFv0ytRnjaB7z7Gb+38Fw2ObagnaFMnMhlejhaGxsk=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Go tool to auto generate methods for enums";
|
||||
homepage = "https://github.com/dmarkham/enumer";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [ hexa ];
|
||||
};
|
||||
}
|
@ -2,18 +2,18 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "godu";
|
||||
version = "1.3.0";
|
||||
version = "1.4.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "viktomas";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1fp8iq4x0qiswksznnd6qh7c6g5pwglzz6ga11a7vgic0201wsvb";
|
||||
hash = "sha256-fJeSUAuNELZZ1DcybNsYd2ZX93VYWsLum5tHp68ZVlo=";
|
||||
};
|
||||
|
||||
patches = [ ./go-mod.patch ];
|
||||
vendorHash = "sha256-8cZCeZ0gqxqbwB0WuEOFmEUNQd3/KcLeN0eLGfWG8BY=";
|
||||
|
||||
vendorSha256 = "1zq7b0zn24cbrjssk4g03i90szp1ms7ila4khwcm7hp9n1py245s";
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Utility helping to discover large files/folders";
|
||||
|
@ -1,33 +0,0 @@
|
||||
diff --git a/go.mod b/go.mod
|
||||
index cf8f2fb..e405e03 100644
|
||||
--- a/go.mod
|
||||
+++ b/go.mod
|
||||
@@ -5,5 +5,6 @@ go 1.14
|
||||
require (
|
||||
github.com/gdamore/tcell v1.1.1
|
||||
github.com/gosuri/uilive v0.0.0-20170323041506-ac356e6e42cd
|
||||
+ github.com/mattn/go-isatty v0.0.12 // indirect
|
||||
github.com/stretchr/testify v1.3.0
|
||||
)
|
||||
diff --git a/go.sum b/go.sum
|
||||
index 23c1232..e25c87e 100644
|
||||
--- a/go.sum
|
||||
+++ b/go.sum
|
||||
@@ -8,6 +8,8 @@ github.com/gosuri/uilive v0.0.0-20170323041506-ac356e6e42cd h1:1e+0Z+T4t1mKL5xxv
|
||||
github.com/gosuri/uilive v0.0.0-20170323041506-ac356e6e42cd/go.mod h1:qkLSc0A5EXSP6B04TrN4oQoxqFI7A8XvoXSlJi8cwk8=
|
||||
github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08 h1:5MnxBC15uMxFv5FY/J/8vzyaBiArCOkMdFT9Jsw78iY=
|
||||
github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08/go.mod h1:NXg0ArsFk0Y01623LgUqoqcouGDB+PwCCQlrwrG6xJ4=
|
||||
+github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
|
||||
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
|
||||
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
@@ -16,6 +18,8 @@ github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg=
|
||||
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 h1:FVCohIoYO7IJoDDVpV2pdq7SgrMH6wHnuTyrdrxJNoY=
|
26
pkgs/tools/misc/mnc/default.nix
Normal file
26
pkgs/tools/misc/mnc/default.nix
Normal file
@ -0,0 +1,26 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromSourcehut
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "mnc";
|
||||
version = "0.4";
|
||||
|
||||
vendorSha256 = "sha256-H0KmGTWyjZOZLIEWophCwRYPeKLxBC050RI7cMXNbPs=";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~anjan";
|
||||
repo = "mnc";
|
||||
rev = version;
|
||||
sha256 = "sha256-S7MBIxuYI+cc8OMQULt7VS7ouPqhq0Jk+rz6E5GyKac=";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Opens the user's crontab and echos the time when the next cronjob will be ran";
|
||||
homepage = "https://git.sr.ht/~anjan/mnc";
|
||||
license = licenses.unlicense;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ wentam ];
|
||||
};
|
||||
}
|
@ -8,13 +8,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "gitleaks";
|
||||
version = "8.15.0";
|
||||
version = "8.15.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zricethezav";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-KqShYaUODClKkbLs3jaj55WXy9HyyBzvY5KdNOqEXPE=";
|
||||
sha256 = "sha256-iIjQytsZDz9H5wT44jBBZCx8NvfAhNBl7pTv3mCkeMY=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-Ev0/CSpwJDmc+Dvu/bFDzsgsq80rWImJWXNAUqYHgoE=";
|
||||
|
@ -4,13 +4,13 @@ let
|
||||
generic = { pname, packageToBuild, description }:
|
||||
buildGoModule rec {
|
||||
inherit pname;
|
||||
version = "1.0.0";
|
||||
version = "1.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sigstore";
|
||||
repo = "rekor";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-yFUpaKfZUgT/KZyZLEeNGnD0SS4iBAQfXRy/Yiuj9g8=";
|
||||
sha256 = "sha256-WVAIhsbxwwvUyuLQLTcMHx9B5UsJxBvmS9MXYxVNiNs=";
|
||||
# populate values that require us to use git. By doing this in postFetch we
|
||||
# can delete .git afterwards and maintain better reproducibility of the src.
|
||||
leaveDotGit = true;
|
||||
|
@ -480,6 +480,8 @@ with pkgs;
|
||||
|
||||
efficient-compression-tool = callPackage ../tools/compression/efficient-compression-tool { };
|
||||
|
||||
enumer = callPackage ../tools/misc/enumer { };
|
||||
|
||||
evans = callPackage ../development/tools/evans { };
|
||||
|
||||
expressvpn = callPackage ../applications/networking/expressvpn { };
|
||||
@ -1394,6 +1396,8 @@ with pkgs;
|
||||
|
||||
midi-trigger = callPackage ../applications/audio/midi-trigger { };
|
||||
|
||||
mnc = callPackage ../tools/misc/mnc { };
|
||||
|
||||
mprocs = callPackage ../tools/misc/mprocs { };
|
||||
|
||||
nominatim = callPackage ../servers/nominatim { };
|
||||
@ -6452,6 +6456,8 @@ with pkgs;
|
||||
|
||||
ettercap = callPackage ../applications/networking/sniffers/ettercap { };
|
||||
|
||||
evcc = callPackage ../servers/home-automation/evcc { };
|
||||
|
||||
eventstat = callPackage ../os-specific/linux/eventstat { };
|
||||
|
||||
evillimiter = python3Packages.callPackage ../tools/networking/evillimiter { };
|
||||
@ -27157,7 +27163,9 @@ with pkgs;
|
||||
inherit (plasma5Packages) breeze-icons;
|
||||
};
|
||||
|
||||
zeal = libsForQt5.callPackage ../data/documentation/zeal { };
|
||||
zeal-qt5 = libsForQt5.callPackage ../data/documentation/zeal { };
|
||||
zeal-qt6 = qt6Packages.callPackage ../data/documentation/zeal { };
|
||||
zeal = zeal-qt5;
|
||||
|
||||
zilla-slab = callPackage ../data/fonts/zilla-slab { };
|
||||
|
||||
@ -29391,9 +29399,11 @@ with pkgs;
|
||||
electron = electron_17;
|
||||
};
|
||||
|
||||
wlroots = wlroots_0_15;
|
||||
wlroots_0_14 = callPackage ../development/libraries/wlroots/0.14.nix { };
|
||||
wlroots_0_15 = callPackage ../development/libraries/wlroots/0.15.nix { };
|
||||
inherit (callPackages ../development/libraries/wlroots {})
|
||||
wlroots_0_14
|
||||
wlroots_0_15
|
||||
wlroots_0_16
|
||||
wlroots;
|
||||
|
||||
sway-unwrapped = callPackage ../applications/window-managers/sway { };
|
||||
sway = callPackage ../applications/window-managers/sway/wrapper.nix { };
|
||||
|
Loading…
Reference in New Issue
Block a user