Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2025-12-11 18:06:04 +00:00
committed by GitHub
72 changed files with 1752 additions and 1070 deletions
+7
View File
@@ -10049,6 +10049,13 @@
github = "HadziqM";
githubId = 50319538;
};
haennetz = {
name = "Hännetz";
email = "me@haennetz.net";
matrix = "@me:haennetz.net";
github = "Haennetz";
githubId = 34142036;
};
hagl = {
email = "harald@glie.be";
github = "hagl";
@@ -10,6 +10,10 @@
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
- [Meshtastic](https://meshtastic.org), an open-source, off-grid, decentralised mesh network
designed to run on affordable, low-power devices. Available as [services.meshtasticd]
(#opt-services.meshtasticd.enable).
- [knot-resolver](https://www.knot-resolver.cz/) in version 6. Available as `services.knot-resolver`. A module for knot-resolver 5 was already available as `services.kresd`.
- [ImmichFrame](https://immichframe.dev/), display your photos from Immich as a digital photo frame. Available as `services.immichframe`.
+1
View File
@@ -1248,6 +1248,7 @@
./services/networking/lxd-image-server.nix
./services/networking/magic-wormhole-mailbox-server.nix
./services/networking/matterbridge.nix
./services/networking/meshtasticd.nix
./services/networking/microsocks.nix
./services/networking/mihomo.nix
./services/networking/minidlna.nix
+33 -26
View File
@@ -29,51 +29,50 @@ let
in
{
imports = [
(mkRenamedOptionModule
[ "services" "snapserver" "controlPort" ]
[ "services" "snapserver" "tcp" "port" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "listenAddress" ]
[ "services" "snapserver" "settings" "stream" "bind_to_address" ]
[ "services" "snapserver" "settings" "tcp-streaming" "bind_to_address" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "port" ]
[ "services" "snapserver" "settings" "stream" "port" ]
[ "services" "snapserver" "settings" "tcp-streaming" "port" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "sampleFormat" ]
[ "services" "snapserver" "settings" "stream" "sampleformat" ]
[ "services" "snapserver" "settings" "tcp-streaming" "sampleformat" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "codec" ]
[ "services" "snapserver" "settings" "stream" "codec" ]
[ "services" "snapserver" "settings" "tcp-streaming" "codec" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "streamBuffer" ]
[ "services" "snapserver" "settings" "stream" "chunk_ms" ]
[ "services" "snapserver" "settings" "tcp-streaming" "chunk_ms" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "buffer" ]
[ "services" "snapserver" "settings" "stream" "buffer" ]
[ "services" "snapserver" "settings" "tcp-streaming" "buffer" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "send" ]
[ "services" "snapserver" "settings" "stream" "chunk_ms" ]
[ "services" "snapserver" "settings" "tcp-streaming" "chunk_ms" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "controlPort" ]
[ "services" "snapserver" "settings" "tcp-control" "port" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "tcp" "enable" ]
[ "services" "snapserver" "settings" "tcp" "enabled" ]
[ "services" "snapserver" "settings" "tcp-control" "enabled" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "tcp" "listenAddress" ]
[ "services" "snapserver" "settings" "tcp" "bind_to_address" ]
[ "services" "snapserver" "settings" "tcp-control" "bind_to_address" ]
)
(mkRenamedOptionModule
[ "services" "snapserver" "tcp" "port" ]
[ "services" "snapserver" "settings" "tcp" "port" ]
[ "services" "snapserver" "settings" "tcp-control" "port" ]
)
(mkRenamedOptionModule
@@ -121,6 +120,20 @@ in
freeformType = format.type;
options = {
stream = {
source = mkOption {
type = with types; either str (listOf str);
example = "pipe:///tmp/snapfifo?name=default";
description = ''
One or multiple URIs to PCM input streams.
'';
};
};
tcp-streaming = {
enabled = mkEnableOption "streaming via TCP" // {
default = true;
};
bind_to_address = mkOption {
default = "::";
description = ''
@@ -135,17 +148,9 @@ in
Port to listen on for snapclient connections.
'';
};
source = mkOption {
type = with types; either str (listOf str);
example = "pipe:///tmp/snapfifo?name=default";
description = ''
One or multiple URIs to PCM inpuit streams.
'';
};
};
tcp = {
tcp-control = {
enabled = mkEnableOption "the TCP JSON-RPC";
bind_to_address = mkOption {
@@ -245,8 +250,10 @@ in
};
networking.firewall.allowedTCPPorts =
lib.optionals cfg.openFirewall [ cfg.settings.stream.port ]
++ lib.optional (cfg.openFirewall && cfg.settings.tcp.enabled) cfg.settings.tcp.port
lib.optionals (cfg.openFirewall && cfg.settings.tcp-streaming.enabled) [
cfg.settings.tcp-streaming.port
]
++ lib.optional (cfg.openFirewall && cfg.settings.tcp-control.enabled) cfg.settings.tcp-control.port
++ lib.optional (cfg.openFirewall && cfg.settings.http.enabled) cfg.settings.http.port;
};
@@ -43,6 +43,8 @@ in
enable = mkEnableOption "contractor, a desktop-wide extension service used by Pantheon";
};
parental-controls.enable = mkEnableOption "Pantheon parental controls daemon";
apps.enable = mkEnableOption "Pantheon default applications";
};
@@ -162,6 +164,7 @@ in
];
services.pantheon.apps.enable = mkDefault true;
services.pantheon.contractor.enable = mkDefault true;
services.pantheon.parental-controls.enable = mkDefault true;
services.gnome.at-spi2-core.enable = true;
services.gnome.evolution-data-server.enable = true;
services.gnome.glib-networking.enable = true;
@@ -360,5 +363,14 @@ in
];
})
(mkIf serviceCfg.parental-controls.enable {
services.malcontent.enable = mkDefault true;
environment.systemPackages = [ pkgs.pantheon.switchboard-plug-parental-controls ];
services.dbus.packages = [ pkgs.pantheon.switchboard-plug-parental-controls ];
systemd.packages = [ pkgs.pantheon.switchboard-plug-parental-controls ];
})
];
}
@@ -0,0 +1,57 @@
# Meshtasticd {#module-services-meshtasticd}
[Meshtasticd](https://meshtastic.org/) daemon.
Meshtastic is an open-source, off-grid, decentralised mesh network designed to
run on affordable, low-power devices.
Meshtastic is a project that enables you to use inexpensive LoRa radios as a
long range off-grid communication platform in areas without existing or reliable
communications infrastructure. This project is 100% community driven and open
source!
## Quickstart {#module-services-meshtasticd-quickstart}
A minimal configuration:
```nix
{
services.meshtasticd = {
enable = true;
port = 4403;
settings = {
Lora = {
Module = "auto";
};
Webserver = {
Port = 9443;
RootPath = pkgs.meshtastic-web;
};
General = {
MaxNodes = 200;
MaxMessageQueue = 100;
MACAddressSource = "eth0";
};
};
};
}
```
By default Meshtasticd listens on all network interfaces. The example above
binds the daemon to port `4403` and the web UI to `9443`. This module
intentionally does not configure an reverse proxy for you, keeping the module
focused on the Meshtastic service itself. If you need to restrict access, use
firewall rules or put the web UI behind a reverse proxy (e.g.: Caddy, Nginx)
that binds to `127.0.0.1` and exposes only the proxy. This approach leaves proxy
choice and TLS configuration to the operator while documenting how to securely
expose the web UI when required.
## Configuration {#module-services-meshtasticd-config}
All available configuration directives are documented in the
[standard Meshtastic configuration file](https://github.com/meshtastic/firmware/blob/develop/bin/config-dist.yaml).
The service uses a dedicated user and group account (`meshtasticd`) by default.
If you override the service user, ensure it is a member of the `spi` and `gpio`
groups so it can access the required hardware devices, as mandated by
Meshtastics default `udev` rules.
@@ -0,0 +1,124 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.meshtasticd;
format = pkgs.formats.yaml { };
configFile = format.generate "config.yaml" cfg.settings;
in
{
options.services.meshtasticd = {
enable = lib.mkEnableOption "Meshtastic daemon";
package = lib.mkPackageOption pkgs "meshtasticd" { };
user = lib.mkOption {
default = "meshtasticd";
description = "User meshtasticd runs as.";
type = lib.types.str;
};
group = lib.mkOption {
default = "meshtasticd";
description = "Group meshtasticd runs as.";
type = lib.types.str;
};
port = lib.mkOption {
type = lib.types.port;
default = 4403;
description = "Port to listen on";
};
settings = lib.mkOption {
type = format.type;
example = lib.literalExpression ''
Lora = {
Module = "auto";
};
Webserver = {
Port = 9443;
RootPath = pkgs.meshtastic-web;
};
General = {
MaxNodes = 200;
MaxMessageQueue = 100;
MACAddressSource = "eth0";
};
'';
description = ''
The Meshtastic configuration file.
An example of configuration can be found at <https://github.com/meshtastic/firmware/blob/develop/bin/config-dist.yaml>
'';
};
dataDir = lib.mkOption {
default = "/var/lib/meshtasticd";
type = lib.types.path;
description = ''
The data directory.
'';
};
};
config = lib.mkIf cfg.enable {
# Creation of the `meshtasticd` privilege user.
users = {
users = lib.mkIf (cfg.user == "meshtasticd") {
meshtasticd = {
home = cfg.dataDir;
description = "meshtasticd-daemon privilege user";
group = cfg.group;
isSystemUser = true;
extraGroups = [
"spi"
"gpio"
];
};
};
groups = lib.mkIf (cfg.group == "meshtasticd") {
meshtasticd = { };
# These groups are required for udev rules to work properly.
spi = { };
gpio = { };
};
};
# The `meshtasticd` package provides udev rules.
services.udev.packages = [
cfg.package
];
# Creation of the `meshtasticd` service.
# Based on the official meshtasticd service file: https://github.com/meshtastic/firmware/blob/develop/bin/meshtasticd.service
systemd.services.meshtasticd = {
description = "Meshtastic Native Daemon";
after = [
"network-online.target"
"network.target"
];
wants = [
"network-online.target"
"network.target"
];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
User = cfg.user;
Group = cfg.group;
Type = "simple";
StateDirectory = "meshtasticd";
AmbientCapabilities = [
"CAP_NET_BIND_SERVICE"
];
ExecStart = "${lib.getExe cfg.package} --port=${builtins.toString cfg.port} --fsdir=${cfg.dataDir} --config=${configFile} --verbose";
Restart = "always";
RestartSec = "3";
};
};
};
}
@@ -282,6 +282,11 @@ in
account include login
password substack login
session include login
''
# https://github.com/elementary/switchboard-plug-parental-controls/blob/8.0.1/src/daemon/Server.vala#L325
# Must specify conffile since pam_time defaults to ${linux-pam}/etc/security/time.conf.
+ lib.optionalString config.services.pantheon.parental-controls.enable ''
account required pam_time.so conffile=/etc/security/time.conf
'';
security.pam.services.lightdm-greeter.text = ''
@@ -222,7 +222,7 @@ def write_entry(profile: str | None, generation: int, specialisation: str | None
if machine_id is not None:
f.write("machine-id %s\n" % machine_id)
if devicetree is not None:
f.write("devicetree %s\n" % devicetree)
f.write(f"devicetree /{devicetree}\n")
f.flush()
os.fsync(f.fileno())
tmp_path.rename(entry_file)
+1
View File
@@ -941,6 +941,7 @@ in
meilisearch = runTest ./meilisearch.nix;
memcached = runTest ./memcached.nix;
merecat = runTest ./merecat.nix;
meshtasticd = runTest ./networking/meshtasticd.nix;
metabase = runTest ./metabase.nix;
mihomo = runTest ./mihomo.nix;
mimir = runTest ./mimir.nix;
+45
View File
@@ -0,0 +1,45 @@
{
lib,
pkgs,
...
}:
let
mainPort = 9445;
webPort = 9446;
in
{
name = "meshtasticd";
meta.maintainers = [ lib.maintainers.drupol ];
nodes.machine = {
services.meshtasticd = {
enable = true;
port = mainPort;
settings = {
Lora = {
Module = "sim";
DIO2_AS_RF_SWITCH = false;
spiSpeed = "2000000";
};
Webserver = {
Port = webPort;
RootPath = pkgs.meshtastic-web;
};
General = {
MaxNodes = 200;
MaxMessageQueue = 100;
MACAddressSource = "eth0";
};
};
};
};
testScript = ''
with subtest("Test meshtasticd service"):
machine.wait_for_unit("meshtasticd.service")
machine.wait_for_open_port(${builtins.toString mainPort})
machine.wait_for_open_port(${builtins.toString webPort})
machine.succeed("curl -fvvv -Ls http://localhost:${builtins.toString webPort} | grep -q 'Meshtastic Web Client'")
'';
}
+8 -3
View File
@@ -23,7 +23,6 @@ in
enable = true;
settings = {
stream = {
port = port;
source = [
"pipe:///run/snapserver/mpd?name=mpd&mode=create"
"pipe:///run/snapserver/bluetooth?name=bluetooth"
@@ -32,7 +31,11 @@ in
];
buffer = bufferSize;
};
tcp = {
tcp-streaming = {
enabled = true;
port = port;
};
tcp-control = {
enabled = true;
port = tcpPort;
};
@@ -76,6 +79,8 @@ in
)
with subtest("test a ipv6 connection"):
# URI scheme does not support IPv6 literals
# https://github.com/snapcast/snapcast/issues/1472
server.execute("systemd-run --unit=snapcast-local-client snapclient -h ::1 -p ${toString port}")
server.wait_until_succeeds(
"journalctl -o cat -u snapserver.service | grep -q 'Hello from'"
@@ -83,7 +88,7 @@ in
server.wait_until_succeeds("journalctl -o cat -u snapcast-local-client | grep -q 'buffer: ${toString bufferSize}'")
with subtest("test a connection"):
client.execute("systemd-run --unit=snapcast-client snapclient -h server -p ${toString port}")
client.execute("systemd-run --unit=snapcast-client snapclient 'tcp://server:${toString port}'")
server.wait_until_succeeds(
"journalctl -o cat -u snapserver.service | grep -q 'Hello from'"
)
@@ -24,8 +24,8 @@ let
sha256Hash = "sha256-ciu+To5Kcus8FPDz1D43AD+qOqfPHaW4JsEBr9fx2PE=";
};
latestVersion = {
version = "2025.2.3.3"; # "Android Studio Otter 3 Feature Drop | 2025.2.3 Canary 3"
sha256Hash = "sha256-cU6EFqmM1GsaWdGE1sbR/9eHXiYXKYV/m1/H0a+A1Bw=";
version = "2025.2.3.4"; # "Android Studio Otter 3 Feature Drop | 2025.2.3 Canary 4"
sha256Hash = "sha256-Oi+sGK8d7ms/BYt7F9xwEFGPdQUEHhfdclKQi9vAxgU=";
};
in
{
@@ -2808,8 +2808,8 @@ let
mktplcRef = {
name = "vscord";
publisher = "leonardssh";
version = "5.3.5";
hash = "sha256-b5osn7UeSkr8gnLZ/PkrxS0WmgHUwfS0jnwTc1Uw0Sg=";
version = "5.3.8";
hash = "sha256-tqyhu6pa+UFwCYpS3xioeSw4oET0TFfQmJ8hsSz3q/k=";
};
meta = {
description = "Highly customizable Discord Rich Presence extension for Visual Studio Code";
+3 -3
View File
@@ -19,13 +19,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "cherry-studio";
version = "1.7.1";
version = "1.7.2";
src = fetchFromGitHub {
owner = "CherryHQ";
repo = "cherry-studio";
tag = "v${finalAttrs.version}";
hash = "sha256-A+J00wHJyCrxZSG80FKHw/c9EUfJP53v0KLjE9Jgmp8=";
hash = "sha256-Y60SW97584LTZXD4tJbr3Sv/6etKtTjr+3xfYBvKDWY=";
};
postPatch = ''
@@ -42,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: {
offlineCache = yarn-berry.fetchYarnBerryDeps {
inherit (finalAttrs) src missingHashes;
hash = "sha256-UZm0XJ/pjfADETd6sFoMCRB0axod3WybVW+RcPuX8ms=";
hash = "sha256-KggPuCeezgXhfMctR6NndTwvsNq9StQNAXVEOWLMt50=";
};
nativeBuildInputs = [
+6 -3
View File
@@ -9,13 +9,13 @@
stdenvNoCC.mkDerivation rec {
pname = "cloudlog";
version = "2.7.6";
version = "2.8.1";
src = fetchFromGitHub {
owner = "magicbug";
repo = "Cloudlog";
rev = version;
hash = "sha256-p9PmWRKvKGGZrexZJwYtb+LYto9npZ606QVo4pvDBak=";
hash = "sha256-F8iEs7pQmdzQFajg+auA9cAvVzeL7fE1Zk/xXXO7xOQ=";
};
postPatch = ''
@@ -40,6 +40,9 @@ stdenvNoCC.mkDerivation rec {
license = lib.licenses.mit;
homepage = "https://www.magicbug.co.uk/cloudlog";
platforms = php.meta.platforms;
maintainers = with lib.maintainers; [ melling ];
maintainers = with lib.maintainers; [
melling
haennetz
];
};
}
+8 -12
View File
@@ -4,7 +4,7 @@
doxygen,
example-robot-data,
fetchFromGitHub,
fetchpatch,
ffmpeg,
ipopt,
lapack,
lib,
@@ -15,24 +15,15 @@
stdenv.mkDerivation (finalAttrs: {
pname = "crocoddyl";
version = "3.1.0";
version = "3.2.0";
src = fetchFromGitHub {
owner = "loco-3d";
repo = "crocoddyl";
tag = "v${finalAttrs.version}";
hash = "sha256-m7UiCa8ydjsAIhsFiShTi3/JaKgq2TCQ1XYAMyTNg1U=";
hash = "sha256-EYvakM81Ot/AtXElJbcQNo7IydBtRgy+8a0cY06CzQ8=";
};
patches = [
# ref. https://github.com/loco-3d/crocoddyl/pull/1440 merged upstream
(fetchpatch {
name = "add-missing-include.patch";
url = "https://github.com/loco-3d/crocoddyl/commit/6994bea7bb3ae6027f5b611ef1635768538150fd.patch";
hash = "sha256-XbQKRWpWm5Rk4figoA2swId4Pz2xKDpU4NFP46p8WO0=";
})
];
outputs = [
"out"
"doc"
@@ -54,6 +45,10 @@ stdenv.mkDerivation (finalAttrs: {
pinocchio
];
checkInputs = [
ffmpeg
];
cmakeFlags = [
(lib.cmakeBool "INSTALL_DOCUMENTATION" true)
(lib.cmakeBool "BUILD_EXAMPLES" false)
@@ -72,6 +67,7 @@ stdenv.mkDerivation (finalAttrs: {
meta = {
description = "Crocoddyl optimal control library";
homepage = "https://github.com/loco-3d/crocoddyl";
changelog = "https://github.com/loco-3d/crocoddyl/blob/devel/CHANGELOG.md";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [
nim65s
+2 -15
View File
@@ -21,21 +21,8 @@ buildGoModule rec {
nativeBuildInputs = [ installShellFiles ];
# required for TestHTTPHandlerReadWrite and other tests
__darwinAllowLocalNetworking = true;
checkFlags =
let
skippedTests = [
"TestMountIndex" # FUSE does not work in sandbox
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# sendfile is not permitted in Darwin sandbox
"TestS3StoreGetChunk/fail"
"TestS3StoreGetChunk/recover"
];
in
[ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ];
# nix builder doesn't have access to test data; tests fail for reasons unrelated to binary being bad.
doCheck = false;
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd desync \
+2 -2
View File
@@ -28,14 +28,14 @@
stdenv.mkDerivation (finalAttrs: {
pname = "eloquent";
version = "1.3";
version = "1.4";
src = fetchFromGitHub {
owner = "sonnyp";
repo = "Eloquent";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-+XAiRB5dRq2A2XP9ZdmIfxLjhCXb72TXRxnLnOprNT4=";
hash = "sha256-wY/blD399GhEOdnQf/uVLHSmYUZTO1ZnL6+oOAhVqFA=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -7,18 +7,18 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "emmylua_check";
version = "0.17.0";
version = "0.18.0";
src = fetchFromGitHub {
owner = "EmmyLuaLs";
repo = "emmylua-analyzer-rust";
tag = finalAttrs.version;
hash = "sha256-CAYSaRjpQwnPZojeX/VyV9/xz8SY8Lt+e1wc79qvGZg=";
hash = "sha256-JXe+I0CViJAXOnWzilYpjWquYFzZGIP5y6HS6KosYPU=";
};
buildAndTestSubdir = "crates/emmylua_check";
cargoHash = "sha256-nGSN7LqvAwYg2Z+2tTAc+vIwrYmb+W0OLw9EeG7e/V8=";
cargoHash = "sha256-UVuXeGmSvAwHs/U0s/mByiZCwa2refz1l8eJvcCoagk=";
nativeInstallCheckInputs = [
versionCheckHook
+32 -7
View File
@@ -1,24 +1,31 @@
{
lib,
python3,
python3Packages,
fetchFromGitHub,
exabgp,
testers,
}:
python3.pkgs.buildPythonApplication rec {
python3Packages.buildPythonApplication rec {
pname = "exabgp";
version = "4.2.25";
format = "pyproject";
version = "5.0.1";
pyproject = true;
src = fetchFromGitHub {
owner = "Exa-Networks";
repo = "exabgp";
tag = version;
hash = "sha256-YBxRDcm4Qt44W3lBHDwdvZq2pXEujbqJDh24JbXthMg=";
hash = "sha256-UFo92jS/QmwTUEAhxQnbtY9K905jiBrJujfqGIUCUOg=";
};
nativeBuildInputs = with python3.pkgs; [
postPatch = ''
# https://github.com/Exa-Networks/exabgp/pull/1344
substituteInPlace src/exabgp/application/healthcheck.py --replace-fail \
"f'/sbin/ip -o address show dev {ifname}'.split()" \
'["ip", "-o", "address", "show", "dev", ifname]'
'';
build-system = with python3Packages; [
setuptools
];
@@ -26,13 +33,31 @@ python3.pkgs.buildPythonApplication rec {
"exabgp"
];
nativeCheckInputs = with python3.pkgs; [
nativeCheckInputs = with python3Packages; [
hypothesis
psutil
pytest-asyncio
pytest-benchmark
pytest-timeout
pytest-xdist
pytestCheckHook
];
__darwinAllowLocalNetworking = true;
pytestFlags = [ "--benchmark-disable" ];
enabledTests = [ "tests" ];
disabledTests = [
# AssertionError: Server should receive connection
"test_outgoing_connection_establishment"
];
passthru.tests = {
version = testers.testVersion {
package = exabgp;
command = "exabgp version";
};
};
+2 -2
View File
@@ -31,13 +31,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "flaresolverr";
version = "3.4.3";
version = "3.4.6";
src = fetchFromGitHub {
owner = "FlareSolverr";
repo = "FlareSolverr";
rev = "v${finalAttrs.version}";
hash = "sha256-5insO3XfIN9vGuPIeVBcLhsYPCO29mR41MFtIy8jeXE=";
hash = "sha256-DeFp76VwMGBAWOsI3S3jm1qNbPw554zJZfE7hotUedY=";
};
nativeBuildInputs = [ makeWrapper ];
+22 -22
View File
@@ -1,7 +1,7 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (7.2.2.1)
activesupport (7.2.3)
base64
benchmark (>= 0.3)
bigdecimal
@@ -13,14 +13,14 @@ GEM
minitest (>= 5.1)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
base64 (0.2.0)
benchmark (0.4.0)
bigdecimal (3.1.9)
base64 (0.3.0)
benchmark (0.5.0)
bigdecimal (3.3.1)
concurrent-ruby (1.3.5)
connection_pool (2.5.0)
connection_pool (2.5.5)
dalli (3.2.8)
date (3.4.1)
drb (2.2.1)
date (3.5.0)
drb (2.2.3)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
@@ -34,10 +34,10 @@ GEM
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-em_synchrony (1.0.1)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.1.0)
faraday-multipart (1.1.1)
multipart-post (~> 2.0)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
@@ -62,26 +62,26 @@ GEM
thor (~> 1.0)
i18n (1.14.7)
concurrent-ruby (~> 1.0)
logger (1.6.6)
logger (1.7.0)
lru_redux (1.1.0)
mini_portile2 (2.8.8)
minitest (5.25.5)
mini_portile2 (2.8.9)
minitest (5.26.2)
multipart-post (2.4.1)
mustermann (3.0.3)
mustermann (3.0.4)
ruby2_keywords (~> 0.0.1)
nio4r (2.7.4)
psych (5.2.3)
nio4r (2.7.5)
psych (5.2.6)
date
stringio
puma (6.6.0)
puma (6.6.1)
nio4r (~> 2.0)
rack (2.2.13)
rack (2.2.21)
rack-protection (3.2.0)
base64 (>= 0.1.0)
rack (~> 2.2, >= 2.2.4)
ruby2_keywords (0.0.5)
securerandom (0.4.1)
sequel (5.90.0)
sequel (5.98.0)
bigdecimal
server_health_check (1.0.2)
server_health_check-rack (0.1.0)
@@ -93,11 +93,11 @@ GEM
tilt (~> 2.0)
sqlite3 (1.7.3)
mini_portile2 (~> 2.8.0)
stringio (3.1.5)
stringio (3.1.8)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
thor (1.3.2)
tilt (2.6.0)
thor (1.4.0)
tilt (2.6.1)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (2.6.0)
@@ -109,4 +109,4 @@ DEPENDENCIES
gemstash
BUNDLED WITH
2.6.2
2.7.2
+42 -42
View File
@@ -17,40 +17,40 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1xa7hr4gp2p86ly6n1j2skyx8pfg6yi621kmnh7zhxr9m7wcnaw4";
sha256 = "043vbilaw855c91n5l7g0k0wxj63kngj911685qy74xc1mvwjxan";
type = "gem";
};
version = "7.2.2.1";
version = "7.2.3";
};
base64 = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g";
sha256 = "0yx9yn47a8lkfcjmigk79fykxvr80r4m1i35q82sxzynpbm7lcr7";
type = "gem";
};
version = "0.2.0";
version = "0.3.0";
};
benchmark = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg";
sha256 = "0v1337j39w1z7x9zs4q7ag0nfv4vs4xlsjx2la0wpv8s6hig2pa6";
type = "gem";
};
version = "0.4.0";
version = "0.5.0";
};
bigdecimal = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1k6qzammv9r6b2cw3siasaik18i6wjc5m0gw5nfdc6jj64h79z1g";
sha256 = "0612spks81fvpv2zrrv3371lbs6mwd7w6g5zafglyk75ici1x87a";
type = "gem";
};
version = "3.1.9";
version = "3.3.1";
};
concurrent-ruby = {
groups = [ "default" ];
@@ -67,10 +67,10 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1z7bag6zb2vwi7wp2bkdkmk7swkj6zfnbsnc949qq0wfsgw94fr3";
sha256 = "1b8nlxr5z843ii7hfk6igpr5acw3k2ih9yjrgkyz2gbmallgjkz5";
type = "gem";
};
version = "2.5.0";
version = "2.5.5";
};
dalli = {
groups = [ "default" ];
@@ -87,20 +87,20 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0kz6mc4b9m49iaans6cbx031j9y7ldghpi5fzsdh0n3ixwa8w9mz";
sha256 = "1rbfqkzr6i8b6538z16chvrkgywf5p5vafsgmnbmvrmh0ingsx2y";
type = "gem";
};
version = "3.4.1";
version = "3.5.0";
};
drb = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0h5kbj9hvg5hb3c7l425zpds0vb42phvln2knab8nmazg2zp5m79";
sha256 = "0wrkl7yiix268s2md1h6wh91311w95ikd8fy8m5gx589npyxc00b";
type = "gem";
};
version = "2.2.1";
version = "2.2.3";
};
faraday = {
dependencies = [
@@ -140,10 +140,10 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1vgrbhkp83sngv6k4mii9f2s9v5lmp693hylfxp2ssfc60fas3a6";
sha256 = "0l0pz1wk2mk6p6hbfd86jfad59jyk201y1db379qhc2lrxfy8g5z";
type = "gem";
};
version = "1.0.0";
version = "1.0.1";
};
faraday-excon = {
groups = [ "default" ];
@@ -171,10 +171,10 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0l87r9jg06nsh24gwwd1jdnxb1zq89ffybnxab0dd90nfcf0ysw5";
sha256 = "00w9imp55hi81q0wsgwak90ldkk7gbyb8nzmmv8hy0s907s8z8bp";
type = "gem";
};
version = "1.1.0";
version = "1.1.1";
};
faraday-net_http = {
groups = [ "default" ];
@@ -278,10 +278,10 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "05s008w9vy7is3njblmavrbdzyrwwc1fsziffdr58w9pwqj8sqfx";
sha256 = "00q2zznygpbls8asz5knjvvj2brr3ghmqxgr83xnrdj4rk3xwvhr";
type = "gem";
};
version = "1.6.6";
version = "1.7.0";
};
lru_redux = {
groups = [ "default" ];
@@ -298,20 +298,20 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0x8asxl83msn815lwmb2d7q5p29p7drhjv5va0byhk60v9n16iwf";
sha256 = "12f2830x7pq3kj0v8nz0zjvaw02sv01bqs1zwdrc04704kwcgmqc";
type = "gem";
};
version = "2.8.8";
version = "2.8.9";
};
minitest = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0mn7q9yzrwinvfvkyjiz548a4rmcwbmz2fn9nyzh4j1snin6q6rr";
sha256 = "1qyda32pf9jivaw2m7yymxshqxxd0fhjn7zpbagvmfc5c65128gh";
type = "gem";
};
version = "5.25.5";
version = "5.26.2";
};
multipart-post = {
groups = [ "default" ];
@@ -329,20 +329,20 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "123ycmq6pkivv29bqbv79jv2cs04xakzd0fz1lalgvfs5nxfky6i";
sha256 = "08ma2fmxlm6i7lih4mc3har2fzsbj1pl4hhva65kljf6nfvdryl5";
type = "gem";
};
version = "3.0.3";
version = "3.0.4";
};
nio4r = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1a9www524fl1ykspznz54i0phfqya4x45hqaz67in9dvw1lfwpfr";
sha256 = "18fwy5yqnvgixq3cn0h63lm8jaxsjjxkmj8rhiv8wpzv9271d43c";
type = "gem";
};
version = "2.7.4";
version = "2.7.5";
};
psych = {
dependencies = [
@@ -353,10 +353,10 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1vjrx3yd596zzi42dcaq5xw7hil1921r769dlbz08iniaawlp9c4";
sha256 = "0vii1xc7x81hicdbp7dlllhmbw5w3jy20shj696n0vfbbnm2hhw1";
type = "gem";
};
version = "5.2.3";
version = "5.2.6";
};
puma = {
dependencies = [ "nio4r" ];
@@ -364,20 +364,20 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "11xd3207k5rl6bz0qxhcb3zcr941rhx7ig2f19gxxmdk7s3hcp7j";
sha256 = "07pajhv7pqz82kcjc6017y4d0hwz5kp746cydpx1npd79r56xddr";
type = "gem";
};
version = "6.6.0";
version = "6.6.1";
};
rack = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1yzhcwvfkrlb8l79w24yjclv636jn6rnznp95shmssk934bi1vnc";
sha256 = "0fgpa9qm5qgza69fjnagg2alxs2wmj41aq7z4kj5yib50wpzgqhl";
type = "gem";
};
version = "2.2.13";
version = "2.2.21";
};
rack-protection = {
dependencies = [
@@ -419,10 +419,10 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1s5qhylirrmfbjhdjdfqaiksjlaqmgixl25sxd8znq8dqwqlrydz";
sha256 = "0irbjils48r7w14jacka3l96jzh534d98vb88yj1qc9nl43r3r2g";
type = "gem";
};
version = "5.90.0";
version = "5.98.0";
};
server_health_check = {
groups = [ "default" ];
@@ -477,10 +477,10 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1j1mgvrgkxhadi6nb6pz1kcff7gsb5aivj1vfhsia4ssa5hj9adw";
sha256 = "1v74k5yw7ndikr53wgbjn6j51p83qnzqbn9z4b53r102jcx3ri4r";
type = "gem";
};
version = "3.1.5";
version = "3.1.8";
};
terminal-table = {
dependencies = [ "unicode-display_width" ];
@@ -498,20 +498,20 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1nmymd86a0vb39pzj2cwv57avdrl6pl3lf5bsz58q594kqxjkw7f";
sha256 = "0gcarlmpfbmqnjvwfz44gdjhcmm634di7plcx2zdgwdhrhifhqw7";
type = "gem";
};
version = "1.3.2";
version = "1.4.0";
};
tilt = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0szpapi229v3scrvw1pgy0vpjm7z3qlf58m1198kxn70cs278g96";
sha256 = "0w27v04d7rnxjr3f65w1m7xyvr6ch6szjj2v5wv1wz6z5ax9pa9m";
type = "gem";
};
version = "2.6.0";
version = "2.6.1";
};
tzinfo = {
dependencies = [ "concurrent-ruby" ];
+2 -2
View File
@@ -6,10 +6,10 @@
}:
let
pname = "hydralauncher";
version = "3.7.5";
version = "3.7.6";
src = fetchurl {
url = "https://github.com/hydralauncher/hydra/releases/download/v${version}/hydralauncher-${version}.AppImage";
hash = "sha256-wYhkuDA+Fxj4blVBw670UQ3uAvBfM5suWq5LOixI9Ps=";
hash = "sha256-6ERgFwJkRZH1Cj6ucswLU0EpwmjDE0gcmFYm5JbLuK0=";
};
appimageContents = appimageTools.extractType2 { inherit pname src version; };
@@ -0,0 +1,41 @@
{
stdenv,
lib,
fetchurl,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "meshtastic-web";
version = "2.6.7";
src = fetchurl {
url = "https://github.com/meshtastic/web/releases/download/v${finalAttrs.version}/build.tar";
hash = "sha256-o09DYKBIZUOmmN4g3lM1V0kudjq0Wfwn/OqV0ElRRO0=";
};
sourceRoot = ".";
buildPhase = ''
runHook preBuild
gzip -dr .
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -ar . $out/
runHook postInstall
'';
meta = {
description = "Meshtastic Web Client/JS Monorepo";
homepage = "https://github.com/meshtastic/web";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ drupol ];
};
})
+7
View File
@@ -0,0 +1,7 @@
{ lib, python3Packages }:
python3Packages.toPythonApplication (
python3Packages.meshtastic.overridePythonAttrs (prev: {
dependencies = prev.dependencies ++ lib.concatAttrValues prev.optional-dependencies;
})
)
+118 -32
View File
@@ -1,9 +1,13 @@
{
lib,
stdenv,
fetchurl,
autoPatchelfHook,
dpkg,
lib,
fetchFromGitHub,
fetchzip,
libarchive,
pkg-config,
platformio-core,
writableTmpDirAsHomeHook,
bluez,
i2c-tools,
libX11,
libgpiod_1,
@@ -11,65 +15,146 @@
libusb1,
libuv,
libxkbcommon,
udevCheckHook,
ulfius,
openssl,
gnutls,
jansson,
zlib,
libmicrohttpd,
orcania,
yder,
yaml-cpp,
udevCheckHook,
versionCheckHook,
makeBinaryWrapper,
python3Packages,
enableDefaultConfig ? false,
meshtastic-web, # Only used when `enableDefaultConfig` is set to `true`.
nixosTests,
}:
assert builtins.isBool enableDefaultConfig;
let
version = "2.7.16.a597230";
platformio-deps-native = fetchzip {
url = "https://github.com/meshtastic/firmware/releases/download/v${version}/platformio-deps-native-tft-${version}.zip";
hash = "sha256-Jo7e6zsCaiJs6NyIRmD6BWJFwbs0xVlUih206ePUpwk=";
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "meshtasticd";
version = "2.6.11.25";
inherit version;
src = fetchurl {
url = "https://download.opensuse.org/repositories/network:/Meshtastic:/beta/Debian_12/amd64/meshtasticd_${finalAttrs.version}~obs60ec05e~beta_amd64.deb";
hash = "sha256-7JCv+1YgsCLwboGE/2f+8iyLLoUsKn3YdJ9Atnfj7Zw=";
src = fetchFromGitHub {
owner = "meshtastic";
repo = "firmware";
hash = "sha256-oU3Z8qjBNeNGPGT74VStAPHgsGqsQJKngHJR6m2CBa0=";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
};
nativeBuildInputs = [
autoPatchelfHook
dpkg
];
dontConfigure = true;
dontBuild = true;
strictDeps = true;
nativeBuildInputs = [
libarchive
pkg-config
# This has been advised by the Meshtastic's developer.
# Without it, it will try to install grpcio-tools by itself and fail.
(platformio-core.overridePythonAttrs (oldAttrs: {
dependencies = oldAttrs.dependencies ++ [
python3Packages.grpcio-tools
];
}))
writableTmpDirAsHomeHook
makeBinaryWrapper
];
buildInputs = [
bluez
gnutls
i2c-tools
jansson
libX11
libgpiod_1
libinput
libmicrohttpd
libusb1
libuv
libxkbcommon
openssl
orcania
ulfius
yaml-cpp
yder
zlib
];
autoPatchelfIgnoreMissingDeps = [
"libyaml-cpp.so.0.7"
];
preConfigure = ''
mkdir -p platformio-deps-native
cp -ar ${platformio-deps-native}/. platformio-deps-native
chmod +w -R platformio-deps-native
export PLATFORMIO_CORE_DIR=platformio-deps-native/core
export PLATFORMIO_LIBDEPS_DIR=platformio-deps-native/libdeps
export PLATFORMIO_PACKAGES_DIR=platformio-deps-native/packages
'';
buildPhase = ''
runHook preBuild
platformio run --environment native-tft
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p {$out,$out/bin}
cp -r {usr,lib} $out/
install -d $out/share/meshtasticd/config.d
install -d $out/share/meshtasticd/available.d
cp -R bin/config.d/* $out/share/meshtasticd/available.d
patchelf --replace-needed libyaml-cpp.so.0.7 libyaml-cpp.so.0.8 $out/usr/bin/meshtasticd
install -Dm644 bin/org.meshtastic.meshtasticd.svg -t $out/share/icons/hicolor/scalable/apps/
install -Dm644 bin/org.meshtastic.meshtasticd.desktop -t $out/share/applications/
install -Dm755 .pio/build/native-tft/program $out/bin/meshtasticd
ln -s $out/usr/bin/meshtasticd $out/bin/meshtasticd
substituteInPlace $out/lib/systemd/system/meshtasticd.service \
--replace-fail "/usr/bin/meshtasticd" "$out/bin/meshtasticd" \
--replace-fail 'User=meshtasticd' 'DynamicUser=yes' \
--replace-fail 'Group=meshtasticd' ""
install -Dm644 bin/99-meshtasticd-udev.rules -t $out/etc/udev/rules.d
''
+ lib.optionalString enableDefaultConfig ''
install -Dm644 bin/config-dist.yaml $out/share/meshtasticd/config.yaml
substituteInPlace $out/share/meshtasticd/config.yaml \
--replace-fail "/etc/meshtasticd/config.d" "$out/share/meshtasticd/config.d" \
--replace-fail "/etc/meshtasticd/available.d" "$out/share/meshtasticd/available.d"
wrapProgram $out/bin/meshtasticd \
--add-flags "-c $out/share/meshtasticd/config.yaml"
install -Dm644 bin/config.d/MUI/X11_480x480.yaml $out/share/meshtasticd/config.d/MUI.yaml
substituteInPlace $out/share/meshtasticd/config.yaml \
--replace-fail "/usr/share/meshtasticd/web" "${meshtastic-web}"
install -d $out/share/meshtasticd/maps
for file in pio/libdeps/native-tft/meshtastic-device-ui/maps/*.zip; do
bsdtar -xf "$file" --no-same-owner --strip-components=1 -C $out/share/meshtasticd/maps;
done
''
+ ''
runHook postInstall
'';
doInstallCheck = true;
nativeInstallCheckInputs = [ udevCheckHook ];
nativeInstallCheckInputs = [
udevCheckHook
versionCheckHook
];
versionCheckProgramArg = "--version";
preVersionCheck = ''
version="${lib.versions.major finalAttrs.version}.${lib.versions.minor finalAttrs.version}.${lib.versions.patch finalAttrs.version}"
'';
passthru.tests = {
inherit (nixosTests) meshtasticd;
};
meta = {
description = "Meshtastic daemon for communicating with Meshtastic devices";
@@ -77,12 +162,13 @@ stdenv.mkDerivation (finalAttrs: {
This package has `udev` rules installed as part of the package.
Add `services.udev.packages = [ pkgs.meshtasticd ]` into your NixOS
configuration to enable them.
To enable the default configuration, set the `enableDefaultConfig` parameter to true.
'';
homepage = "https://github.com/meshtastic/firmware";
mainProgram = "meshtasticd";
license = lib.licenses.gpl3Plus;
platforms = [ "x86_64-linux" ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ drupol ];
};
})
+2 -2
View File
@@ -12,14 +12,14 @@
}:
python3Packages.buildPythonApplication rec {
pname = "monophony";
version = "4.2.0";
version = "4.2.1";
pyproject = true;
src = fetchFromGitLab {
owner = "zehkira";
repo = "monophony";
tag = "v${version}";
hash = "sha256-SrRWMbI+seA7LlOU6dxlbhRKM8Ufa3KLo1tjeCtBWEY=";
hash = "sha256-3RuAFg+9Mi+tBuLmXyWlFFNOfrUvrkNvedo9Au3tMYU=";
};
sourceRoot = "${src.name}/source";
+2 -2
View File
@@ -1,6 +1,6 @@
source 'https://rubygems.org'
gem 'oxidized', '0.34.3'
gem 'oxidized-web', '0.17.1'
gem 'oxidized', '0.35.0'
gem 'oxidized-web', '0.18.0'
gem 'oxidized-script', '0.7.0'
gem 'psych', '~> 5.0'
+11 -11
View File
@@ -31,7 +31,7 @@ GEM
net-ssh (7.3.0)
net-telnet (0.2.0)
nio4r (2.7.4)
oxidized (0.34.3)
oxidized (0.35.0)
asetus (~> 0.4)
bcrypt_pbkdf (~> 1.0)
ed25519 (~> 1.2)
@@ -49,16 +49,16 @@ GEM
oxidized-script (0.7.0)
oxidized (~> 0.29)
slop (~> 4.6)
oxidized-web (0.17.1)
oxidized-web (0.18.0)
charlock_holmes (>= 0.7.5, < 0.8.0)
emk-sinatra-url-for (~> 0.2)
haml (>= 6.0.0, < 6.4.0)
htmlentities (>= 4.3.0, < 4.4.0)
json (>= 2.3.0, < 2.14.0)
oxidized (~> 0.34.1)
puma (~> 6.6.0)
sinatra (~> 4.1.1)
sinatra-contrib (~> 4.1.1)
haml (>= 6.0.0, < 7.0.0)
htmlentities (>= 4.3.0, < 4.5.0)
json (>= 2.3.0, < 2.17.0)
oxidized (>= 0.34.1)
puma (>= 6.6, < 7.2)
sinatra (>= 4.1.1, < 4.3.0)
sinatra-contrib (>= 4.1.1, < 4.3.0)
psych (5.2.6)
date
stringio
@@ -105,9 +105,9 @@ PLATFORMS
ruby
DEPENDENCIES
oxidized (= 0.34.3)
oxidized (= 0.35.0)
oxidized-script (= 0.7.0)
oxidized-web (= 0.17.1)
oxidized-web (= 0.18.0)
psych (~> 5.0)
BUNDLED WITH
+4 -4
View File
@@ -243,10 +243,10 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "16k60qxp2lw8l4ny21rk0m6vx3lipdhxp0lslmwn7gqi8wyw6ra8";
sha256 = "1s7v9w357bc5xb89an4kclqmfjv2j6p9gnvsf7s2mnrgg482j76v";
type = "gem";
};
version = "0.34.3";
version = "0.35.0";
};
oxidized-script = {
dependencies = [
@@ -278,10 +278,10 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1kcc7qlz3w530ssfnc7rgqhcwc4f4k3lbgayffwhnzl73s8mdld9";
sha256 = "19sz075liiqim98jvnb3jawxdpd8kk146bwvqzwvmimbgdzf8xfr";
type = "gem";
};
version = "0.17.1";
version = "0.18.0";
};
psych = {
dependencies = [
+3 -3
View File
@@ -28,13 +28,13 @@
xorg,
}:
let
version = "2.20.0";
version = "2.20.1";
src = fetchFromGitHub {
owner = "paperless-ngx";
repo = "paperless-ngx";
tag = "v${version}";
hash = "sha256-uf6/cl41lp2zEp3+gTbTYQlJcM3bdLTtOo+vEUrGIco=";
hash = "sha256-16eW8Yca/HgIr0wiFQq6Q5czCgA7gac1sR1q2g+ZkEc=";
};
python = python3.override {
@@ -80,7 +80,7 @@ let
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
fetcherVersion = 2;
hash = "sha256-JqFkA8t5D0SmhlKwhiKIztzWGXf+vO0Ro1ABVGXVzS8=";
hash = "sha256-+fE+IUyhoENnweFggLuS9LHwcLTZrLS1TBzuXHkaNAk=";
};
nativeBuildInputs = [
+83
View File
@@ -0,0 +1,83 @@
{
lib,
stdenv,
fetchurl,
unzip,
curl,
jq,
installShellFiles,
writeShellScript,
common-updater-scripts,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "speakeasy-cli";
version = "1.636.3";
sourceRoot = ".";
src =
finalAttrs.passthru.sources.${stdenv.hostPlatform.system}
or (throw "Unsupported System: ${stdenv.hostPlatform.system}");
nativeBuildInputs = [
unzip
installShellFiles
];
installPhase = ''
runHook preInstall
install -Dm 755 ./speakeasy $out/bin/speakeasy
runHook postInstall
'';
passthru = {
sources = {
"x86_64-darwin" = fetchurl {
url = "https://github.com/speakeasy-api/speakeasy/releases/download/v${finalAttrs.version}/speakeasy_darwin_amd64.zip";
hash = "sha256-Q1m4g5XBNAaxJZyYz6cD/7asTUGZMa493XVVJ9s0byE=";
};
"x86_64-linux" = fetchurl {
url = "https://github.com/speakeasy-api/speakeasy/releases/download/v${finalAttrs.version}/speakeasy_linux_amd64.zip";
hash = "sha256-H1c+b4/fBWudc3tAHTNdWwa9aoe8HpffRaLRU7OOWs4=";
};
"aarch64-darwin" = fetchurl {
url = "https://github.com/speakeasy-api/speakeasy/releases/download/v${finalAttrs.version}/speakeasy_darwin_arm64.zip";
hash = "sha256-xO9S9gjiMel2ZB8Dq2nN5O+zIB/4qf5Z2xeXS0wiprc=";
};
"aarch64-linux" = fetchurl {
url = "https://github.com/speakeasy-api/speakeasy/releases/download/v${finalAttrs.version}/speakeasy_linux_arm64.zip";
hash = "sha256-zH/HyA6MrrCh9j53hoqfVSiRqIoL6IOCV/nsAwRlgjg=";
};
};
updateScript = writeShellScript "update-speakeasy" ''
set -o errxt
export PATH="${
lib.makeBinPath [
curl
jq
common-updater-scripts
]
}"
NEW_VERSION=$(curl --silent https://api.github.com/repos/speakeasy-api/speakeasy/releases/latest | jq '.tag_name' | ltrimstr("v") --raw-output)
if [[ ${finalAttrs.version} = "$NEW_VERSION"]]; then
echo "The new version is the same as old"
exit 0
fi
for platfrom in ${lib.escapeShellArgs finalAttrs.meta.platforms}; do
update-source-version "speakeasy-cli" "$NEW_VERSION" --ignore-same-version --source-key="sources.$platform"
'';
};
meta = {
description = "CLI tool for Speakeasy";
homepage = "https://www.speakeasyapi.dev/";
changelog = "https://github.com/speakeasy-api/speakeasy/releases/tag/v${finalAttrs.version}";
license = lib.licenses.elastic20;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
maintainers = with lib.maintainers; [
eveeifyeve
];
mainProgram = "speakeasy";
platforms = builtins.attrNames finalAttrs.passthru.sources;
};
})
+2 -2
View File
@@ -12,11 +12,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "spigot";
version = "20220606.eb585f8";
version = "20240909.f158e08";
src = fetchurl {
url = "https://www.chiark.greenend.org.uk/~sgtatham/spigot/spigot-${finalAttrs.version}.tar.gz";
hash = "sha256-JyNNZo/HUPWv5rYtlNYp8Hl0C7i3yxEyKm+77ysN7Ao=";
hash = "sha256-8re4ubDgsTjc/WrE60b6eXBrGEJSKJTEXd/XMdJ79nM=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -6,15 +6,15 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "tun2proxy";
version = "0.7.16";
version = "0.7.17";
src = fetchCrate {
pname = "tun2proxy";
inherit (finalAttrs) version;
hash = "sha256-VO0dxX2FVKFSW157HYJxvlc2Xe6W+npw+4ls/1ePu80=";
hash = "sha256-QcXFDR5JbjGX2KjGBD2Wd5eSFVTxfXUkSCWhV5QO+r4=";
};
cargoHash = "sha256-CWaHHKuDr731cf3tms4Sg9NvCjW0TgmxG3vO37z/UrE=";
cargoHash = "sha256-jzUL342AOgaWnS1NBbI/WMXiGHht+eva3yGVlAQeJfo=";
env.GIT_HASH = "000000000000000000000000000000000000000000000000000";
+2 -2
View File
@@ -7,14 +7,14 @@
buildGoModule (finalAttrs: {
pname = "vacuum-go";
version = "0.20.4";
version = "0.20.5";
src = fetchFromGitHub {
owner = "daveshanley";
repo = "vacuum";
# using refs/tags because simple version gives: 'the given path has multiple possibilities' error
tag = "v${finalAttrs.version}";
hash = "sha256-HJ14pMY7XUWN6E0rcrAkJFc0g1prezPD5Y+F5Gc0bII=";
hash = "sha256-q/AavjPq6+dkBIxU4PyhvNcRlTbZAQny8qEFdeTy/kA=";
};
vendorHash = "sha256-MAYm6qMNB9c6o4nSclVed4g9ToOjiAItTUMAsJgEBok=";
@@ -0,0 +1,21 @@
diff --git a/src/common/PAM/Writer.vala b/src/common/PAM/Writer.vala
index 6b80269..063f3b0 100644
--- a/src/common/PAM/Writer.vala
+++ b/src/common/PAM/Writer.vala
@@ -25,6 +25,17 @@ namespace PC.PAM {
private string filename;
public static Writer new_for_time () {
+ var time_file = File.new_for_path (Constants.PAM_TIME_CONF_PATH);
+ if (!time_file.query_exists ()) {
+ var security_dir = time_file.get_parent ();
+ try {
+ security_dir.make_directory_with_parents ();
+ time_file.create (FileCreateFlags.NONE);
+ } catch (Error err) {
+ critical ("Could not create \"%s\": %s", Constants.PAM_TIME_CONF_PATH, err.message);
+ }
+ }
+
return new Writer (Constants.PAM_TIME_CONF_PATH);
}
@@ -0,0 +1,106 @@
{
stdenv,
lib,
fetchFromGitHub,
fetchpatch,
gettext,
gtk4,
meson,
ninja,
pkg-config,
vala,
wrapGAppsHook4,
accountsservice,
dbus,
flatpak,
glib,
granite7,
libadwaita,
libgee,
malcontent,
polkit,
switchboard,
systemd,
iptables,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "switchboard-plug-parental-controls";
version = "8.0.1";
src = fetchFromGitHub {
owner = "elementary";
repo = "switchboard-plug-parental-controls";
tag = finalAttrs.version;
hash = "sha256-yxQZSbbtWP0+gMu4cZt4bKZC7z8iZILAILYnn9ExnJY=";
};
patches = [
# Change default config file path and separate default and run-time config file
# https://github.com/elementary/switchboard-plug-parental-controls/pull/206
(fetchpatch {
url = "https://github.com/elementary/switchboard-plug-parental-controls/commit/1e5a08c1c3b0a5503e9d3f6858047d53ed8188f7.patch";
hash = "sha256-daP/nBmrUw8b3UytIZz3bKdM+lIgAIQ/DJP0h9sdXmc=";
})
(fetchpatch {
url = "https://github.com/elementary/switchboard-plug-parental-controls/commit/51f027657616a5d4a6bd24478a5b94fad12edb95.patch";
hash = "sha256-JOogF1ychF7MAJdrKT4eiUgM8+Y7CN9nxnRNidRoMOk=";
})
# See the nixos/lightdm module for corresponding PAM files.
# Since we override conffile path we need to create time.conf ourselves.
./create-pam-time-conf.patch
# We cannot really setfacl on read-only desktop files.
./disable-applications-tab.patch
];
nativeBuildInputs = [
gettext
gtk4 # gtk4-update-icon-cache
meson
ninja
pkg-config
vala
wrapGAppsHook4
];
buildInputs = [
accountsservice
dbus
flatpak
glib
granite7
gtk4
libadwaita
libgee
malcontent
polkit
switchboard
systemd
];
mesonFlags = [
# For /var/lib/pantheon-parental-controls/daemon.conf
"-Dsharedstatedir=/var/lib"
"-Dsystemdunitdir=${placeholder "out"}/etc/systemd/system"
];
preFixup = ''
# For WebRestriction.
gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ iptables ]})
'';
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Switchboard Screen Time & Limits Plug";
homepage = "https://github.com/elementary/switchboard-plug-parental-controls";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
teams = [ lib.teams.pantheon ];
};
})
@@ -0,0 +1,12 @@
diff --git a/src/plug/Widgets/ControlPage.vala b/src/plug/Widgets/ControlPage.vala
index 7d1a17d..0d37da2 100644
--- a/src/plug/Widgets/ControlPage.vala
+++ b/src/plug/Widgets/ControlPage.vala
@@ -36,7 +36,6 @@ public class PC.Widgets.ControlPage : Switchboard.SettingsPage {
stack = new Gtk.Stack ();
stack.add_titled (time_limit_view, "general", _("Screen Time"));
stack.add_titled (internet_box, "internet", _("Internet"));
- stack.add_titled (apps_box, "apps", _("Applications"));
var switcher = new Gtk.StackSwitcher () {
halign = CENTER,
+3
View File
@@ -20,6 +20,7 @@ lib.makeScope pkgs.newScope (
switchboard-plug-notifications
switchboard-plug-onlineaccounts
switchboard-plug-pantheon-shell
switchboard-plug-parental-controls
switchboard-plug-power
switchboard-plug-printers
switchboard-plug-security-privacy
@@ -201,6 +202,8 @@ lib.makeScope pkgs.newScope (
switchboard-plug-pantheon-shell = callPackage ./apps/switchboard-plugs/pantheon-shell { };
switchboard-plug-parental-controls = callPackage ./apps/switchboard-plugs/parental-controls { };
switchboard-plug-power = callPackage ./apps/switchboard-plugs/power { };
switchboard-plug-printers = callPackage ./apps/switchboard-plugs/printers { };
@@ -482,39 +482,39 @@ rec {
};
sdk_9_0_3xx = buildNetSdk {
version = "9.0.307";
version = "9.0.308";
srcs = {
linux-arm = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.307/dotnet-sdk-9.0.307-linux-arm.tar.gz";
hash = "sha512-zda8G93uT68VB+E9bbPk6TrLBf4rn7eh9uXOTuz2OylTMwWTPtUDhuh5Rf3Uybr2KR32OjGvi9mbadIs++uJCQ==";
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.308/dotnet-sdk-9.0.308-linux-arm.tar.gz";
hash = "sha512-3iUHh7vk+fs4t20fC+1rO42O1Rs9KJ26aPGkljzM6S/lTpQPItlw/S9SCfEjEToRSZqYcQWE1Tu10hSg+3Z5KQ==";
};
linux-arm64 = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.307/dotnet-sdk-9.0.307-linux-arm64.tar.gz";
hash = "sha512-Rr+wvT6BJPD6vdI0vPIDg6hkWdVfPT1zF4oLziiLQLgsXf0XJYa+RHUg4hH9z9qGkCyxBrXsxNMVI02cj4vLcA==";
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.308/dotnet-sdk-9.0.308-linux-arm64.tar.gz";
hash = "sha512-Ifvc3Lh2LzV57yqKxdkssNuWCQHxww0Df6FlIjjvYGv8e/+i5R/Mg/lPPCx9W+5dz+1LZrqkVa49OGgeJk0j/w==";
};
linux-x64 = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.307/dotnet-sdk-9.0.307-linux-x64.tar.gz";
hash = "sha512-/MF4rAAmz+oes3Mg+yX/0y5rwrHUjAkfYIW4ihXyQIDa4qMyNDxRyiQh9hPV96veiYNGWJ9JWfHlHWGcIkfSFg==";
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.308/dotnet-sdk-9.0.308-linux-x64.tar.gz";
hash = "sha512-Oqz/CWUkodrpvANfcaaAX6fsNDDTlXcfwchVBRZaeDYc4sycnDVDM3blwwrsN+LrLnfeCmun3dfcYFO68sJwmg==";
};
linux-musl-arm = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.307/dotnet-sdk-9.0.307-linux-musl-arm.tar.gz";
hash = "sha512-sKtwAvYOqUtoFAXEh2yxUtZckUH0QMrO+MzG09LovW7tBC4cp1W7gs9Apjzhm+JUUEKzrysh+KkeBaumgh5XGQ==";
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.308/dotnet-sdk-9.0.308-linux-musl-arm.tar.gz";
hash = "sha512-czH5OG5VAo/DyiE+1Vi8bmH9MrubkAQmy60aOrZ42oqe2hNeBzwxiHR0GoAuJZjwyZ+T0WHLSGGlnLtjlMZIyA==";
};
linux-musl-arm64 = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.307/dotnet-sdk-9.0.307-linux-musl-arm64.tar.gz";
hash = "sha512-iL/jBb+g4cHS7bhwEhnUpm/eeDzAQt/yAlKn7hvQp5Zo1MLbgnbv73VgGbZ0glgpkHOC8w0wGUDqLlxYff8JQg==";
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.308/dotnet-sdk-9.0.308-linux-musl-arm64.tar.gz";
hash = "sha512-AI71i0T7HHZbiMjGaH2WzqN8/bjHEUFhQgdD/5FrYr1n/+4MmBNb6gXZwigwbvHtEU8tgV3LW4s8txf5xROmMg==";
};
linux-musl-x64 = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.307/dotnet-sdk-9.0.307-linux-musl-x64.tar.gz";
hash = "sha512-iqHqLRnQjvzxN28vg3bYovyC/Hef9vFQ4K7jBoqa+HAR7RWQJ2ty8E408wEK309Vbx1GYUKRdqTidZWSSGrN7A==";
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.308/dotnet-sdk-9.0.308-linux-musl-x64.tar.gz";
hash = "sha512-zq1a7hEPUnmO1CDK9J3Q9HaOFamd7Da0EXTmszEgjV2L5ePtRAvtFtG4XPkGCRvaaK9bzbA4PDU+nmH/ayTfNg==";
};
osx-arm64 = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.307/dotnet-sdk-9.0.307-osx-arm64.tar.gz";
hash = "sha512-LSlLg23Yu0ihX6v/KQdruc6+V4Yp5ty+YMw7Lq8GBx6hl+Aw+lCxuXFMvHAwRWrOLDgPxWnhw+7R7IqqGLWIQg==";
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.308/dotnet-sdk-9.0.308-osx-arm64.tar.gz";
hash = "sha512-jUsh/6gEfrxEWbIqYJDkIh/Is8q0WrY43MYfGl6zvy3/nzTbMFtAx5WuK68XMroV+Rzl371xip9EVWFZTZwhng==";
};
osx-x64 = {
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.307/dotnet-sdk-9.0.307-osx-x64.tar.gz";
hash = "sha512-05ZabtZ07zCJ7iJaopmIUmTQg0e+CotOwQN//xMWzLulIja2JZUNv3M+2UxYlobMHWrcMScejyMikEmVVd1h7g==";
url = "https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.308/dotnet-sdk-9.0.308-osx-x64.tar.gz";
hash = "sha512-49Y+BmkCtQ/jIfztg7wk/QQN9ZHDxYknyyB9y5UFRDn4WYfRuFMyONVy742766gSJiKvecnvrHqUdtiIQrfLdg==";
};
};
inherit commonPackages hostPackages targetPackages;
@@ -160,7 +160,11 @@ stdenv.mkDerivation (
mv $out/bin/set-xcode-analyzer $python/bin
fi
mv $out/share/clang/*.py $python/share/clang
''
+ lib.optionalString (lib.versionOlder release_version "22") ''
rm $out/bin/c-index-test
''
+ ''
patchShebangs $python/bin
mkdir -p $dev/bin
+3 -3
View File
@@ -27,9 +27,9 @@ let
"20.1.8".officialRelease.sha256 = "sha256-ysyB/EYxi2qE9fD5x/F2zI4vjn8UDoo1Z9ukiIrjFGw=";
"21.1.7".officialRelease.sha256 = "sha256-SaRJ7+iZMhhBdcUDuJpMAY4REQVhrvYMqI2aq3Kz08o=";
"22.0.0-git".gitRelease = {
rev = "81c5d468cf00d6e41112fba6c89d6c40013bcbda";
rev-version = "22.0.0-unstable-2025-11-30";
sha256 = "sha256-aZdPGmj+02pQPjvIlJyn9DEKCiIHjLaethxRUa2MWHE=";
rev = "fc92e4dec9a6dfcb4fb77d863d0bf1dbc53033e5";
rev-version = "22.0.0-unstable-2025-12-07";
sha256 = "sha256-ntcaJgSG22tIDTBUVEwx+6ksQrWR6YHDwbUOls06JEE=";
};
}
// llvmVersions;
@@ -217,6 +217,7 @@ in
apply-refact = addBuildDepend self.data-default-class super.apply-refact;
floskell = doJailbreak super.floskell;
fourmolu = dontCheck (doJailbreak self.fourmolu_0_15_0_0);
ghcide = super.ghcide;
haskell-language-server = addBuildDepends [
self.retrie
self.floskell
@@ -224,6 +225,7 @@ in
] super.haskell-language-server;
hls-plugin-api = super.hls-plugin-api;
hlint = self.hlint_3_8;
lsp-types = super.lsp-types;
ormolu = self.ormolu_0_7_4_0;
retrie = doJailbreak (unmarkBroken super.retrie);
stylish-haskell = self.stylish-haskell_0_14_6_0;
@@ -232,9 +234,11 @@ in
apply-refact
floskell
fourmolu
ghcide
haskell-language-server
hls-plugin-api
hlint
lsp-types
ormolu
retrie
stylish-haskell
@@ -121,6 +121,7 @@ in
apply-refact = addBuildDepend self.data-default-class super.apply-refact;
floskell = doJailbreak super.floskell;
fourmolu = dontCheck (doJailbreak self.fourmolu_0_15_0_0);
ghcide = super.ghcide;
haskell-language-server = addBuildDepends [
self.retrie
self.floskell
@@ -128,6 +129,7 @@ in
] super.haskell-language-server;
hls-plugin-api = super.hls-plugin-api;
hlint = self.hlint_3_8;
lsp-types = super.lsp-types;
ormolu = self.ormolu_0_7_4_0;
retrie = doJailbreak (unmarkBroken super.retrie);
stylish-haskell = self.stylish-haskell_0_14_6_0;
@@ -136,9 +138,11 @@ in
apply-refact
floskell
fourmolu
ghcide
haskell-language-server
hls-plugin-api
hlint
lsp-types
ormolu
retrie
stylish-haskell
@@ -6,18 +6,19 @@
kdePackages,
qtbase,
qtdeclarative,
opencv,
}:
stdenv.mkDerivation rec {
pname = "kquickimageeditor";
version = "0.5.1";
version = "0.6.0";
src = fetchFromGitLab {
domain = "invent.kde.org";
owner = "libraries";
repo = "kquickimageeditor";
rev = "v${version}";
sha256 = "sha256-8TJBg42E9lNbLpihjtc5Z/drmmSGQmic8yO45yxSNQ4=";
sha256 = "sha256-NhZ9aAZuIk9vUL2X7eivNbEs0zahuQpy8kl6dSdy5Lo=";
};
nativeBuildInputs = [ extra-cmake-modules ];
@@ -25,6 +26,14 @@ stdenv.mkDerivation rec {
kdePackages.kirigami
qtbase
qtdeclarative
(opencv.override {
enableCuda = false; # fails to compile, disabled in case someone sets config.cudaSupport
enabledModules = [
"core"
"imgproc"
];
runAccuracyTests = false; # tests will fail because of missing plugins but that's okay
})
];
dontWrapQtApps = true;
@@ -3,7 +3,6 @@
stdenv,
buildDunePackage,
fetchFromGitHub,
ocplib-endian,
cmdliner,
afl-persistent,
calendar,
@@ -14,24 +13,21 @@
uucp,
}:
buildDunePackage rec {
buildDunePackage (finalAttrs: {
pname = "crowbar";
version = "0.2.1";
version = "0.2.2";
src = fetchFromGitHub {
owner = "stedolan";
repo = pname;
rev = "v${version}";
sha256 = "sha256-0jjwiOZ9Ut+dv5Iw4xNvf396WTehT1VClxY9VHicw4U=";
repo = "crowbar";
tag = "v${finalAttrs.version}";
hash = "sha256-KGDOm9PMymFwyHoe7gp+rl+VxbbkLvnb8ypTXbImSgs=";
};
minimalOCamlVersion = "4.08";
# disable xmldiff tests, so we don't need to package unmaintained and legacy pkgs
postPatch = "rm -rf examples/xmldiff";
propagatedBuildInputs = [
ocplib-endian
cmdliner
afl-persistent
];
@@ -50,6 +46,6 @@ buildDunePackage rec {
description = "Property fuzzing for OCaml";
homepage = "https://github.com/stedolan/crowbar";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.sternenseemann ];
maintainers = with lib.maintainers; [ sternenseemann ];
};
}
})
@@ -8,14 +8,14 @@
buildPythonPackage rec {
pname = "disposable-email-domains";
version = "0.0.151";
version = "0.0.152";
pyproject = true;
# No tags on GitHub
src = fetchPypi {
pname = "disposable_email_domains";
inherit version;
hash = "sha256-jXtOepZPvp2jlOWJ1Lp2ltnrWU3qL5jHunPRcPLZc8E=";
hash = "sha256-5F3ZC9tZ1cpX6qTvDm74bTEJQRYWEn1+QI0d04Yry8M=";
};
build-system = [
@@ -19,14 +19,14 @@
buildPythonPackage rec {
pname = "esp-idf-size";
version = "2.0.0";
version = "2.1.0";
pyproject = true;
src = fetchFromGitHub {
owner = "espressif";
repo = "esp-idf-size";
tag = "v${version}";
hash = "sha256-LnaS6lm2/fy9aWiV/MuRKegDAmjljQFvp+uI8FmEpdI=";
hash = "sha256-A78sbuxn26gJqZ84EhYWKCVtkZE3gRT3jbjWLpwjXpQ=";
};
patches = [
@@ -1,7 +1,7 @@
{
lib,
stdenv,
buildPythonPackage,
pythonOlder,
fetchFromGitHub,
pyparsing,
typing-extensions,
@@ -15,29 +15,34 @@
matplotlib,
pymupdf,
pyqt5,
withGui ? false,
qt6,
librecad,
gitUpdater,
}:
buildPythonPackage rec {
version = "1.3.2";
version = "1.4.3";
pname = "ezdxf";
pyproject = true;
disabled = pythonOlder "3.5";
src = fetchFromGitHub {
owner = "mozman";
repo = "ezdxf";
tag = "v${version}";
hash = "sha256-BzdLl2GjLh2ABJzJ6bhdbic9jlSABIVR3XGrYiLJHa0=";
hash = "sha256-v/xW/Tg3OgzwvSNy3cfkxzf6R33ZvW4VE8k7MB+rM+w=";
};
nativeBuildInputs = lib.optionals withGui [ qt6.wrapQtAppsHook ];
dependencies = [
pyparsing
typing-extensions
numpy
fonttools
];
]
++ lib.optionals withGui ([ qt6.qtbase ] ++ optional-dependencies.draw);
optional-dependencies = {
draw = [
@@ -59,6 +64,12 @@ buildPythonPackage rec {
cython
];
dontWrapQtApps = true;
preFixup = lib.optionalString withGui ''
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
'';
checkInputs = [ pillow ];
nativeCheckInputs = [ pytestCheckHook ];
@@ -68,10 +79,26 @@ buildPythonPackage rec {
"ezdxf.addons"
];
preCheck = ''
ln -s "${librecad}/${
if stdenv.hostPlatform.isDarwin then
"Applications/LibreCAD.app/Contents/Resources"
else
"share/librecad"
}/fonts" fonts/librecad
'';
# The default updateScript of Python packages does not filter prerelease versions.
passthru.updateScript = gitUpdater {
rev-prefix = "v";
allowedVersions = "^[0-9]+\\.[0-9]+\\.[0-9]+$";
};
meta = {
description = "Python package to read and write DXF drawings (interface to the DXF file format)";
mainProgram = "ezdxf";
homepage = "https://github.com/mozman/ezdxf/";
homepage = "https://ezdxf.mozman.at/";
changelog = "https://github.com/mozman/ezdxf/blob/${src.rev}/notes/pages/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ hodapp ];
platforms = lib.platforms.unix;
@@ -8,14 +8,14 @@
buildPythonPackage rec {
pname = "iamdata";
version = "0.1.202512091";
version = "0.1.202512111";
pyproject = true;
src = fetchFromGitHub {
owner = "cloud-copilot";
repo = "iam-data-python";
tag = "v${version}";
hash = "sha256-y6DlcmPRC/yG++ejpbzVCOgPmj53pKwEWilxdep6x7Q=";
hash = "sha256-4bOrVi8RpoVw+jzB7pMUnFx6FtyICCaVL4gO1ljJGsI=";
};
__darwinAllowLocalNetworking = true;
@@ -16,14 +16,14 @@
buildPythonPackage rec {
pname = "sshfs";
version = "2025.10.0";
version = "2025.11.0";
pyproject = true;
src = fetchFromGitHub {
owner = "fsspec";
repo = "sshfs";
tag = version;
hash = "sha256-IG+/aXM6F+sNtxmhgiaD6OXhRpbiCm0zW2ki0y8nuLE=";
hash = "sha256-TrFrjORH6VebTBq+OHJUEr55DtjL58/b+qQLpbSU7MU=";
};
build-system = [
@@ -40,6 +40,8 @@ buildPythonPackage rec {
pnpm.configHook
];
pythonImportsCheck = [ "yt_dlp_ejs" ];
meta = {
changelog = "https://github.com/yt-dlp/ejs/releases/tag/${version}";
description = "External JavaScript for yt-dlp supporting many runtimes";
+2 -2
View File
@@ -13,10 +13,10 @@
}:
let
rev = "901fc09b83c686693be51b3c9a13578929cbc1ab"; # should be the HEAD of nodejs/release-keys
rev = "b362bd15f2ac7ce350d7563fc03e0c625e455e5f"; # should be the HEAD of nodejs/release-keys
pubring = fetchurl {
url = "https://github.com/nodejs/release-keys/raw/${rev}/gpg-only-active-keys/pubring.kbx";
hash = "sha256-r/thHVLDlMVRN3Ahr5Apivy+h2IuvPm4QhYFoAmms3E=";
hash = "sha256-ZnapJ9YmGnq2u03caWFII1Z0Jruax3ruSEz7XWb0oUg=";
};
in
writeScript "update-nodejs" ''
+6 -7
View File
@@ -37,8 +37,6 @@ let
inherit (v) version;
}
) allUrls;
debugAlias = set: lib.dontRecurseIntoAttrs (lib.filterAttrs (k: v: !v.meta.broken) set);
in
(
qt6Packages
@@ -46,12 +44,13 @@ let
// gear
// plasma
// {
inherit sources;
# Aliases to simplify test-building entire package sets
frameworks = debugAlias frameworks;
gear = debugAlias gear;
plasma = debugAlias plasma;
inherit
sources
frameworks
gear
plasma
;
mkKdeDerivation = self.callPackage (import ./lib/mk-kde-derivation.nix self) { };
-9
View File
@@ -1,7 +1,6 @@
{
mkKdeDerivation,
lib,
fetchpatch,
boost,
eigen,
gsl,
@@ -27,14 +26,6 @@
mkKdeDerivation {
pname = "calligra";
patches = [
# Fix build with Poppler 25.10
(fetchpatch {
url = "https://invent.kde.org/office/calligra/-/commit/45e8b302bce1d318f310ea13599d7ce84acc477e.patch";
hash = "sha256-TECB3eo24+gI8TXL8gw9BIdFWqw0JBKCWpoNVqBSan8=";
})
];
extraBuildInputs = [
boost
eigen
+2
View File
@@ -1,9 +1,11 @@
{
mkKdeDerivation,
pkg-config,
ffmpeg,
}:
mkKdeDerivation {
pname = "ffmpegthumbs";
extraNativeBuildInputs = [ pkg-config ];
extraBuildInputs = [ ffmpeg ];
}
+2
View File
@@ -3,6 +3,7 @@
pkg-config,
qtlocation,
qtpositioning,
qcoro,
shared-mime-info,
libical,
}:
@@ -19,6 +20,7 @@ mkKdeDerivation {
extraBuildInputs = [
qtlocation
qtpositioning
qcoro
libical
];
meta.mainProgram = "itinerary";
+5 -1
View File
@@ -1,6 +1,7 @@
{
mkKdeDerivation,
pkg-config,
kauth,
mpv,
}:
mkKdeDerivation {
@@ -11,5 +12,8 @@ mkKdeDerivation {
];
extraNativeBuildInputs = [ pkg-config ];
extraBuildInputs = [ mpv ];
extraBuildInputs = [
kauth
mpv
];
}
+2
View File
@@ -1,6 +1,7 @@
{
mkKdeDerivation,
pkg-config,
kirigami-addons,
gst_all_1,
frei0r,
}:
@@ -9,6 +10,7 @@ mkKdeDerivation {
extraNativeBuildInputs = [ pkg-config ];
extraBuildInputs = [
kirigami-addons
gst_all_1.gst-plugins-base
(gst_all_1.gst-plugins-good.override { qt6Support = true; })
gst_all_1.gst-plugins-bad
+6
View File
@@ -1,13 +1,19 @@
{
mkKdeDerivation,
pkg-config,
qtsvg,
qtmultimedia,
wayland-protocols,
}:
mkKdeDerivation {
pname = "kclock";
extraNativeBuildInputs = [ pkg-config ];
extraBuildInputs = [
qtsvg
qtmultimedia
wayland-protocols
];
}
-7
View File
@@ -10,7 +10,6 @@
wayland,
wayland-protocols,
libfakekey,
fetchpatch,
}:
mkKdeDerivation {
pname = "kdeconnect-kde";
@@ -19,12 +18,6 @@ mkKdeDerivation {
(replaceVars ./hardcode-sshfs-path.patch {
sshfs = lib.getExe sshfs;
})
# Fix CVE-2025-66270 (https://kde.org/info/security/advisory-20251128-1.txt)
(fetchpatch {
name = "CVE-2025-66270.patch";
url = "https://invent.kde.org/network/kdeconnect-kde/-/commit/4e53bcdd5d4c28bd9fefd114b807ce35d7b3373e.patch";
hash = "sha256-qtcXNJ5qL4xtZQ70R/wWVCzFGzXNltr6XTgs0fpkTi4=";
})
];
# Hardcoded as a QString, which is UTF-16 so Nix can't pick it up automatically
@@ -1,71 +1,57 @@
diff --git a/samba/filepropertiesplugin/authhelper.cpp b/samba/filepropertiesplugin/authhelper.cpp
index 6cbbd90..ae1d696 100644
index b45b25f..b71554f 100644
--- a/samba/filepropertiesplugin/authhelper.cpp
+++ b/samba/filepropertiesplugin/authhelper.cpp
@@ -49,7 +49,7 @@ ActionReply AuthHelper::isuserknown(const QVariantMap &args)
@@ -50,7 +50,7 @@ ActionReply AuthHelper::isuserknown(const QVariantMap &args)
}
QProcess p;
- const auto program = QStringLiteral("pdbedit");
+ const auto program = QStringLiteral("@samba@/bin/pdbedit");
const auto arguments = QStringList({QStringLiteral("--debuglevel=0"), QStringLiteral("--user"), username });
const auto arguments = QStringList({QStringLiteral("--debuglevel=0"), QStringLiteral("--user"), username});
p.setProgram(program);
p.setArguments(arguments);
@@ -88,7 +88,7 @@ ActionReply AuthHelper::createuser(const QVariantMap &args)
@@ -92,7 +92,7 @@ ActionReply AuthHelper::createuser(const QVariantMap &args)
}
QProcess p;
- p.setProgram(QStringLiteral("smbpasswd"));
+ p.setProgram(QStringLiteral("@samba@/bin/smbpasswd"));
p.setArguments({
QStringLiteral("-L"), /* local mode */
QStringLiteral("-s"), /* read from stdin */
@@ -152,7 +152,7 @@ ActionReply AuthHelper::addtogroup(const QVariantMap &args)
QStringLiteral("-m"),
QStringLiteral("{%1}").arg(user.value()) });
p.setArguments({QStringLiteral("-L"), /* local mode */
QStringLiteral("-s"), /* read from stdin */
QStringLiteral("-D"),
@@ -155,7 +155,7 @@ ActionReply AuthHelper::addtogroup(const QVariantMap &args)
p.setArguments(
{QStringLiteral("group"), QStringLiteral("mod"), QStringLiteral("{%1}").arg(group), QStringLiteral("-m"), QStringLiteral("{%1}").arg(user.value())});
#elif defined(Q_OS_LINUX) || defined(Q_OS_HURD)
- p.setProgram(QStringLiteral("/usr/sbin/usermod"));
+ p.setProgram(QStringLiteral("@usermod@"));
p.setArguments({
QStringLiteral("--append"),
QStringLiteral("--groups"),
p.setArguments({QStringLiteral("--append"), QStringLiteral("--groups"), group, user.value()});
#else
#error "Platform lacks group management support. Please add support."
diff --git a/samba/filepropertiesplugin/groupmanager.cpp b/samba/filepropertiesplugin/groupmanager.cpp
index a2ba851..d54f6ce 100644
index 948f428..f25e549 100644
--- a/samba/filepropertiesplugin/groupmanager.cpp
+++ b/samba/filepropertiesplugin/groupmanager.cpp
@@ -18,7 +18,7 @@ GroupManager::GroupManager(QObject *parent)
{
metaObject()->invokeMethod(this, [this] {
QMetaObject::invokeMethod(this, [this] {
auto proc = new QProcess;
- proc->setProgram(QStringLiteral("testparm"));
+ proc->setProgram(QStringLiteral("@samba@/bin/testparm"));
proc->setArguments({QStringLiteral("--debuglevel=0"),
QStringLiteral("--suppress-prompt"),
QStringLiteral("--verbose"),
diff --git a/samba/filepropertiesplugin/sambausershareplugin.cpp b/samba/filepropertiesplugin/sambausershareplugin.cpp
index 4f6642e..86ea121 100644
--- a/samba/filepropertiesplugin/sambausershareplugin.cpp
+++ b/samba/filepropertiesplugin/sambausershareplugin.cpp
@@ -112,7 +112,8 @@ SambaUserSharePlugin::SambaUserSharePlugin(QObject *parent)
bool SambaUserSharePlugin::isSambaInstalled()
{
return QFile::exists(QStringLiteral("/usr/sbin/smbd"))
- || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"));
+ || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"))
+ || QFile::exists(QStringLiteral("/run/current-system/sw/bin/smbd"));
}
void SambaUserSharePlugin::showSambaStatus()
diff --git a/samba/filepropertiesplugin/usermanager.cpp b/samba/filepropertiesplugin/usermanager.cpp
index 29238ce..ff20fcb 100644
index 3be3b8c..66fd965 100644
--- a/samba/filepropertiesplugin/usermanager.cpp
+++ b/samba/filepropertiesplugin/usermanager.cpp
@@ -138,7 +138,7 @@ bool UserManager::canManageSamba() const
@@ -134,7 +134,7 @@ bool UserManager::canManageSamba() const
void UserManager::load()
{
auto proc = new QProcess(this);
- proc->setProgram(QStringLiteral("testparm"));
+ proc->setProgram(QStringLiteral("@samba@/bin/testparm"));
proc->setArguments({
QStringLiteral("--debuglevel=0"),
QStringLiteral("--suppress-prompt"),
proc->setArguments({QStringLiteral("--debuglevel=0"),
QStringLiteral("--suppress-prompt"),
QStringLiteral("--verbose"),
+2
View File
@@ -9,6 +9,7 @@
qtsvg,
qtmultimedia,
qtnetworkauth,
kddockwidgets,
qqc2-desktop-style,
libv4l,
opentimelineio,
@@ -38,6 +39,7 @@ mkKdeDerivation {
qtmultimedia
qtnetworkauth
kddockwidgets
qqc2-desktop-style
ffmpeg-full
+2
View File
@@ -1,9 +1,11 @@
{
mkKdeDerivation,
shared-mime-info,
qtdeclarative,
}:
mkKdeDerivation {
pname = "kpkpass";
extraNativeBuildInputs = [ shared-mime-info ];
extraBuildInputs = [ qtdeclarative ];
}
+5 -1
View File
@@ -1,11 +1,15 @@
{
mkKdeDerivation,
qtdeclarative,
qtlocation,
pkg-config,
}:
mkKdeDerivation {
pname = "kpublictransport";
extraNativeBuildInputs = [ pkg-config ];
extraBuildInputs = [ qtdeclarative ];
extraBuildInputs = [
qtdeclarative
qtlocation
];
}
+6 -1
View File
@@ -1,11 +1,16 @@
{
mkKdeDerivation,
pkg-config,
kddockwidgets,
hunspell,
}:
mkKdeDerivation {
pname = "lokalize";
extraNativeBuildInputs = [ pkg-config ];
extraBuildInputs = [ hunspell ];
extraBuildInputs = [
kddockwidgets
hunspell
];
}
+5 -1
View File
@@ -2,10 +2,14 @@
mkKdeDerivation,
pkg-config,
qtmultimedia,
kirigami-addons,
}:
mkKdeDerivation {
pname = "qrca";
extraNativeBuildInputs = [ pkg-config ];
extraBuildInputs = [ qtmultimedia ];
extraBuildInputs = [
qtmultimedia
kirigami-addons
];
}
-2
View File
@@ -6,6 +6,4 @@ mkKdeDerivation {
pname = "rocs";
extraBuildInputs = [ boost ];
# FIXME(qt5)
meta.broken = true;
}
-2
View File
@@ -1,6 +1,4 @@
{ mkKdeDerivation }:
mkKdeDerivation {
pname = "umbrello";
# FIXME(qt5)
meta.broken = true;
}
File diff suppressed because it is too large Load Diff