mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-25 10:36:36 +03:00
Merge staging-next into staging
This commit is contained in:
commit
f970ef5718
55 changed files with 1588 additions and 7090 deletions
1
.github/labeler.yml
vendored
1
.github/labeler.yml
vendored
|
@ -181,6 +181,7 @@
|
||||||
- pkgs/development/compilers/corretto/**/*
|
- pkgs/development/compilers/corretto/**/*
|
||||||
- pkgs/development/compilers/graalvm/**/*
|
- pkgs/development/compilers/graalvm/**/*
|
||||||
- pkgs/development/compilers/openjdk/**/*
|
- pkgs/development/compilers/openjdk/**/*
|
||||||
|
- pkgs/by-name/op/openjfx/**/*
|
||||||
- pkgs/development/compilers/semeru-bin/**/*
|
- pkgs/development/compilers/semeru-bin/**/*
|
||||||
- pkgs/development/compilers/temurin-bin/**/*
|
- pkgs/development/compilers/temurin-bin/**/*
|
||||||
- pkgs/development/compilers/zulu/**/*
|
- pkgs/development/compilers/zulu/**/*
|
||||||
|
|
|
@ -20519,6 +20519,12 @@
|
||||||
githubId = 18403034;
|
githubId = 18403034;
|
||||||
name = "Shaddy";
|
name = "Shaddy";
|
||||||
};
|
};
|
||||||
|
shadowapex = {
|
||||||
|
email = "shadowapex@gmail.com";
|
||||||
|
github = "ShadowApex";
|
||||||
|
githubId = 376460;
|
||||||
|
name = "William Edwards";
|
||||||
|
};
|
||||||
shadowrz = {
|
shadowrz = {
|
||||||
email = "shadowrz+nixpkgs@disroot.org";
|
email = "shadowrz+nixpkgs@disroot.org";
|
||||||
matrix = "@shadowrz:nixos.dev";
|
matrix = "@shadowrz:nixos.dev";
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
|
|
||||||
- [Bazecor](https://github.com/Dygmalab/Bazecor), the graphical configurator for Dygma Products.
|
- [Bazecor](https://github.com/Dygmalab/Bazecor), the graphical configurator for Dygma Products.
|
||||||
|
|
||||||
|
- [Bonsai](https://git.sr.ht/~stacyharper/bonsai), a general-purpose event mapper/state machine primarily used to create complex key shortcuts, and as part of the [SXMO](https://sxmo.org/) desktop environment. Available as [services.bonsaid](#opt-services.bonsaid.enable).
|
||||||
|
|
||||||
- [scanservjs](https://github.com/sbs20/scanservjs/), a web UI for SANE scanners. Available at [services.scanservjs](#opt-services.scanservjs.enable).
|
- [scanservjs](https://github.com/sbs20/scanservjs/), a web UI for SANE scanners. Available at [services.scanservjs](#opt-services.scanservjs.enable).
|
||||||
|
|
||||||
- [Kimai](https://www.kimai.org/), a web-based multi-user time-tracking application. Available as [services.kimai](options.html#opt-services.kimai).
|
- [Kimai](https://www.kimai.org/), a web-based multi-user time-tracking application. Available as [services.kimai](options.html#opt-services.kimai).
|
||||||
|
@ -39,6 +41,8 @@
|
||||||
|
|
||||||
- [MaryTTS](https://github.com/marytts/marytts), an open-source, multilingual text-to-speech synthesis system written in pure Java. Available as [services.marytts](options.html#opt-services.marytts).
|
- [MaryTTS](https://github.com/marytts/marytts), an open-source, multilingual text-to-speech synthesis system written in pure Java. Available as [services.marytts](options.html#opt-services.marytts).
|
||||||
|
|
||||||
|
- [networking.modemmanager](options.html#opt-networking.modemmanager) has been split out of [networking.networkmanager](options.html#opt-networking.networkmanager). NetworkManager still enables ModemManager by default, but options exist now to run NetworkManager without ModemManager.
|
||||||
|
|
||||||
- [Conduwuit](https://conduwuit.puppyirl.gay/), a federated chat server implementing the Matrix protocol, forked from Conduit. Available as [services.conduwuit](#opt-services.conduwuit.enable).
|
- [Conduwuit](https://conduwuit.puppyirl.gay/), a federated chat server implementing the Matrix protocol, forked from Conduit. Available as [services.conduwuit](#opt-services.conduwuit.enable).
|
||||||
|
|
||||||
- [Traccar](https://www.traccar.org/), a modern GPS Tracking Platform. Available as [services.traccar](#opt-services.traccar.enable).
|
- [Traccar](https://www.traccar.org/), a modern GPS Tracking Platform. Available as [services.traccar](#opt-services.traccar.enable).
|
||||||
|
@ -61,6 +65,8 @@
|
||||||
|
|
||||||
- [nvidia-gpu](https://github.com/utkuozdemir/nvidia_gpu_exporter), a Prometheus exporter that scrapes `nvidia-smi` for GPU metrics. Available as [services.prometheus.exporters.nvidia-gpu](#opt-services.prometheus.exporters.nvidia-gpu.enable).
|
- [nvidia-gpu](https://github.com/utkuozdemir/nvidia_gpu_exporter), a Prometheus exporter that scrapes `nvidia-smi` for GPU metrics. Available as [services.prometheus.exporters.nvidia-gpu](#opt-services.prometheus.exporters.nvidia-gpu.enable).
|
||||||
|
|
||||||
|
- [InputPlumber](https://github.com/ShadowBlip/InputPlumber/), an open source input router and remapper daemon for Linux. Available as [services.inputplumber](#opt-services.inputplumber.enable).
|
||||||
|
|
||||||
- [Buffyboard](https://gitlab.postmarketos.org/postmarketOS/buffybox/-/tree/master/buffyboard), a framebuffer on-screen keyboard. Available as [services.buffyboard](option.html#opt-services.buffyboard).
|
- [Buffyboard](https://gitlab.postmarketos.org/postmarketOS/buffybox/-/tree/master/buffyboard), a framebuffer on-screen keyboard. Available as [services.buffyboard](option.html#opt-services.buffyboard).
|
||||||
|
|
||||||
- [KanBoard](https://github.com/kanboard/kanboard), a project management tool that focuses on the Kanban methodology. Available as [services.kanboard](#opt-services.kanboard.enable).
|
- [KanBoard](https://github.com/kanboard/kanboard), a project management tool that focuses on the Kanban methodology. Available as [services.kanboard](#opt-services.kanboard.enable).
|
||||||
|
|
|
@ -509,6 +509,7 @@
|
||||||
./services/desktops/ayatana-indicators.nix
|
./services/desktops/ayatana-indicators.nix
|
||||||
./services/desktops/bamf.nix
|
./services/desktops/bamf.nix
|
||||||
./services/desktops/blueman.nix
|
./services/desktops/blueman.nix
|
||||||
|
./services/desktops/bonsaid.nix
|
||||||
./services/desktops/cpupower-gui.nix
|
./services/desktops/cpupower-gui.nix
|
||||||
./services/desktops/deepin/deepin-anything.nix
|
./services/desktops/deepin/deepin-anything.nix
|
||||||
./services/desktops/deepin/dde-api.nix
|
./services/desktops/deepin/dde-api.nix
|
||||||
|
@ -604,6 +605,7 @@
|
||||||
./services/hardware/handheld-daemon.nix
|
./services/hardware/handheld-daemon.nix
|
||||||
./services/hardware/hddfancontrol.nix
|
./services/hardware/hddfancontrol.nix
|
||||||
./services/hardware/illum.nix
|
./services/hardware/illum.nix
|
||||||
|
./services/hardware/inputplumber.nix
|
||||||
./services/hardware/interception-tools.nix
|
./services/hardware/interception-tools.nix
|
||||||
./services/hardware/iptsd.nix
|
./services/hardware/iptsd.nix
|
||||||
./services/hardware/irqbalance.nix
|
./services/hardware/irqbalance.nix
|
||||||
|
@ -1135,6 +1137,7 @@
|
||||||
./services/networking/miredo.nix
|
./services/networking/miredo.nix
|
||||||
./services/networking/mjpg-streamer.nix
|
./services/networking/mjpg-streamer.nix
|
||||||
./services/networking/mmsd.nix
|
./services/networking/mmsd.nix
|
||||||
|
./services/networking/modemmanager.nix
|
||||||
./services/networking/monero.nix
|
./services/networking/monero.nix
|
||||||
./services/networking/morty.nix
|
./services/networking/morty.nix
|
||||||
./services/networking/mosquitto.nix
|
./services/networking/mosquitto.nix
|
||||||
|
|
32
nixos/modules/programs/autoenv.nix
Normal file
32
nixos/modules/programs/autoenv.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.programs.autoenv;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
programs.autoenv = {
|
||||||
|
enable = lib.mkEnableOption "autoenv";
|
||||||
|
package = lib.mkPackageOption pkgs "autoenv" { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = [ pkgs.autoenv ];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
zsh.interactiveShellInit = ''
|
||||||
|
source ${cfg.package}/share/autoenv/activate.sh
|
||||||
|
'';
|
||||||
|
|
||||||
|
bash.interactiveShellInit = ''
|
||||||
|
source ${cfg.package}/share/autoenv/activate.sh
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
168
nixos/modules/services/desktops/bonsaid.nix
Normal file
168
nixos/modules/services/desktops/bonsaid.nix
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
json = pkgs.formats.json { };
|
||||||
|
transitionType = lib.types.submodule {
|
||||||
|
freeformType = json.type;
|
||||||
|
options.type = lib.mkOption {
|
||||||
|
type = lib.types.enum [
|
||||||
|
"delay"
|
||||||
|
"event"
|
||||||
|
"exec"
|
||||||
|
];
|
||||||
|
description = ''
|
||||||
|
Type of transition. Determines how bonsaid interprets the other options in this transition.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
options.command = lib.mkOption {
|
||||||
|
type = lib.types.nullOr (lib.types.listOf lib.types.str);
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Command to run when this transition is taken.
|
||||||
|
This is executed inline by `bonsaid` and blocks handling of any other events until completion.
|
||||||
|
To perform the command asynchronously, specify it like `[ "setsid" "-f" "my-command" ]`.
|
||||||
|
|
||||||
|
Only effects transitions with `type = "exec"`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
options.delay_duration = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.int;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Nanoseconds to wait after the previous state change before performing this transition.
|
||||||
|
This can be placed at the same level as a `type = "event"` transition to achieve a
|
||||||
|
timeout mechanism.
|
||||||
|
|
||||||
|
Only effects transitions with `type = "delay"`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
options.event_name = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Name of the event which should trigger this transition when received by `bonsaid`.
|
||||||
|
Events are sent to `bonsaid` by running `bonsaictl -e <event_name>`.
|
||||||
|
|
||||||
|
Only effects transitions with `type = "event"`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
options.transitions = lib.mkOption {
|
||||||
|
type = lib.types.listOf transitionType;
|
||||||
|
default = [ ];
|
||||||
|
description = ''
|
||||||
|
List of transitions out of this state.
|
||||||
|
If left empty, then this state is considered a terminal state and entering it will
|
||||||
|
trigger an immediate transition back to the root state (after processing side effects).
|
||||||
|
'';
|
||||||
|
visible = "shallow";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
cfg = config.services.bonsaid;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
meta.maintainers = [ lib.maintainers.colinsane ];
|
||||||
|
|
||||||
|
options.services.bonsaid = {
|
||||||
|
enable = lib.mkEnableOption "bonsaid";
|
||||||
|
package = lib.mkPackageOption pkgs "bonsai" { };
|
||||||
|
extraFlags = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [ ];
|
||||||
|
description = ''
|
||||||
|
Extra flags to pass to `bonsaid`, such as `[ "-v" ]` to enable verbose logging.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
settings = lib.mkOption {
|
||||||
|
type = lib.types.listOf transitionType;
|
||||||
|
description = ''
|
||||||
|
State transition definitions. See the upstream [README](https://git.sr.ht/~stacyharper/bonsai)
|
||||||
|
for extended documentation and a more complete example.
|
||||||
|
'';
|
||||||
|
example = [
|
||||||
|
{
|
||||||
|
type = "event";
|
||||||
|
event_name = "power_button_pressed";
|
||||||
|
transitions = [
|
||||||
|
{
|
||||||
|
# Hold power button for 600ms to trigger a command
|
||||||
|
type = "delay";
|
||||||
|
delay_duration = 600000000;
|
||||||
|
transitions = [
|
||||||
|
{
|
||||||
|
type = "exec";
|
||||||
|
command = [
|
||||||
|
"swaymsg"
|
||||||
|
"--"
|
||||||
|
"output"
|
||||||
|
"*"
|
||||||
|
"power"
|
||||||
|
"off"
|
||||||
|
];
|
||||||
|
# `transitions = []` marks this as a terminal state,
|
||||||
|
# so bonsai will return to the root state immediately after executing the above command.
|
||||||
|
transitions = [ ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# If the power button is released before the 600ms elapses, return to the root state.
|
||||||
|
type = "event";
|
||||||
|
event_name = "power_button_released";
|
||||||
|
transitions = [ ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
configFile = lib.mkOption {
|
||||||
|
type = lib.types.path;
|
||||||
|
description = ''
|
||||||
|
Path to a .json file specifying the state transitions.
|
||||||
|
You don't need to set this unless you prefer to provide the json file
|
||||||
|
yourself instead of using the `settings` option.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.bonsaid.configFile =
|
||||||
|
let
|
||||||
|
filterNulls =
|
||||||
|
v:
|
||||||
|
if lib.isAttrs v then
|
||||||
|
lib.mapAttrs (_: filterNulls) (lib.filterAttrs (_: a: a != null) v)
|
||||||
|
else if lib.isList v then
|
||||||
|
lib.map filterNulls (lib.filter (a: a != null) v)
|
||||||
|
else
|
||||||
|
v;
|
||||||
|
in
|
||||||
|
lib.mkDefault (json.generate "bonsai_tree.json" (filterNulls cfg.settings));
|
||||||
|
|
||||||
|
# bonsaid is controlled by bonsaictl, so place the latter in the environment by default.
|
||||||
|
# bonsaictl is typically invoked by scripts or a DE so this isn't strictly necesssary,
|
||||||
|
# but it's helpful while administering the service generally.
|
||||||
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
|
systemd.user.services.bonsaid = {
|
||||||
|
description = "Bonsai Finite State Machine daemon";
|
||||||
|
documentation = [ "https://git.sr.ht/~stacyharper/bonsai" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = lib.escapeShellArgs (
|
||||||
|
[
|
||||||
|
(lib.getExe' cfg.package "bonsaid")
|
||||||
|
"-t"
|
||||||
|
cfg.configFile
|
||||||
|
]
|
||||||
|
++ cfg.extraFlags
|
||||||
|
);
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "5s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
37
nixos/modules/services/hardware/inputplumber.nix
Normal file
37
nixos/modules/services/hardware/inputplumber.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.inputplumber;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.inputplumber = {
|
||||||
|
enable = lib.mkEnableOption "InputPlumber";
|
||||||
|
package = lib.mkPackageOption pkgs "inputplumber" { };
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
|
systemd.services.inputplumber = {
|
||||||
|
description = "InputPlumber Service";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
environment = {
|
||||||
|
XDG_DATA_DIRS = "/run/current-system/sw/share";
|
||||||
|
};
|
||||||
|
restartIfChanged = true;
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${lib.getExe cfg.package}";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "5";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta.maintainers = with lib.maintainers; [ shadowapex ];
|
||||||
|
}
|
97
nixos/modules/services/networking/modemmanager.nix
Normal file
97
nixos/modules/services/networking/modemmanager.nix
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.networking.modemmanager;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
meta = {
|
||||||
|
maintainers = lib.teams.freedesktop.members;
|
||||||
|
};
|
||||||
|
|
||||||
|
options = with lib; {
|
||||||
|
networking.modemmanager = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to use ModemManager to manage modem devices.
|
||||||
|
This is usually used by some higher layer manager such as NetworkManager
|
||||||
|
but can be used standalone especially if using a modem for non-IP
|
||||||
|
connectivity (e.g. GPS).
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkPackageOption pkgs "modemmanager" { };
|
||||||
|
|
||||||
|
fccUnlockScripts = mkOption {
|
||||||
|
type = types.listOf (
|
||||||
|
types.submodule {
|
||||||
|
options = {
|
||||||
|
id = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = "vid:pid of either the PCI or USB vendor and product ID";
|
||||||
|
};
|
||||||
|
path = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
description = "Path to the unlock script";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
default = [ ];
|
||||||
|
example = literalExpression ''[{ id = "03f0:4e1d"; path = "''${pkgs.modemmanager}/share/ModemManager/fcc-unlock.available.d/03f0:4e1d"; }]'';
|
||||||
|
description = ''
|
||||||
|
List of FCC unlock scripts to enable on the system, behaving as described in
|
||||||
|
https://modemmanager.org/docs/modemmanager/fcc-unlock/#integration-with-third-party-fcc-unlock-tools.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.etc = builtins.listToAttrs (
|
||||||
|
map (
|
||||||
|
e:
|
||||||
|
lib.nameValuePair "ModemManager/fcc-unlock.d/${e.id}" {
|
||||||
|
source = e.path;
|
||||||
|
}
|
||||||
|
) cfg.fccUnlockScripts
|
||||||
|
);
|
||||||
|
|
||||||
|
systemd.services.ModemManager = {
|
||||||
|
aliases = [ "dbus-org.freedesktop.ModemManager1.service" ];
|
||||||
|
path = lib.optionals (cfg.fccUnlockScripts != [ ]) [
|
||||||
|
pkgs.libqmi
|
||||||
|
pkgs.libmbim
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
[modem-manager]
|
||||||
|
Identity=unix-group:networkmanager
|
||||||
|
Action=org.freedesktop.ModemManager*
|
||||||
|
ResultAny=yes
|
||||||
|
ResultInactive=no
|
||||||
|
ResultActive=yes
|
||||||
|
*/
|
||||||
|
security.polkit.enable = true;
|
||||||
|
security.polkit.extraConfig = ''
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if (
|
||||||
|
subject.isInGroup("networkmanager")
|
||||||
|
&& action.id.indexOf("org.freedesktop.ModemManager") == 0
|
||||||
|
)
|
||||||
|
{ return polkit.Result.YES; }
|
||||||
|
});
|
||||||
|
'';
|
||||||
|
|
||||||
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
systemd.packages = [ cfg.package ];
|
||||||
|
services.dbus.packages = [ cfg.package ];
|
||||||
|
services.udev.packages = [ cfg.package ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,4 +1,9 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
|
@ -15,14 +20,10 @@ let
|
||||||
plugins = "keyfile";
|
plugins = "keyfile";
|
||||||
inherit (cfg) dhcp dns;
|
inherit (cfg) dhcp dns;
|
||||||
# If resolvconf is disabled that means that resolv.conf is managed by some other module.
|
# If resolvconf is disabled that means that resolv.conf is managed by some other module.
|
||||||
rc-manager =
|
rc-manager = if config.networking.resolvconf.enable then "resolvconf" else "unmanaged";
|
||||||
if config.networking.resolvconf.enable then "resolvconf"
|
|
||||||
else "unmanaged";
|
|
||||||
};
|
};
|
||||||
keyfile = {
|
keyfile = {
|
||||||
unmanaged-devices =
|
unmanaged-devices = if cfg.unmanaged == [ ] then null else lib.concatStringsSep ";" cfg.unmanaged;
|
||||||
if cfg.unmanaged == [ ] then null
|
|
||||||
else lib.concatStringsSep ";" cfg.unmanaged;
|
|
||||||
};
|
};
|
||||||
logging = {
|
logging = {
|
||||||
audit = config.security.audit.enable;
|
audit = config.security.audit.enable;
|
||||||
|
@ -43,32 +44,29 @@ let
|
||||||
ResultAny=yes
|
ResultAny=yes
|
||||||
ResultInactive=no
|
ResultInactive=no
|
||||||
ResultActive=yes
|
ResultActive=yes
|
||||||
|
|
||||||
[modem-manager]
|
|
||||||
Identity=unix-group:networkmanager
|
|
||||||
Action=org.freedesktop.ModemManager*
|
|
||||||
ResultAny=yes
|
|
||||||
ResultInactive=no
|
|
||||||
ResultActive=yes
|
|
||||||
*/
|
*/
|
||||||
polkitConf = ''
|
polkitConf = ''
|
||||||
polkit.addRule(function(action, subject) {
|
polkit.addRule(function(action, subject) {
|
||||||
if (
|
if (
|
||||||
subject.isInGroup("networkmanager")
|
subject.isInGroup("networkmanager")
|
||||||
&& (action.id.indexOf("org.freedesktop.NetworkManager.") == 0
|
&& action.id.indexOf("org.freedesktop.NetworkManager.") == 0
|
||||||
|| action.id.indexOf("org.freedesktop.ModemManager") == 0
|
)
|
||||||
))
|
|
||||||
{ return polkit.Result.YES; }
|
{ return polkit.Result.YES; }
|
||||||
});
|
});
|
||||||
'';
|
'';
|
||||||
|
|
||||||
ns = xs: pkgs.writeText "nameservers" (
|
ns = xs: pkgs.writeText "nameservers" (concatStrings (map (s: "nameserver ${s}\n") xs));
|
||||||
concatStrings (map (s: "nameserver ${s}\n") xs)
|
|
||||||
);
|
|
||||||
|
|
||||||
overrideNameserversScript = pkgs.writeScript "02overridedns" ''
|
overrideNameserversScript = pkgs.writeScript "02overridedns" ''
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
PATH=${with pkgs; makeBinPath [ gnused gnugrep coreutils ]}
|
PATH=${
|
||||||
|
with pkgs;
|
||||||
|
makeBinPath [
|
||||||
|
gnused
|
||||||
|
gnugrep
|
||||||
|
coreutils
|
||||||
|
]
|
||||||
|
}
|
||||||
tmp=$(mktemp)
|
tmp=$(mktemp)
|
||||||
sed '/nameserver /d' /etc/resolv.conf > $tmp
|
sed '/nameserver /d' /etc/resolv.conf > $tmp
|
||||||
grep 'nameserver ' /etc/resolv.conf | \
|
grep 'nameserver ' /etc/resolv.conf | \
|
||||||
|
@ -84,7 +82,15 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
macAddressOptWifi = mkOption {
|
macAddressOptWifi = mkOption {
|
||||||
type = types.either types.str (types.enum [ "permanent" "preserve" "random" "stable" "stable-ssid" ]);
|
type = types.either types.str (
|
||||||
|
types.enum [
|
||||||
|
"permanent"
|
||||||
|
"preserve"
|
||||||
|
"random"
|
||||||
|
"stable"
|
||||||
|
"stable-ssid"
|
||||||
|
]
|
||||||
|
);
|
||||||
default = "preserve";
|
default = "preserve";
|
||||||
example = "00:11:22:33:44:55";
|
example = "00:11:22:33:44:55";
|
||||||
description = ''
|
description = ''
|
||||||
|
@ -100,7 +106,14 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
macAddressOptEth = mkOption {
|
macAddressOptEth = mkOption {
|
||||||
type = types.either types.str (types.enum [ "permanent" "preserve" "random" "stable" ]);
|
type = types.either types.str (
|
||||||
|
types.enum [
|
||||||
|
"permanent"
|
||||||
|
"preserve"
|
||||||
|
"random"
|
||||||
|
"stable"
|
||||||
|
]
|
||||||
|
);
|
||||||
default = "preserve";
|
default = "preserve";
|
||||||
example = "00:11:22:33:44:55";
|
example = "00:11:22:33:44:55";
|
||||||
description = ''
|
description = ''
|
||||||
|
@ -114,9 +127,9 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
packages = [
|
packages =
|
||||||
pkgs.modemmanager
|
[
|
||||||
pkgs.networkmanager
|
cfg.package
|
||||||
]
|
]
|
||||||
++ cfg.plugins
|
++ cfg.plugins
|
||||||
++ lib.optionals (!delegateWireless && !enableIwd) [
|
++ lib.optionals (!delegateWireless && !enableIwd) [
|
||||||
|
@ -148,12 +161,18 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
package = mkPackageOption pkgs "networkmanager" { };
|
||||||
|
|
||||||
connectionConfig = mkOption {
|
connectionConfig = mkOption {
|
||||||
type = with types; attrsOf (nullOr (oneOf [
|
type =
|
||||||
|
with types;
|
||||||
|
attrsOf (
|
||||||
|
nullOr (oneOf [
|
||||||
bool
|
bool
|
||||||
int
|
int
|
||||||
str
|
str
|
||||||
]));
|
])
|
||||||
|
);
|
||||||
default = { };
|
default = { };
|
||||||
description = ''
|
description = ''
|
||||||
Configuration for the [connection] section of NetworkManager.conf.
|
Configuration for the [connection] section of NetworkManager.conf.
|
||||||
|
@ -205,9 +224,7 @@ in
|
||||||
check =
|
check =
|
||||||
p:
|
p:
|
||||||
lib.assertMsg
|
lib.assertMsg
|
||||||
(types.package.check p
|
(types.package.check p && p ? networkManagerPlugin && lib.isString p.networkManagerPlugin)
|
||||||
&& p ? networkManagerPlugin
|
|
||||||
&& lib.isString p.networkManagerPlugin)
|
|
||||||
''
|
''
|
||||||
Package ‘${p.name}’, is not a NetworkManager plug-in.
|
Package ‘${p.name}’, is not a NetworkManager plug-in.
|
||||||
Those need to have a ‘networkManagerPlugin’ attribute.
|
Those need to have a ‘networkManagerPlugin’ attribute.
|
||||||
|
@ -223,7 +240,10 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
dhcp = mkOption {
|
dhcp = mkOption {
|
||||||
type = types.enum [ "dhcpcd" "internal" ];
|
type = types.enum [
|
||||||
|
"dhcpcd"
|
||||||
|
"internal"
|
||||||
|
];
|
||||||
default = "internal";
|
default = "internal";
|
||||||
description = ''
|
description = ''
|
||||||
Which program (or internal library) should be used for DHCP.
|
Which program (or internal library) should be used for DHCP.
|
||||||
|
@ -231,7 +251,14 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
logLevel = mkOption {
|
logLevel = mkOption {
|
||||||
type = types.enum [ "OFF" "ERR" "WARN" "INFO" "DEBUG" "TRACE" ];
|
type = types.enum [
|
||||||
|
"OFF"
|
||||||
|
"ERR"
|
||||||
|
"WARN"
|
||||||
|
"INFO"
|
||||||
|
"DEBUG"
|
||||||
|
"TRACE"
|
||||||
|
];
|
||||||
default = "WARN";
|
default = "WARN";
|
||||||
description = ''
|
description = ''
|
||||||
Set the default logging verbosity level.
|
Set the default logging verbosity level.
|
||||||
|
@ -262,7 +289,10 @@ in
|
||||||
macAddress = macAddressOptWifi;
|
macAddress = macAddressOptWifi;
|
||||||
|
|
||||||
backend = mkOption {
|
backend = mkOption {
|
||||||
type = types.enum [ "wpa_supplicant" "iwd" ];
|
type = types.enum [
|
||||||
|
"wpa_supplicant"
|
||||||
|
"iwd"
|
||||||
|
];
|
||||||
default = "wpa_supplicant";
|
default = "wpa_supplicant";
|
||||||
description = ''
|
description = ''
|
||||||
Specify the Wi-Fi backend used for the device.
|
Specify the Wi-Fi backend used for the device.
|
||||||
|
@ -289,7 +319,12 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
dns = mkOption {
|
dns = mkOption {
|
||||||
type = types.enum [ "default" "dnsmasq" "systemd-resolved" "none" ];
|
type = types.enum [
|
||||||
|
"default"
|
||||||
|
"dnsmasq"
|
||||||
|
"systemd-resolved"
|
||||||
|
"none"
|
||||||
|
];
|
||||||
default = "default";
|
default = "default";
|
||||||
description = ''
|
description = ''
|
||||||
Set the DNS (`resolv.conf`) processing mode.
|
Set the DNS (`resolv.conf`) processing mode.
|
||||||
|
@ -304,7 +339,8 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
dispatcherScripts = mkOption {
|
dispatcherScripts = mkOption {
|
||||||
type = types.listOf (types.submodule {
|
type = types.listOf (
|
||||||
|
types.submodule {
|
||||||
options = {
|
options = {
|
||||||
source = mkOption {
|
source = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
|
@ -324,7 +360,8 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
}
|
||||||
|
);
|
||||||
default = [ ];
|
default = [ ];
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
[ {
|
[ {
|
||||||
|
@ -358,28 +395,10 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
fccUnlockScripts = mkOption {
|
|
||||||
type = types.listOf (types.submodule {
|
|
||||||
options = {
|
|
||||||
id = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
description = "vid:pid of either the PCI or USB vendor and product ID";
|
|
||||||
};
|
|
||||||
path = mkOption {
|
|
||||||
type = types.path;
|
|
||||||
description = "Path to the unlock script";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
});
|
|
||||||
default = [ ];
|
|
||||||
example = literalExpression ''[{ id = "03f0:4e1d"; path = "''${pkgs.modemmanager}/share/ModemManager/fcc-unlock.available.d/03f0:4e1d"; }]'';
|
|
||||||
description = ''
|
|
||||||
List of FCC unlock scripts to enable on the system, behaving as described in
|
|
||||||
https://modemmanager.org/docs/modemmanager/fcc-unlock/#integration-with-third-party-fcc-unlock-tools.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
ensureProfiles = {
|
ensureProfiles = {
|
||||||
profiles = with lib.types; mkOption {
|
profiles =
|
||||||
|
with lib.types;
|
||||||
|
mkOption {
|
||||||
type = attrsOf (submodule {
|
type = attrsOf (submodule {
|
||||||
freeformType = ini.type;
|
freeformType = ini.type;
|
||||||
|
|
||||||
|
@ -473,14 +492,13 @@ in
|
||||||
+ settings.main.no-auto-default = "*";
|
+ settings.main.no-auto-default = "*";
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
''
|
'')
|
||||||
)
|
|
||||||
(mkRemovedOptionModule [ "networking" "networkmanager" "enableFccUnlock" ] ''
|
(mkRemovedOptionModule [ "networking" "networkmanager" "enableFccUnlock" ] ''
|
||||||
This option was removed, because using bundled FCC unlock scripts is risky,
|
This option was removed, because using bundled FCC unlock scripts is risky,
|
||||||
might conflict with vendor-provided unlock scripts, and should
|
might conflict with vendor-provided unlock scripts, and should
|
||||||
be a conscious decision on a per-device basis.
|
be a conscious decision on a per-device basis.
|
||||||
Instead it's recommended to use the
|
Instead it's recommended to use the
|
||||||
`networking.networkmanager.fccUnlockScripts` option.
|
`networking.modemmanager.fccUnlockScripts` option.
|
||||||
'')
|
'')
|
||||||
(mkRemovedOptionModule [ "networking" "networkmanager" "dynamicHosts" ] ''
|
(mkRemovedOptionModule [ "networking" "networkmanager" "dynamicHosts" ] ''
|
||||||
This option was removed because allowing (multiple) regular users to
|
This option was removed because allowing (multiple) regular users to
|
||||||
|
@ -493,9 +511,12 @@ in
|
||||||
(mkRemovedOptionModule [ "networking" "networkmanager" "firewallBackend" ] ''
|
(mkRemovedOptionModule [ "networking" "networkmanager" "firewallBackend" ] ''
|
||||||
This option was removed as NixOS is now using iptables-nftables-compat even when using iptables, therefore Networkmanager now uses the nftables backend unconditionally.
|
This option was removed as NixOS is now using iptables-nftables-compat even when using iptables, therefore Networkmanager now uses the nftables backend unconditionally.
|
||||||
'')
|
'')
|
||||||
|
(mkRenamedOptionModule
|
||||||
|
[ "networking" "networkmanager" "fccUnlockScripts" ]
|
||||||
|
[ "networking" "modemmanager" "fccUnlockScripts" ]
|
||||||
|
)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
###### implementation
|
###### implementation
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -512,7 +533,8 @@ in
|
||||||
|
|
||||||
hardware.wirelessRegulatoryDatabase = true;
|
hardware.wirelessRegulatoryDatabase = true;
|
||||||
|
|
||||||
environment.etc = {
|
environment.etc =
|
||||||
|
{
|
||||||
"NetworkManager/NetworkManager.conf".source = configFile;
|
"NetworkManager/NetworkManager.conf".source = configFile;
|
||||||
|
|
||||||
# The networkmanager-l2tp plugin expects /etc/ipsec.secrets to include /etc/ipsec.d/ipsec.nm-l2tp.secrets;
|
# The networkmanager-l2tp plugin expects /etc/ipsec.secrets to include /etc/ipsec.d/ipsec.nm-l2tp.secrets;
|
||||||
|
@ -521,27 +543,28 @@ in
|
||||||
include ipsec.d/ipsec.nm-l2tp.secrets
|
include ipsec.d/ipsec.nm-l2tp.secrets
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
// builtins.listToAttrs (map
|
// builtins.listToAttrs (
|
||||||
(pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {
|
map (
|
||||||
|
pkg:
|
||||||
|
nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {
|
||||||
source = "${pkg}/lib/NetworkManager/${pkg.networkManagerPlugin}";
|
source = "${pkg}/lib/NetworkManager/${pkg.networkManagerPlugin}";
|
||||||
})
|
}
|
||||||
cfg.plugins)
|
) cfg.plugins
|
||||||
// builtins.listToAttrs (map
|
)
|
||||||
(e: nameValuePair "ModemManager/fcc-unlock.d/${e.id}" {
|
// optionalAttrs (cfg.appendNameservers != [ ] || cfg.insertNameservers != [ ]) {
|
||||||
source = e.path;
|
|
||||||
})
|
|
||||||
cfg.fccUnlockScripts)
|
|
||||||
// optionalAttrs (cfg.appendNameservers != [ ] || cfg.insertNameservers != [ ])
|
|
||||||
{
|
|
||||||
"NetworkManager/dispatcher.d/02overridedns".source = overrideNameserversScript;
|
"NetworkManager/dispatcher.d/02overridedns".source = overrideNameserversScript;
|
||||||
}
|
}
|
||||||
// listToAttrs (lib.imap1
|
// listToAttrs (
|
||||||
(i: s:
|
lib.imap1 (i: s: {
|
||||||
{
|
name = "NetworkManager/dispatcher.d/${
|
||||||
name = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
|
dispatcherTypesSubdirMap.${s.type}
|
||||||
value = { mode = "0544"; inherit (s) source; };
|
}03userscript${lib.fixedWidthNumber 4 i}";
|
||||||
})
|
value = {
|
||||||
cfg.dispatcherScripts);
|
mode = "0544";
|
||||||
|
inherit (s) source;
|
||||||
|
};
|
||||||
|
}) cfg.dispatcherScripts
|
||||||
|
);
|
||||||
|
|
||||||
environment.systemPackages = packages;
|
environment.systemPackages = packages;
|
||||||
|
|
||||||
|
@ -590,17 +613,19 @@ in
|
||||||
wantedBy = [ "network-online.target" ];
|
wantedBy = [ "network-online.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.ModemManager = {
|
|
||||||
aliases = [ "dbus-org.freedesktop.ModemManager1.service" ];
|
|
||||||
path = lib.optionals (cfg.fccUnlockScripts != []) [ pkgs.libqmi pkgs.libmbim ];
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.NetworkManager-dispatcher = {
|
systemd.services.NetworkManager-dispatcher = {
|
||||||
wantedBy = [ "network.target" ];
|
wantedBy = [ "network.target" ];
|
||||||
restartTriggers = [ configFile overrideNameserversScript ];
|
restartTriggers = [
|
||||||
|
configFile
|
||||||
|
overrideNameserversScript
|
||||||
|
];
|
||||||
|
|
||||||
# useful binaries for user-specified hooks
|
# useful binaries for user-specified hooks
|
||||||
path = [ pkgs.iproute2 pkgs.util-linux pkgs.coreutils ];
|
path = [
|
||||||
|
pkgs.iproute2
|
||||||
|
pkgs.util-linux
|
||||||
|
pkgs.coreutils
|
||||||
|
];
|
||||||
aliases = [ "dbus-org.freedesktop.nm-dispatcher.service" ];
|
aliases = [ "dbus-org.freedesktop.nm-dispatcher.service" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -609,16 +634,18 @@ in
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
before = [ "network-online.target" ];
|
before = [ "network-online.target" ];
|
||||||
after = [ "NetworkManager.service" ];
|
after = [ "NetworkManager.service" ];
|
||||||
script = let
|
script =
|
||||||
|
let
|
||||||
path = id: "/run/NetworkManager/system-connections/${id}.nmconnection";
|
path = id: "/run/NetworkManager/system-connections/${id}.nmconnection";
|
||||||
in ''
|
in
|
||||||
|
''
|
||||||
mkdir -p /run/NetworkManager/system-connections
|
mkdir -p /run/NetworkManager/system-connections
|
||||||
'' + lib.concatMapStringsSep "\n"
|
''
|
||||||
(profile: ''
|
+ lib.concatMapStringsSep "\n" (profile: ''
|
||||||
${pkgs.envsubst}/bin/envsubst -i ${ini.generate (lib.escapeShellArg profile.n) profile.v} > ${path (lib.escapeShellArg profile.n)}
|
${pkgs.envsubst}/bin/envsubst -i ${ini.generate (lib.escapeShellArg profile.n) profile.v} > ${path (lib.escapeShellArg profile.n)}
|
||||||
'') (lib.mapAttrsToList (n: v: { inherit n v; }) cfg.ensureProfiles.profiles)
|
'') (lib.mapAttrsToList (n: v: { inherit n v; }) cfg.ensureProfiles.profiles)
|
||||||
+ ''
|
+ ''
|
||||||
${pkgs.networkmanager}/bin/nmcli connection reload
|
${cfg.package}/bin/nmcli connection reload
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
EnvironmentFile = cfg.ensureProfiles.environmentFiles;
|
EnvironmentFile = cfg.ensureProfiles.environmentFiles;
|
||||||
|
@ -654,13 +681,18 @@ in
|
||||||
})
|
})
|
||||||
|
|
||||||
{
|
{
|
||||||
|
modemmanager.enable = lib.mkDefault true;
|
||||||
|
|
||||||
networkmanager.connectionConfig = {
|
networkmanager.connectionConfig = {
|
||||||
"ethernet.cloned-mac-address" = cfg.ethernet.macAddress;
|
"ethernet.cloned-mac-address" = cfg.ethernet.macAddress;
|
||||||
"wifi.cloned-mac-address" = cfg.wifi.macAddress;
|
"wifi.cloned-mac-address" = cfg.wifi.macAddress;
|
||||||
"wifi.powersave" =
|
"wifi.powersave" =
|
||||||
if cfg.wifi.powersave == null then null
|
if cfg.wifi.powersave == null then
|
||||||
else if cfg.wifi.powersave then 3
|
null
|
||||||
else 2;
|
else if cfg.wifi.powersave then
|
||||||
|
3
|
||||||
|
else
|
||||||
|
2;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -670,7 +702,8 @@ in
|
||||||
security.polkit.enable = true;
|
security.polkit.enable = true;
|
||||||
security.polkit.extraConfig = polkitConf;
|
security.polkit.extraConfig = polkitConf;
|
||||||
|
|
||||||
services.dbus.packages = packages
|
services.dbus.packages =
|
||||||
|
packages
|
||||||
++ optional cfg.enableStrongSwan pkgs.strongswanNM
|
++ optional cfg.enableStrongSwan pkgs.strongswanNM
|
||||||
++ optional (cfg.dns == "dnsmasq") pkgs.dnsmasq;
|
++ optional (cfg.dns == "dnsmasq") pkgs.dnsmasq;
|
||||||
|
|
||||||
|
|
|
@ -512,6 +512,17 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
updateDaemon = {
|
||||||
|
commandFlags = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "--quiet";
|
||||||
|
description = ''
|
||||||
|
Command-line flags passed to the update daemon.
|
||||||
|
The default --quiet flag mutes all logging, including errors.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
extraConfig = mkOption {
|
extraConfig = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
|
@ -622,7 +633,7 @@ let
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
User = "${cfg.user}";
|
User = "${cfg.user}";
|
||||||
Group = "tt_rss";
|
Group = "tt_rss";
|
||||||
ExecStart = "${phpPackage}/bin/php ${cfg.root}/www/update.php --daemon --quiet";
|
ExecStart = "${phpPackage}/bin/php ${cfg.root}/www/update.php --daemon ${cfg.updateDaemon.commandFlags}";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartSec = "60";
|
RestartSec = "60";
|
||||||
SyslogIdentifier = "tt-rss";
|
SyslogIdentifier = "tt-rss";
|
||||||
|
|
|
@ -1095,6 +1095,7 @@ in {
|
||||||
trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {};
|
trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {};
|
||||||
tsm-client-gui = handleTest ./tsm-client-gui.nix {};
|
tsm-client-gui = handleTest ./tsm-client-gui.nix {};
|
||||||
ttyd = handleTest ./web-servers/ttyd.nix {};
|
ttyd = handleTest ./web-servers/ttyd.nix {};
|
||||||
|
tt-rss = handleTest ./web-apps/tt-rss.nix {};
|
||||||
txredisapi = handleTest ./txredisapi.nix {};
|
txredisapi = handleTest ./txredisapi.nix {};
|
||||||
tuptime = handleTest ./tuptime.nix {};
|
tuptime = handleTest ./tuptime.nix {};
|
||||||
turbovnc-headless-server = handleTest ./turbovnc-headless-server.nix {};
|
turbovnc-headless-server = handleTest ./turbovnc-headless-server.nix {};
|
||||||
|
|
22
nixos/tests/web-apps/tt-rss.nix
Normal file
22
nixos/tests/web-apps/tt-rss.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import ../make-test-python.nix (
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
name = "tt-rss-nixos";
|
||||||
|
|
||||||
|
nodes.machine =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
services.tt-rss = {
|
||||||
|
enable = true;
|
||||||
|
virtualHost = "localhost";
|
||||||
|
selfUrlPath = "http://localhost/";
|
||||||
|
singleUserMode = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
machine.wait_for_unit("tt-rss.service")
|
||||||
|
machine.succeed("curl -sSfL http://localhost/ | grep 'Tiny Tiny RSS'")
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
)
|
|
@ -60,15 +60,7 @@ rustPlatform.buildRustPackage rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
buildType = "production";
|
buildType = "production";
|
||||||
|
buildAndTestSubdir = "polkadot";
|
||||||
cargoBuildFlags = [
|
|
||||||
"-p"
|
|
||||||
"polkadot"
|
|
||||||
"-p"
|
|
||||||
"polkadot-omni-node"
|
|
||||||
"-p"
|
|
||||||
"polkadot-parachain-bin"
|
|
||||||
];
|
|
||||||
|
|
||||||
# NOTE: tests currently fail to compile due to an issue with cargo-auditable
|
# NOTE: tests currently fail to compile due to an issue with cargo-auditable
|
||||||
# and resolution of features flags, potentially related to this:
|
# and resolution of features flags, potentially related to this:
|
||||||
|
@ -100,8 +92,8 @@ rustPlatform.buildRustPackage rec {
|
||||||
ROCKSDB_LIB_DIR = "${rocksdb}/lib";
|
ROCKSDB_LIB_DIR = "${rocksdb}/lib";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Polkadot Node Implementation";
|
description = "Implementation of a https://polkadot.network node in Rust based on the Substrate framework";
|
||||||
homepage = "https://polkadot.network";
|
homepage = "https://github.com/paritytech/polkadot-sdk";
|
||||||
license = licenses.gpl3Only;
|
license = licenses.gpl3Only;
|
||||||
maintainers = with maintainers; [
|
maintainers = with maintainers; [
|
||||||
akru
|
akru
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
|
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "edraw";
|
pname = "edraw";
|
||||||
version = "1.2.0-unstable-2024-10-04";
|
version = "1.2.0-unstable-2024-12-18";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "misohena";
|
owner = "misohena";
|
||||||
repo = "el-easydraw";
|
repo = "el-easydraw";
|
||||||
rev = "ad740d87e768052b0ef5b5e7f0822c7ac1b238fb";
|
rev = "1c46469d0ea3642958eaf7cea1016fcf05b4daec";
|
||||||
hash = "sha256-xdyDikE8fUQ12Ra5j5lQUHVLKpTYtvfn1DosusQt61Q=";
|
hash = "sha256-Z7LPC112FXHtDop1HXPnR6S+cSqfEW1HuYS8YD/qM+c=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedUserEnvPkgs = [ gzip ];
|
propagatedUserEnvPkgs = [ gzip ];
|
||||||
|
|
|
@ -10,16 +10,16 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "aiken";
|
pname = "aiken";
|
||||||
version = "1.1.7";
|
version = "1.1.9";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "aiken-lang";
|
owner = "aiken-lang";
|
||||||
repo = "aiken";
|
repo = "aiken";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-dcJrLzdj4YK5CZ0jk+gqiqIj1ngq7443y8FVo6ajaz8=";
|
hash = "sha256-Zu7t6DmQ9A7prv9ybhDgVPVisM0Dnf5CAXIXJHHEBGs=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-KtlqV/I9zqTlMStKQX7o14NuSOLf+dDoi/QJqirxqHY=";
|
cargoHash = "sha256-AVLoGeq+Kld5iLndobcylyS1HAz0FryunTFiR8pR1f4=";
|
||||||
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
[ openssl ]
|
[ openssl ]
|
||||||
|
|
35
pkgs/by-name/au/autoenv/package.nix
Normal file
35
pkgs/by-name/au/autoenv/package.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
lib,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "autoenv";
|
||||||
|
version = "0-unstable-2024-10-16";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "hyperupcall";
|
||||||
|
repo = "autoenv";
|
||||||
|
rev = "90241f182d6a7c96e9de8a25c1eccaf2a2d1b43a";
|
||||||
|
hash = "sha256-vZrsMPhuu+xPVAww04nKyoOl7k0upvpIaxeMrCikDio=";
|
||||||
|
};
|
||||||
|
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/share
|
||||||
|
cp -R $src $out/share/autoenv
|
||||||
|
chmod +x $out/share/autoenv
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Per-directory shell environments sourced from .env file";
|
||||||
|
homepage = "https://github.com/hyperupcall/autoenv";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
platforms = lib.platforms.all;
|
||||||
|
maintainers = with lib.maintainers; [ clebs ];
|
||||||
|
};
|
||||||
|
})
|
|
@ -35,6 +35,7 @@ python.pkgs.buildPythonApplication rec {
|
||||||
flask-limiter
|
flask-limiter
|
||||||
flask-login
|
flask-login
|
||||||
flask-principal
|
flask-principal
|
||||||
|
flask-simpleldap
|
||||||
flask-wtf
|
flask-wtf
|
||||||
iso-639
|
iso-639
|
||||||
jsonschema
|
jsonschema
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
stdenv,
|
stdenv,
|
||||||
fetchFromGitLab,
|
fetchFromGitLab,
|
||||||
meson,
|
meson,
|
||||||
|
mesonEmulatorHook,
|
||||||
ninja,
|
ninja,
|
||||||
pkg-config,
|
pkg-config,
|
||||||
libadwaita,
|
libadwaita,
|
||||||
|
@ -51,7 +52,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
"devdoc"
|
"devdoc"
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs =
|
||||||
|
[
|
||||||
meson
|
meson
|
||||||
ninja
|
ninja
|
||||||
pkg-config
|
pkg-config
|
||||||
|
@ -63,6 +65,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
docbook-xsl-nons
|
docbook-xsl-nons
|
||||||
docbook_xml_dtd_43
|
docbook_xml_dtd_43
|
||||||
docutils
|
docutils
|
||||||
|
]
|
||||||
|
++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
|
||||||
|
mesonEmulatorHook
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "cargo-nextest";
|
pname = "cargo-nextest";
|
||||||
version = "0.9.82";
|
version = "0.9.87";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "nextest-rs";
|
owner = "nextest-rs";
|
||||||
repo = "nextest";
|
repo = "nextest";
|
||||||
rev = "cargo-nextest-${version}";
|
rev = "cargo-nextest-${version}";
|
||||||
hash = "sha256-dtZGTKC9C9akjcD56I2iafPnPEd5MKgoCjB0Rkc53o4=";
|
hash = "sha256-J+84FZfrbv6jp2T9cYgodLZ+TgIAht+uJSVi5ULDGBU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-3V9o4DmGG4gkqrRfZkcKTJe2Ld2ON9Ne2XJMOVUeFaA=";
|
cargoHash = "sha256-eq+COE9UWDTHZK6dlNqGuoJMUKCNyP5UpAcpk0qAUJI=";
|
||||||
|
|
||||||
cargoBuildFlags = [ "-p" "cargo-nextest" ];
|
cargoBuildFlags = [ "-p" "cargo-nextest" ];
|
||||||
cargoTestFlags = [ "-p" "cargo-nextest" ];
|
cargoTestFlags = [ "-p" "cargo-nextest" ];
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
pkg-config,
|
pkg-config,
|
||||||
oniguruma,
|
oniguruma,
|
||||||
stdenv,
|
stdenv,
|
||||||
apple-sdk_11,
|
|
||||||
git,
|
git,
|
||||||
|
zlib,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
|
@ -33,7 +33,7 @@ rustPlatform.buildRustPackage rec {
|
||||||
oniguruma
|
oniguruma
|
||||||
]
|
]
|
||||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
apple-sdk_11
|
zlib
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeCheckInputs = [ git ];
|
nativeCheckInputs = [ git ];
|
||||||
|
|
29
pkgs/by-name/es/esp-generate/package.nix
Normal file
29
pkgs/by-name/es/esp-generate/package.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
fetchFromGitHub,
|
||||||
|
rustPlatform,
|
||||||
|
}:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "esp-generate";
|
||||||
|
version = "0.1.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "esp-rs";
|
||||||
|
repo = "esp-generate";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-vfHORu0C3vK7a9jv1Wj+XjqM7mR8/t0N4x3hfARdxaw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoHash = "sha256-hYgEZvRXXhgzuNuSu4ytrlWDwlVYX6R46agu+BxrbEo=";
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Template generation tool to create no_std applications targeting Espressif's chips";
|
||||||
|
homepage = "https://github.com/esp-rs/esp-generate";
|
||||||
|
license = with lib.licenses; [
|
||||||
|
mit # or
|
||||||
|
asl20
|
||||||
|
];
|
||||||
|
maintainers = [ lib.maintainers.eymeric ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -3,7 +3,6 @@
|
||||||
stdenv,
|
stdenv,
|
||||||
fetchurl,
|
fetchurl,
|
||||||
boost,
|
boost,
|
||||||
gfortran,
|
|
||||||
lhapdf,
|
lhapdf,
|
||||||
ncurses,
|
ncurses,
|
||||||
perl,
|
perl,
|
||||||
|
@ -35,23 +34,26 @@ stdenv.mkDerivation rec {
|
||||||
./yoda2_support.patch
|
./yoda2_support.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
lhapdf # lhapdf-config
|
||||||
|
yoda # yoda-config
|
||||||
|
] ++ lib.optional withPython python;
|
||||||
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
[
|
[
|
||||||
boost
|
boost
|
||||||
gfortran
|
|
||||||
gfortran.cc.lib
|
|
||||||
lhapdf
|
lhapdf
|
||||||
yoda
|
yoda
|
||||||
]
|
]
|
||||||
++ lib.optional withPython python
|
++ lib.optional withPython python
|
||||||
++ lib.optional (withPython && python.isPy3k) ncurses;
|
++ lib.optional (withPython && python.isPy3k) ncurses;
|
||||||
|
|
||||||
|
propagatedNativeBuildInputs = lib.optional withPython [ swig ];
|
||||||
propagatedBuildInputs =
|
propagatedBuildInputs =
|
||||||
[
|
[
|
||||||
zlib
|
zlib
|
||||||
]
|
]
|
||||||
++ lib.optional withPython [
|
++ lib.optional withPython [
|
||||||
swig
|
|
||||||
python.pkgs.distutils
|
python.pkgs.distutils
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -68,6 +70,8 @@ stdenv.mkDerivation rec {
|
||||||
"--with-yoda=${yoda}"
|
"--with-yoda=${yoda}"
|
||||||
] ++ lib.optional withPython "--enable-pyext";
|
] ++ lib.optional withPython "--enable-pyext";
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
|
@ -18,6 +18,8 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
buildInputs = [ perl ];
|
buildInputs = [ perl ];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
|
@ -31,9 +33,15 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
|
nativeCheckInputs = [
|
||||||
|
perl
|
||||||
|
];
|
||||||
|
|
||||||
checkPhase = ''
|
checkPhase = ''
|
||||||
patchShebangs ./test.sh
|
runHook preCheck
|
||||||
|
patchShebangs --build ./test.sh
|
||||||
./test.sh
|
./test.sh
|
||||||
|
runHook postCheck
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -56,12 +56,10 @@ stdenv.mkDerivation rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
appstream-glib
|
|
||||||
desktop-file-utils
|
desktop-file-utils
|
||||||
gettext
|
gettext
|
||||||
gobject-introspection
|
gobject-introspection
|
||||||
itstool
|
itstool
|
||||||
libxml2
|
|
||||||
meson
|
meson
|
||||||
ninja
|
ninja
|
||||||
pkg-config
|
pkg-config
|
||||||
|
@ -72,6 +70,7 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
adwaita-icon-theme
|
adwaita-icon-theme
|
||||||
|
appstream-glib
|
||||||
enchant2
|
enchant2
|
||||||
folks
|
folks
|
||||||
gcr
|
gcr
|
||||||
|
@ -91,6 +90,7 @@ stdenv.mkDerivation rec {
|
||||||
libsecret
|
libsecret
|
||||||
libunwind
|
libunwind
|
||||||
libstemmer
|
libstemmer
|
||||||
|
libxml2
|
||||||
libytnef
|
libytnef
|
||||||
sqlite
|
sqlite
|
||||||
webkitgtk_4_1
|
webkitgtk_4_1
|
||||||
|
@ -109,6 +109,8 @@ stdenv.mkDerivation rec {
|
||||||
"-Dcontractor=enabled" # install the contractor file (Pantheon specific)
|
"-Dcontractor=enabled" # install the contractor file (Pantheon specific)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
# NOTE: Remove `build-auxyaml_to_json.py` when no longer needed, see:
|
# NOTE: Remove `build-auxyaml_to_json.py` when no longer needed, see:
|
||||||
# https://gitlab.gnome.org/GNOME/geary/commit/f7f72143e0f00ca5e0e6a798691805c53976ae31#0cc1139e3347f573ae1feee5b73dbc8a8a21fcfa
|
# https://gitlab.gnome.org/GNOME/geary/commit/f7f72143e0f00ca5e0e6a798691805c53976ae31#0cc1139e3347f573ae1feee5b73dbc8a8a21fcfa
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|
136
pkgs/by-name/gl/glpi-agent/package.nix
Normal file
136
pkgs/by-name/gl/glpi-agent/package.nix
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
perlPackages,
|
||||||
|
nix,
|
||||||
|
dmidecode,
|
||||||
|
pciutils,
|
||||||
|
usbutils,
|
||||||
|
iproute2,
|
||||||
|
nettools,
|
||||||
|
fetchFromGitHub,
|
||||||
|
makeWrapper,
|
||||||
|
versionCheckHook,
|
||||||
|
nix-update-script,
|
||||||
|
}:
|
||||||
|
|
||||||
|
perlPackages.buildPerlPackage rec {
|
||||||
|
pname = "glpi-agent";
|
||||||
|
version = "1.11";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "glpi-project";
|
||||||
|
repo = "glpi-agent";
|
||||||
|
tag = version;
|
||||||
|
hash = "sha256-WdQ+/ZnMCRqLZK64oJNoR9dtMPq+CghsA8NUwt3EpjA=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
patchShebangs bin
|
||||||
|
|
||||||
|
substituteInPlace lib/GLPI/Agent/Tools/Linux.pm \
|
||||||
|
--replace-fail "/sbin/ip" $"{iproute2}/sbin/ip"
|
||||||
|
substituteInPlace lib/GLPI/Agent/Task/Inventory/Linux/Networks.pm \
|
||||||
|
--replace-fail "/sbin/ip" "${iproute2}/sbin/ip"
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
buildInputs = (
|
||||||
|
with perlPackages;
|
||||||
|
[
|
||||||
|
CGI
|
||||||
|
DataStructureUtil
|
||||||
|
FileCopyRecursive
|
||||||
|
HTTPProxy
|
||||||
|
HTTPServerSimple
|
||||||
|
HTTPServerSimpleAuthen
|
||||||
|
IOCapture
|
||||||
|
IOSocketSSL
|
||||||
|
IPCRun
|
||||||
|
JSON
|
||||||
|
LWPProtocolHttps
|
||||||
|
ModuleInstall
|
||||||
|
NetSNMP
|
||||||
|
TestCompile
|
||||||
|
TestDeep
|
||||||
|
TestException
|
||||||
|
TestMockModule
|
||||||
|
TestMockObject
|
||||||
|
TestNoWarnings
|
||||||
|
CpanelJSONXS
|
||||||
|
XMLLibXML
|
||||||
|
NetPing
|
||||||
|
ParallelForkManager
|
||||||
|
DigestSHA1
|
||||||
|
CryptDES
|
||||||
|
FileCopyRecursive
|
||||||
|
URIEscapeXS
|
||||||
|
DateTime
|
||||||
|
DataUUID
|
||||||
|
URI
|
||||||
|
HTTPDaemon
|
||||||
|
YAML
|
||||||
|
IOCompress
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
propagatedBuildInputs = with perlPackages; [
|
||||||
|
FileWhich
|
||||||
|
LWP
|
||||||
|
NetIP
|
||||||
|
TextTemplate
|
||||||
|
UNIVERSALrequire
|
||||||
|
XMLTreePP
|
||||||
|
CompressRawZlib
|
||||||
|
HTTPDaemon
|
||||||
|
ProcDaemon
|
||||||
|
ProcPIDFile
|
||||||
|
];
|
||||||
|
|
||||||
|
# Test fails due to "Argument list too long"
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
|
||||||
|
cp -r bin $out
|
||||||
|
cp -r lib $out
|
||||||
|
cp -r share $out
|
||||||
|
|
||||||
|
for cur in $out/bin/*; do
|
||||||
|
if [ -x "$cur" ]; then
|
||||||
|
sed -e "s|./lib|$out/lib|" -i "$cur"
|
||||||
|
wrapProgram "$cur" --prefix PATH : ${
|
||||||
|
lib.makeBinPath [
|
||||||
|
nix
|
||||||
|
dmidecode
|
||||||
|
pciutils
|
||||||
|
usbutils
|
||||||
|
nettools
|
||||||
|
iproute2
|
||||||
|
]
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
outputs = [ "out" ];
|
||||||
|
|
||||||
|
nativeInstallCheckInputs = [
|
||||||
|
versionCheckHook
|
||||||
|
];
|
||||||
|
versionCheckProgramArg = [ "--version" ];
|
||||||
|
doInstallCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
updateScript = nix-update-script { };
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "GLPI unified Agent for UNIX, Linux, Windows and MacOSX";
|
||||||
|
homepage = "https://glpi-project.org/";
|
||||||
|
changelog = "https://github.com/glpi-project/glpi-agent/releases/tag/${src.tag}";
|
||||||
|
license = lib.licenses.gpl2Plus;
|
||||||
|
maintainers = with lib.maintainers; [ liberodark ];
|
||||||
|
mainProgram = "glpi-agent";
|
||||||
|
};
|
||||||
|
}
|
|
@ -9,15 +9,15 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "goperf";
|
pname = "goperf";
|
||||||
version = "0-unstable-2024-11-18";
|
version = "0-unstable-2024-12-04";
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://go.googlesource.com/perf";
|
url = "https://go.googlesource.com/perf";
|
||||||
rev = "34caac8501763e3ea700ee019bf2c29671a30c55";
|
rev = "711ff2ab72314f5a878a356d9ff7ab8460de731f";
|
||||||
hash = "sha256-b46zDtBlNpVMTwXTL9sYSpfEVJ87P2ZRQ7MVhOI0r/s=";
|
hash = "sha256-T0LHlO9ObVJ68pERkY+6eJCxY+Lj9eHvOxlCRevwbuE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-5cGgUTruCdfDhvLxXzl5gg2BtAC8HU7ZBL7Niw++HZ0=";
|
vendorHash = "sha256-OrrciJqJLTMM+yF9SD/eRucwOrfcZuuyR+xE6+DlYpo=";
|
||||||
|
|
||||||
passthru.updateScript = writeShellScript "update-goperf" ''
|
passthru.updateScript = writeShellScript "update-goperf" ''
|
||||||
export UPDATE_NIX_ATTR_PATH=goperf
|
export UPDATE_NIX_ATTR_PATH=goperf
|
||||||
|
|
32
pkgs/by-name/ho/hosts-bl/package.nix
Normal file
32
pkgs/by-name/ho/hosts-bl/package.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
buildGoModule,
|
||||||
|
fetchFromGitHub,
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "hosts-bl";
|
||||||
|
version = "0-unstable-2024-11-17";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ScriptTiger";
|
||||||
|
repo = "Hosts-BL";
|
||||||
|
rev = "b3ac0a50fce8e714e754a17e6a11f8709386782c";
|
||||||
|
sha256 = "sha256-w+4dEWwFMjBbeJPOqMrzLBBzPYh/V5SfV2BMrI0p3nw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
go mod init github.com/ScriptTiger/Hosts-BL
|
||||||
|
'';
|
||||||
|
|
||||||
|
vendorHash = null;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/ScriptTiger/Hosts-BL";
|
||||||
|
description = "Simple tool to handle hosts file black lists";
|
||||||
|
mainProgram = "Hosts-BL";
|
||||||
|
maintainers = [ lib.maintainers.puffnfresh ];
|
||||||
|
platforms = lib.platforms.unix;
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
};
|
||||||
|
}
|
|
@ -23,6 +23,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
hash = "sha256-SVkcePzX9PAlWsPSGBaxiNFCouiQmGOezhMo0+zhDIQ=";
|
hash = "sha256-SVkcePzX9PAlWsPSGBaxiNFCouiQmGOezhMo0+zhDIQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
# hyprwayland-scanner is not required at runtime
|
||||||
|
substituteInPlace CMakeLists.txt --replace-fail "hyprwayland-scanner>=0.4.0" ""
|
||||||
|
'';
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
cmake
|
cmake
|
||||||
pkg-config
|
pkg-config
|
||||||
|
@ -37,6 +42,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
wayland-scanner
|
wayland-scanner
|
||||||
];
|
];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
updateScript = nix-update-script { };
|
updateScript = nix-update-script { };
|
||||||
};
|
};
|
||||||
|
|
48
pkgs/by-name/in/inputplumber/package.nix
Normal file
48
pkgs/by-name/in/inputplumber/package.nix
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
rustPlatform,
|
||||||
|
fetchFromGitHub,
|
||||||
|
pkg-config,
|
||||||
|
udev,
|
||||||
|
libiio,
|
||||||
|
libevdev,
|
||||||
|
}:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "inputplumber";
|
||||||
|
version = "0.39.2";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ShadowBlip";
|
||||||
|
repo = "InputPlumber";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-Glq7iJ1AHy99AGXYg5P3wAd3kAMJnt5P2vZzyn7qBY4=";
|
||||||
|
};
|
||||||
|
|
||||||
|
useFetchCargoVendor = true;
|
||||||
|
cargoHash = "sha256-pcbW/Od5f+hFCrVpH2yioq+qCmlZ1m3TbUc6rBkYCEs=";
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkg-config
|
||||||
|
rustPlatform.bindgenHook
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
udev
|
||||||
|
libevdev
|
||||||
|
libiio
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
cp -r rootfs/usr/* $out/
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Open source input router and remapper daemon for Linux";
|
||||||
|
homepage = "https://github.com/ShadowBlip/InputPlumber";
|
||||||
|
license = lib.licenses.gpl3Plus;
|
||||||
|
changelog = "https://github.com/ShadowBlip/InputPlumber/releases/tag/v${version}";
|
||||||
|
maintainers = with lib.maintainers; [ shadowapex ];
|
||||||
|
mainProgram = "inputplumber";
|
||||||
|
};
|
||||||
|
}
|
|
@ -8,18 +8,19 @@
|
||||||
}:
|
}:
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
pname = "labelle";
|
pname = "labelle";
|
||||||
version = "1.2.3";
|
version = "1.3.2";
|
||||||
pyproject = true;
|
pyproject = true;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "labelle-org";
|
owner = "labelle-org";
|
||||||
repo = "labelle";
|
repo = "labelle";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-nGWffQAXlnKiWBUnSo/IKGdWsLdwLr9N4jAURcVGfj8=";
|
hash = "sha256-+aRq+zwnoHy+kXerFCw1b46OHmWDDpyOiBRu4IvYAQg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
sed -i 's/hatch-vcs >=0.3.0,<0.4/hatch-vcs >=0.3.0/' pyproject.toml
|
substituteInPlace pyproject.toml --replace-fail "hatch-vcs >=0.3.0,<0.4" "hatch-vcs >=0.3.0"
|
||||||
|
substituteInPlace pyproject.toml --replace-fail "Pillow>=8.1.2,<11" "Pillow>=8.1.2"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildInputs = [ qt6.qtwayland ];
|
buildInputs = [ qt6.qtwayland ];
|
||||||
|
@ -27,6 +28,7 @@ python3Packages.buildPythonApplication rec {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
qt6.wrapQtAppsHook
|
qt6.wrapQtAppsHook
|
||||||
python3Packages.hatchling
|
python3Packages.hatchling
|
||||||
|
python3Packages.hatch-fancy-pypi-readme
|
||||||
python3Packages.hatch-vcs
|
python3Packages.hatch-vcs
|
||||||
copyDesktopItems
|
copyDesktopItems
|
||||||
];
|
];
|
||||||
|
|
74
pkgs/by-name/mq/mqttx-cli/package.nix
Normal file
74
pkgs/by-name/mq/mqttx-cli/package.nix
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
fetchFromGitHub,
|
||||||
|
fetchYarnDeps,
|
||||||
|
fetchpatch,
|
||||||
|
lib,
|
||||||
|
mqttx-cli,
|
||||||
|
nodejs,
|
||||||
|
stdenv,
|
||||||
|
testers,
|
||||||
|
yarnConfigHook,
|
||||||
|
yarnInstallHook,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "mqttx-cli";
|
||||||
|
version = "1.11.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "emqx";
|
||||||
|
repo = "MQTTX";
|
||||||
|
rev = "refs/tags/v${finalAttrs.version}";
|
||||||
|
hash = "sha256-IPIiSav6MPJmzetBgVw9fLGPjJ+JKS3oWMEfCJmEY84=";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# moves @faker-js/faker from devDependencies to dependencies
|
||||||
|
# because the final package depends on it
|
||||||
|
# https://github.com/emqx/MQTTX/pull/1801
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/emqx/MQTTX/commit/3d89c3a08477e9e2b5d83f2a222ceaa8c08e50ce.patch";
|
||||||
|
hash = "sha256-Rd6YpGHsvAYD7/XCJq6dgvGeKfOiLh7IUQFr/AQz0mY=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
yarnOfflineCache = fetchYarnDeps {
|
||||||
|
yarnLock = "${finalAttrs.src}/cli/yarn.lock";
|
||||||
|
hash = "sha256-vwPwSE6adxM1gkdsJBq3LH2eXze9yXADvnM90LsKjjo=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
nodejs
|
||||||
|
yarnConfigHook
|
||||||
|
yarnInstallHook
|
||||||
|
];
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
cd cli
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Using custom build script instead of `yarnBuildHook`
|
||||||
|
# because it needs `--ignore-engines` before `build`.
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
yarn --offline --ignore-engines build
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
# rename binary so it does not conflict with the desktop app
|
||||||
|
mv $out/bin/mqttx $out/bin/mqttx-cli
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.tests.version = testers.testVersion { package = mqttx-cli; };
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "MQTTX Command Line Tools";
|
||||||
|
homepage = "https://mqttx.app/";
|
||||||
|
changelog = "https://mqttx.app/changelogs/v${finalAttrs.version}";
|
||||||
|
license = lib.licenses.asl20;
|
||||||
|
maintainers = with lib.maintainers; [ pineapplehunter ];
|
||||||
|
platforms = lib.platforms.all;
|
||||||
|
mainProgram = "mqttx-cli";
|
||||||
|
};
|
||||||
|
})
|
36
pkgs/by-name/na/nanovna-qt/fix-build.patch
Normal file
36
pkgs/by-name/na/nanovna-qt/fix-build.patch
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
diff --git a/libxavna/xavna_mock_ui/xavna_mock_ui.H b/libxavna/xavna_mock_ui/xavna_mock_ui.H
|
||||||
|
index 333f9ed..819a019 100644
|
||||||
|
--- a/libxavna/xavna_mock_ui/xavna_mock_ui.H
|
||||||
|
+++ b/libxavna/xavna_mock_ui/xavna_mock_ui.H
|
||||||
|
@@ -2,6 +2,7 @@
|
||||||
|
#define XAVNA_MOCK_UI_H
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
+#include <string>
|
||||||
|
using namespace std;
|
||||||
|
typedef function<void(string dut_name, double cableLen1, double cableLen2)> xavna_ui_changed_cb;
|
||||||
|
|
||||||
|
diff --git a/vna_qt/firmwareupdater.H b/vna_qt/firmwareupdater.H
|
||||||
|
index 7654211..8b61dfb 100644
|
||||||
|
--- a/vna_qt/firmwareupdater.H
|
||||||
|
+++ b/vna_qt/firmwareupdater.H
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
#include <string>
|
||||||
|
#include <functional>
|
||||||
|
#include <pthread.h>
|
||||||
|
+#include <cstdint>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class FirmwareUpdater
|
||||||
|
diff --git a/vna_qt/polarview.C b/vna_qt/polarview.C
|
||||||
|
index 8bde6e3..5800463 100644
|
||||||
|
--- a/vna_qt/polarview.C
|
||||||
|
+++ b/vna_qt/polarview.C
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
#include <cmath>
|
||||||
|
#include <QPaintEvent>
|
||||||
|
#include <QPainter>
|
||||||
|
+#include <QPainterPath>
|
||||||
|
PolarView::PolarView(QWidget *parent) : QWidget(parent)
|
||||||
|
{
|
||||||
|
|
78
pkgs/by-name/na/nanovna-qt/package.nix
Normal file
78
pkgs/by-name/na/nanovna-qt/package.nix
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
autoreconfHook,
|
||||||
|
libtool,
|
||||||
|
fftw,
|
||||||
|
eigen,
|
||||||
|
qt5,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "nanovna-qt";
|
||||||
|
# 20200507 dropped support for NanoVNA V2.2
|
||||||
|
version = "20200403";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "nanovna-v2";
|
||||||
|
repo = "NanoVNA-QT";
|
||||||
|
rev = version;
|
||||||
|
hash = "sha256-0nRpjLglCog9e4bSkaNSwjrwmLwut3Ykr3AaYZCaMEs=";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [ ./fix-build.patch ];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoreconfHook
|
||||||
|
libtool
|
||||||
|
qt5.wrapQtAppsHook
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
fftw
|
||||||
|
eigen
|
||||||
|
qt5.qtbase
|
||||||
|
qt5.qtcharts
|
||||||
|
];
|
||||||
|
|
||||||
|
autoreconfFlags = [ "--install" ];
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
pushd libxavna/xavna_mock_ui/
|
||||||
|
qmake
|
||||||
|
make
|
||||||
|
popd
|
||||||
|
pushd vna_qt/
|
||||||
|
qmake
|
||||||
|
make
|
||||||
|
popd
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
install -Dm555 vna_qt/vna_qt -t $out/bin/
|
||||||
|
install -Dm555 libxavna/.libs/libxavna.so.0.0.0 -t $out/lib/
|
||||||
|
ln -s libxavna.so.0.0.0 $out/lib/libxavna.so.0
|
||||||
|
ln -s libxavna.so.0.0.0 $out/lib/libxavna.so
|
||||||
|
install -Dm555 libxavna/xavna_mock_ui/libxavna_mock_ui.so.1.0.0 -t $out/lib/
|
||||||
|
ln -s libxavna_mock_ui.so.1.0.0 $out/lib/libxavna_mock_ui.so.1.0
|
||||||
|
ln -s libxavna_mock_ui.so.1.0.0 $out/lib/libxavna_mock_ui.so.1
|
||||||
|
ln -s libxavna_mock_ui.so.1.0.0 $out/lib/libxavna_mock_ui.so
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
preFixup = ''
|
||||||
|
qtWrapperArgs+=(--prefix LD_LIBRARY_PATH : "$out/lib")
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "PC GUI software for NanoVNA V2 series";
|
||||||
|
homepage = "https://nanorfe.com/nanovna-v2.html";
|
||||||
|
mainProgram = "vna_qt";
|
||||||
|
license = lib.licenses.gpl2Only;
|
||||||
|
changelog = "https://github.com/nanovna-v2/NanoVNA-QT/releases/tag/v${version}";
|
||||||
|
maintainers = with lib.maintainers; [ chuangzhu ];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
|
@ -276,7 +276,10 @@ def reexec(
|
||||||
build_attr = BuildAttr.from_arg(args.attr, args.file)
|
build_attr = BuildAttr.from_arg(args.attr, args.file)
|
||||||
drv = nix.build(attr, build_attr, **build_flags, no_out_link=True)
|
drv = nix.build(attr, build_attr, **build_flags, no_out_link=True)
|
||||||
except CalledProcessError:
|
except CalledProcessError:
|
||||||
logger.warning("could not build a newer version of nixos-rebuild")
|
logger.warning(
|
||||||
|
"could not build a newer version of nixos-rebuild, "
|
||||||
|
+ "using current version"
|
||||||
|
)
|
||||||
|
|
||||||
if drv:
|
if drv:
|
||||||
new = drv / f"bin/{EXECUTABLE}"
|
new = drv / f"bin/{EXECUTABLE}"
|
||||||
|
@ -284,14 +287,27 @@ def reexec(
|
||||||
if new != current:
|
if new != current:
|
||||||
logging.debug(
|
logging.debug(
|
||||||
"detected newer version of script, re-exec'ing, current=%s, new=%s",
|
"detected newer version of script, re-exec'ing, current=%s, new=%s",
|
||||||
argv[0],
|
current,
|
||||||
new,
|
new,
|
||||||
)
|
)
|
||||||
# Manually call clean-up functions since os.execve() will replace
|
# Manually call clean-up functions since os.execve() will replace
|
||||||
# the process immediately
|
# the process immediately
|
||||||
cleanup_ssh()
|
cleanup_ssh()
|
||||||
tmpdir.TMPDIR.cleanup()
|
tmpdir.TMPDIR.cleanup()
|
||||||
|
try:
|
||||||
os.execve(new, argv, os.environ | {"_NIXOS_REBUILD_REEXEC": "1"})
|
os.execve(new, argv, os.environ | {"_NIXOS_REBUILD_REEXEC": "1"})
|
||||||
|
except Exception:
|
||||||
|
# Possible errors that we can have here:
|
||||||
|
# - Missing the binary
|
||||||
|
# - Exec format error (e.g.: another OS/CPU arch)
|
||||||
|
logger.warning(
|
||||||
|
"could not re-exec in a newer version of nixos-rebuild, "
|
||||||
|
+ "using current version"
|
||||||
|
)
|
||||||
|
logger.debug("re-exec exception", exc_info=True)
|
||||||
|
# We already run clean-up, let's re-exec in the current version
|
||||||
|
# to avoid issues
|
||||||
|
os.execve(current, argv, os.environ | {"_NIXOS_REBUILD_REEXEC": "1"})
|
||||||
|
|
||||||
|
|
||||||
def execute(argv: list[str]) -> None:
|
def execute(argv: list[str]) -> None:
|
||||||
|
|
6803
pkgs/by-name/ob/oboete/Cargo.lock
generated
6803
pkgs/by-name/ob/oboete/Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -13,32 +13,17 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "oboete";
|
pname = "oboete";
|
||||||
version = "0.1.6";
|
version = "0.1.7";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mariinkys";
|
owner = "mariinkys";
|
||||||
repo = "oboete";
|
repo = "oboete";
|
||||||
rev = "refs/tags/${version}";
|
tag = version;
|
||||||
hash = "sha256-tiYZ8xMIxMvRdQCf9+LI2B1lXbJz7MFyyeAOkJR+8Vk=";
|
hash = "sha256-W5dd8UNjG2w0N1EngDPK7Q83C2TF9UfW0GGvPaW6nls=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoLock = {
|
useFetchCargoVendor = true;
|
||||||
lockFile = ./Cargo.lock;
|
cargoHash = "sha256-UZUqPITtpHeNrsi6Nao+dfK3ACVJmZIc47aqSbwTemw=";
|
||||||
outputHashes = {
|
|
||||||
"accesskit-0.12.2" = "sha256-1UwgRyUe0PQrZrpS7574oNLi13fg5HpgILtZGW6JNtQ=";
|
|
||||||
"atomicwrites-0.4.2" = "sha256-QZSuGPrJXh+svMeFWqAXoqZQxLq/WfIiamqvjJNVhxA=";
|
|
||||||
"clipboard_macos-0.1.0" = "sha256-cG5vnkiyDlQnbEfV2sPbmBYKv1hd3pjJrymfZb8ziKk=";
|
|
||||||
"cosmic-config-0.1.0" = "sha256-joMHmFbgMAuaXtSvJutahE/8y+4AL7dd8bb9bs6Usc0=";
|
|
||||||
"cosmic-settings-daemon-0.1.0" = "sha256-mklNPKVMO6iFrxki2DwiL5K78KiWpGxksisYldaASIE=";
|
|
||||||
"cosmic-text-0.12.1" = "sha256-u2Tw+XhpIKeFg8Wgru/sjGw6GUZ2m50ZDmRBJ1IM66w=";
|
|
||||||
"d3d12-0.19.0" = "sha256-usrxQXWLGJDjmIdw1LBXtBvX+CchZDvE8fHC0LjvhD4=";
|
|
||||||
"glyphon-0.5.0" = "sha256-j1HrbEpUBqazWqNfJhpyjWuxYAxkvbXzRKeSouUoPWg=";
|
|
||||||
"smithay-clipboard-0.8.0" = "sha256-4InFXm0ahrqFrtNLeqIuE3yeOpxKZJZx+Bc0yQDtv34=";
|
|
||||||
"softbuffer-0.4.1" = "sha256-a0bUFz6O8CWRweNt/OxTvflnPYwO5nm6vsyc/WcXyNg=";
|
|
||||||
"taffy-0.3.11" = "sha256-SCx9GEIJjWdoNVyq+RZAGn0N71qraKZxf9ZWhvyzLaI=";
|
|
||||||
"winit-0.29.10" = "sha256-ScTII2AzK3SC8MVeASZ9jhVWsEaGrSQ2BnApTxgfxK4=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pkg-config
|
pkg-config
|
||||||
|
@ -67,9 +52,9 @@ rustPlatform.buildRustPackage rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "A simple flashcards application for the COSMIC™ desktop written in Rust";
|
description = "Simple flashcards application for the COSMIC™ desktop written in Rust";
|
||||||
homepage = "https://github.com/mariinkys/oboete";
|
homepage = "https://github.com/mariinkys/oboete";
|
||||||
changelog = "https://github.com/mariinkys/oboete/releases/tag/${version}";
|
changelog = "https://github.com/mariinkys/oboete/releases/tag/${src.tag}";
|
||||||
license = lib.licenses.gpl3Only;
|
license = lib.licenses.gpl3Only;
|
||||||
maintainers = with lib.maintainers; [ GaetanLepage ];
|
maintainers = with lib.maintainers; [ GaetanLepage ];
|
||||||
platforms = lib.platforms.linux;
|
platforms = lib.platforms.linux;
|
||||||
|
|
88
pkgs/by-name/oc/ocis/package.nix
Normal file
88
pkgs/by-name/oc/ocis/package.nix
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenvNoCC,
|
||||||
|
fetchFromGitHub,
|
||||||
|
buildGoModule,
|
||||||
|
callPackage,
|
||||||
|
gnumake,
|
||||||
|
pnpm,
|
||||||
|
nodejs,
|
||||||
|
ocis,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
idp-assets = stdenvNoCC.mkDerivation {
|
||||||
|
pname = "idp-assets";
|
||||||
|
version = "0-unstable-2020-10-14";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "owncloud";
|
||||||
|
repo = "assets";
|
||||||
|
rev = "e8b6aeadbcee1865b9df682e9bd78083842d2b5c";
|
||||||
|
hash = "sha256-PzGff2Zx8xmvPYQa4lS4yz2h+y/lerKvUZkYI7XvAUw=";
|
||||||
|
};
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share
|
||||||
|
cp logo.svg favicon.ico $out/share/
|
||||||
|
'';
|
||||||
|
dontConfigure = true;
|
||||||
|
dontBuild = true;
|
||||||
|
dontFixup = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "ocis";
|
||||||
|
version = "5.0.9";
|
||||||
|
|
||||||
|
vendorHash = null;
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "owncloud";
|
||||||
|
repo = "ocis";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-TsMrQx+P1F2t66e0tGG0VvRi4W7+pCpDHd0aNsacOsI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
gnumake
|
||||||
|
nodejs
|
||||||
|
pnpm.configHook
|
||||||
|
];
|
||||||
|
|
||||||
|
pnpmDeps = pnpm.fetchDeps {
|
||||||
|
inherit pname version src;
|
||||||
|
sourceRoot = "${src.name}/services/idp";
|
||||||
|
hash = "sha256-gNlN+u/bobnTsXrsOmkDcWs67D/trH3inT5AVQs3Brs=";
|
||||||
|
};
|
||||||
|
pnpmRoot = "services/idp";
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
cp -r ${ocis.web}/share/* services/web/assets/
|
||||||
|
pnpm -C services/idp build
|
||||||
|
|
||||||
|
mkdir -p services/idp/assets/identifier/static
|
||||||
|
cp -r ${idp-assets}/share/* services/idp/assets/identifier/static/
|
||||||
|
|
||||||
|
make -C ocis VERSION=${version} DATE=${version} build
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/bin/
|
||||||
|
cp ocis/bin/ocis $out/bin/
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
web = callPackage ./web.nix { };
|
||||||
|
updateScript = ./update.sh;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/owncloud/web";
|
||||||
|
description = "Next generation frontend for ownCloud Infinite Scale";
|
||||||
|
license = lib.licenses.asl20;
|
||||||
|
mainProgram = "ocis";
|
||||||
|
maintainers = with lib.maintainers; [ xinyangli ];
|
||||||
|
};
|
||||||
|
}
|
22
pkgs/by-name/oc/ocis/update.sh
Executable file
22
pkgs/by-name/oc/ocis/update.sh
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i bash -p curl jq gnugrep nix-update coreutils
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
TAGS=$(curl -s https://api.github.com/repos/owncloud/ocis/releases | jq -r ".[].tag_name")
|
||||||
|
|
||||||
|
for tag in $TAGS; do
|
||||||
|
main_version_old=$(echo "v$UPDATE_NIX_OLD_VERSION" | cut -d'.' -f1)
|
||||||
|
main_version_new=$(echo "$tag" | cut -d'.' -f1)
|
||||||
|
|
||||||
|
# Compare the main versions
|
||||||
|
if [[ "$main_version_old" == "$main_version_new" ]]; then
|
||||||
|
UPDATE_NIX_NEW_VERSION=$tag
|
||||||
|
break
|
||||||
|
else
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
OCIS_WEB_VERSION=$(curl -s https://raw.githubusercontent.com/owncloud/ocis/$UPDATE_NIX_NEW_VERSION/services/web/Makefile | grep -oP '(?<=WEB_ASSETS_VERSION = )v[0-9]+\.[0-9]+\.[0-9]+')
|
||||||
|
nix-update -vr 'v(.*)' --version=$OCIS_WEB_VERSION ocis.web
|
||||||
|
nix-update -vr 'v(.*)' --version=$UPDATE_NIX_NEW_VERSION ocis
|
48
pkgs/by-name/oc/ocis/web.nix
Normal file
48
pkgs/by-name/oc/ocis/web.nix
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenvNoCC,
|
||||||
|
nodejs,
|
||||||
|
pnpm,
|
||||||
|
fetchFromGitHub,
|
||||||
|
}:
|
||||||
|
stdenvNoCC.mkDerivation rec {
|
||||||
|
pname = "ocis-web";
|
||||||
|
version = "8.0.5";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "owncloud";
|
||||||
|
repo = "web";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-hupdtK/V74+X7/eXoDmUjFvSKuhnoOtNQz7o6TLJXG4=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
nodejs
|
||||||
|
pnpm.configHook
|
||||||
|
];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
pnpm build
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/share
|
||||||
|
cp -r dist/* $out/share/
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
pnpmDeps = pnpm.fetchDeps {
|
||||||
|
inherit pname version src;
|
||||||
|
hash = "sha256-3Erva6srdkX1YQ727trx34Ufx524nz19MUyaDQToz6M=";
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/owncloud/ocis";
|
||||||
|
description = "ownCloud Infinite Scale Stack";
|
||||||
|
maintainers = with lib.maintainers; [ xinyangli ];
|
||||||
|
license = lib.licenses.agpl3Only;
|
||||||
|
};
|
||||||
|
}
|
39
pkgs/by-name/op/openfortivpn-webview-qt/package.nix
Normal file
39
pkgs/by-name/op/openfortivpn-webview-qt/package.nix
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
lib,
|
||||||
|
fetchFromGitHub,
|
||||||
|
qt6Packages,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "openfortivpn-webview-qt";
|
||||||
|
version = "1.1.2";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "gm-vm";
|
||||||
|
repo = "openfortivpn-webview";
|
||||||
|
rev = "v${version}-electron";
|
||||||
|
hash = "sha256-BNotbb2pL7McBm0SQwcgEvjgS2GId4HVaxWUz/ODs6w=";
|
||||||
|
};
|
||||||
|
sourceRoot = "source/openfortivpn-webview-qt";
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
qt6Packages.wrapQtAppsHook
|
||||||
|
qt6Packages.qmake
|
||||||
|
];
|
||||||
|
buildInputs = [ qt6Packages.qtwebengine ];
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp openfortivpn-webview $out/bin/
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Perform the SAML single sign-on and easily retrieve the SVPNCOOKIE needed by openfortivpn";
|
||||||
|
homepage = "https://github.com/gm-vm/openfortivpn-webview/tree/main";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = [ lib.maintainers.jonboh ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
mainProgram = "openfortivpn-webview";
|
||||||
|
};
|
||||||
|
}
|
|
@ -115,6 +115,8 @@ stdenv.mkDerivation {
|
||||||
|
|
||||||
__darwinAllowLocalNetworking = true;
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
|
# GCC 14 makes these errors by default
|
||||||
|
env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=int-conversion";
|
||||||
env.config = writeText "gradle.properties" ''
|
env.config = writeText "gradle.properties" ''
|
||||||
CONF = Release
|
CONF = Release
|
||||||
JDK_HOME = ${jdk-bootstrap.home}
|
JDK_HOME = ${jdk-bootstrap.home}
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
renode.overrideAttrs (
|
renode.overrideAttrs (
|
||||||
finalAttrs: _: {
|
finalAttrs: _: {
|
||||||
pname = "renode-unstable";
|
pname = "renode-unstable";
|
||||||
version = "1.15.3+20241112git6e850cb52";
|
version = "1.15.3+20241217git398e80b6e";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://builds.renode.io/renode-${finalAttrs.version}.linux-dotnet.tar.gz";
|
url = "https://builds.renode.io/renode-${finalAttrs.version}.linux-dotnet.tar.gz";
|
||||||
hash = "sha256-GkmzPc0pPRglkuGzPU+rLUcwlhw8v4VgQnxnkzT/+cI=";
|
hash = "sha256-DJau7daj06GHWr3uGAbb6/oKb4QIefRqH6QoYjy5JNU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
passthru.updateScript =
|
passthru.updateScript =
|
||||||
|
|
|
@ -12,14 +12,14 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "rust-analyzer-unwrapped";
|
pname = "rust-analyzer-unwrapped";
|
||||||
version = "2024-12-02";
|
version = "2024-12-16";
|
||||||
cargoHash = "sha256-qlBR6Ua0h+1jk1VTjDRkSsmYjbsjeONGIEXGMxHlyfM=";
|
cargoHash = "sha256-RUFhNJTLP1xOr+qpRVYZipk9rZ/c9kqJE9wuqmwFFPE=";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "rust-lang";
|
owner = "rust-lang";
|
||||||
repo = "rust-analyzer";
|
repo = "rust-analyzer";
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-Aob7Gf46F4BMLS0FDzf8mV39fUbNHURaY+GbYNsoOY4=";
|
hash = "sha256-7DBZsPlP/9ZpYk+k6dLFG6SEH848HuGaY7ri/gdye4M=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoBuildFlags = [
|
cargoBuildFlags = [
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
fetchurl,
|
fetchurl,
|
||||||
|
bash,
|
||||||
python,
|
python,
|
||||||
makeWrapper,
|
makeWrapper,
|
||||||
}:
|
}:
|
||||||
|
@ -22,7 +23,10 @@ stdenv.mkDerivation rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nativeBuildInputs =
|
nativeBuildInputs =
|
||||||
[ makeWrapper ]
|
[
|
||||||
|
bash
|
||||||
|
makeWrapper
|
||||||
|
]
|
||||||
++ lib.optionals (python != null && lib.versionAtLeast python.version "3.10") [
|
++ lib.optionals (python != null && lib.versionAtLeast python.version "3.10") [
|
||||||
python.pkgs.cython
|
python.pkgs.cython
|
||||||
];
|
];
|
||||||
|
@ -34,6 +38,8 @@ stdenv.mkDerivation rec {
|
||||||
rm wrappers/python/lhapdf.cpp
|
rm wrappers/python/lhapdf.cpp
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
|
@ -41,6 +47,7 @@ stdenv.mkDerivation rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
patchShebangs --build $out/bin/lhapdf-config
|
||||||
wrapProgram $out/bin/lhapdf --prefix PYTHONPATH : "$(toPythonPath "$out")"
|
wrapProgram $out/bin/lhapdf --prefix PYTHONPATH : "$(toPythonPath "$out")"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
stdenv,
|
stdenv,
|
||||||
fetchFromGitLab,
|
fetchFromGitLab,
|
||||||
autoreconfHook,
|
autoreconfHook,
|
||||||
|
bash,
|
||||||
python,
|
python,
|
||||||
root,
|
root,
|
||||||
makeWrapper,
|
makeWrapper,
|
||||||
|
@ -23,6 +24,7 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
nativeBuildInputs = with python.pkgs; [
|
nativeBuildInputs = with python.pkgs; [
|
||||||
autoreconfHook
|
autoreconfHook
|
||||||
|
bash
|
||||||
cython
|
cython
|
||||||
makeWrapper
|
makeWrapper
|
||||||
];
|
];
|
||||||
|
@ -43,6 +45,8 @@ stdenv.mkDerivation rec {
|
||||||
zlib
|
zlib
|
||||||
];
|
];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -54,6 +58,7 @@ stdenv.mkDerivation rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
patchShebangs --build $out/bin/yoda-config
|
||||||
for prog in "$out"/bin/*; do
|
for prog in "$out"/bin/*; do
|
||||||
wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out")
|
wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out")
|
||||||
done
|
done
|
||||||
|
|
86
pkgs/development/python-modules/nifty8/default.nix
Normal file
86
pkgs/development/python-modules/nifty8/default.nix
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
buildPythonPackage,
|
||||||
|
fetchFromGitLab,
|
||||||
|
|
||||||
|
cudaSupport ? config.cudaSupport,
|
||||||
|
|
||||||
|
# build-system
|
||||||
|
setuptools,
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
astropy,
|
||||||
|
ducc0,
|
||||||
|
h5py,
|
||||||
|
jax,
|
||||||
|
jaxlib,
|
||||||
|
matplotlib,
|
||||||
|
mpi,
|
||||||
|
mpi4py,
|
||||||
|
numpy,
|
||||||
|
scipy,
|
||||||
|
|
||||||
|
# test
|
||||||
|
pytestCheckHook,
|
||||||
|
mpiCheckPhaseHook,
|
||||||
|
openssh,
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "nifty8";
|
||||||
|
version = "8.5.2";
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
domain = "gitlab.mpcdf.mpg.de";
|
||||||
|
owner = "ift";
|
||||||
|
repo = "nifty";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-EWsJX+iqKOhQXEWlQfYUiPYqyfOfrwLtbI+DVn7vCQI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
build-system = [ setuptools ];
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
astropy
|
||||||
|
ducc0
|
||||||
|
h5py
|
||||||
|
jax
|
||||||
|
(jaxlib.override { inherit cudaSupport; })
|
||||||
|
matplotlib
|
||||||
|
mpi4py
|
||||||
|
mpi
|
||||||
|
numpy
|
||||||
|
scipy
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeCheckInputs = [
|
||||||
|
pytestCheckHook
|
||||||
|
mpiCheckPhaseHook
|
||||||
|
openssh
|
||||||
|
];
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
runHook preCheck
|
||||||
|
|
||||||
|
python3 -m pytest test
|
||||||
|
|
||||||
|
if [ "${stdenv.buildPlatform.system}" != "aarch64-linux" ] && \
|
||||||
|
[ "${stdenv.buildPlatform.system}" != "x86_64-darwin" ]; then
|
||||||
|
${mpi}/bin/mpiexec -n 2 --bind-to none python3 -m pytest test/test_mpi
|
||||||
|
fi
|
||||||
|
|
||||||
|
runHook postCheck
|
||||||
|
'';
|
||||||
|
|
||||||
|
pythonImportsCheck = [ "nifty8" ];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://gitlab.mpcdf.mpg.de/ift/nifty";
|
||||||
|
description = "Bayesian Imaging library for high-dimensional posteriors";
|
||||||
|
license = lib.licenses.gpl3;
|
||||||
|
maintainers = with lib.maintainers; [ parras ];
|
||||||
|
};
|
||||||
|
}
|
49
pkgs/development/python-modules/pixel-font-knife/default.nix
Normal file
49
pkgs/development/python-modules/pixel-font-knife/default.nix
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
buildPythonPackage,
|
||||||
|
fetchPypi,
|
||||||
|
pythonOlder,
|
||||||
|
pytestCheckHook,
|
||||||
|
nix-update-script,
|
||||||
|
hatchling,
|
||||||
|
pypng,
|
||||||
|
unidata-blocks,
|
||||||
|
pyyaml,
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "pixel-font-knife";
|
||||||
|
version = "0.0.7";
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
disabled = pythonOlder "3.10";
|
||||||
|
|
||||||
|
src = fetchPypi {
|
||||||
|
pname = "pixel_font_knife";
|
||||||
|
inherit version;
|
||||||
|
hash = "sha256-NALIf8DbIPKmazF669LHsKuP0tndR0pbphrhlXt6wyA=";
|
||||||
|
};
|
||||||
|
|
||||||
|
build-system = [ hatchling ];
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
pypng
|
||||||
|
unidata-blocks
|
||||||
|
pyyaml
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeCheckInputs = [ pytestCheckHook ];
|
||||||
|
|
||||||
|
pythonImportsCheck = [ "pixel_font_knife" ];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/TakWolf/pixel-font-knife";
|
||||||
|
description = "Set of pixel font utilities";
|
||||||
|
platforms = lib.platforms.all;
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
maintainers = with lib.maintainers; [
|
||||||
|
TakWolf
|
||||||
|
h7x4
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ from functools import cached_property
|
||||||
import json
|
import json
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from libfdt import Fdt, FdtException, FDT_ERR_NOSPACE, fdt_overlay_apply
|
from libfdt import Fdt, FdtException, FDT_ERR_NOSPACE, FDT_ERR_NOTFOUND, fdt_overlay_apply
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -25,7 +25,14 @@ class Overlay:
|
||||||
|
|
||||||
def get_compatible(fdt):
|
def get_compatible(fdt):
|
||||||
root_offset = fdt.path_offset("/")
|
root_offset = fdt.path_offset("/")
|
||||||
|
|
||||||
|
try:
|
||||||
return set(fdt.getprop(root_offset, "compatible").as_stringlist())
|
return set(fdt.getprop(root_offset, "compatible").as_stringlist())
|
||||||
|
except FdtException as e:
|
||||||
|
if e.err == -FDT_ERR_NOTFOUND:
|
||||||
|
return set()
|
||||||
|
else:
|
||||||
|
raise e
|
||||||
|
|
||||||
|
|
||||||
def apply_overlay(dt: Fdt, dto: Fdt) -> Fdt:
|
def apply_overlay(dt: Fdt, dto: Fdt) -> Fdt:
|
||||||
|
@ -77,14 +84,15 @@ def main():
|
||||||
with source_dt.open("rb") as fd:
|
with source_dt.open("rb") as fd:
|
||||||
dt = Fdt(fd.read())
|
dt = Fdt(fd.read())
|
||||||
|
|
||||||
dt_compatible = get_compatible(dt)
|
|
||||||
|
|
||||||
for overlay in overlays_data:
|
for overlay in overlays_data:
|
||||||
if overlay.filter and overlay.filter not in str(rel_path):
|
if overlay.filter and overlay.filter not in str(rel_path):
|
||||||
print(f" Skipping overlay {overlay.name}: filter does not match")
|
print(f" Skipping overlay {overlay.name}: filter does not match")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not overlay.compatible.intersection(dt_compatible):
|
dt_compatible = get_compatible(dt)
|
||||||
|
if len(dt_compatible) == 0:
|
||||||
|
print(f" Device tree {rel_path} has no compatible string set. Assuming it's compatible with overlay")
|
||||||
|
elif not overlay.compatible.intersection(dt_compatible):
|
||||||
print(f" Skipping overlay {overlay.name}: {overlay.compatible} is incompatible with {dt_compatible}")
|
print(f" Skipping overlay {overlay.name}: {overlay.compatible} is incompatible with {dt_compatible}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
19
pkgs/os-specific/linux/iio-utils/default.nix
Normal file
19
pkgs/os-specific/linux/iio-utils/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{ lib, stdenv, kernel }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "iio-utils";
|
||||||
|
inherit (kernel) src version;
|
||||||
|
|
||||||
|
makeFlags = [ "bindir=${placeholder "out"}/bin" ];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
cd tools/iio
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Userspace tool for interacting with Linux IIO";
|
||||||
|
homepage = "https://www.kernel.org/";
|
||||||
|
license = licenses.gpl2Only;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
|
@ -16,11 +16,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "nsd";
|
pname = "nsd";
|
||||||
version = "4.10.2";
|
version = "4.11.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://www.nlnetlabs.nl/downloads/${pname}/${pname}-${version}.tar.gz";
|
url = "https://www.nlnetlabs.nl/downloads/${pname}/${pname}-${version}.tar.gz";
|
||||||
sha256 = "sha256-yR7vLnPkMPooa9SPB1qNAj+25gVg4iGJyzWDxdoAtps=";
|
sha256 = "sha256-k5VtkNRf+p+E+MovcYpCEF5CNtCUzgMiEYSfGhLNwVg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
prePatch = ''
|
prePatch = ''
|
||||||
|
|
|
@ -11,14 +11,14 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "snac2";
|
pname = "snac2";
|
||||||
version = "2.65";
|
version = "2.66";
|
||||||
|
|
||||||
src = fetchFromGitea {
|
src = fetchFromGitea {
|
||||||
domain = "codeberg.org";
|
domain = "codeberg.org";
|
||||||
owner = "grunfink";
|
owner = "grunfink";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-jzkimE4JPrlsHP0jPawhloXMDNaWG1Sgfp5NiZxm1xo=";
|
hash = "sha256-JArXXuWS60tXShYD4bKwHRPlbLRALZTnwn3iYBhhD2s=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
|
|
@ -1,13 +1,19 @@
|
||||||
{ lib, stdenv, fetchgit }:
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchgit,
|
||||||
|
nixosTests,
|
||||||
|
unstableGitUpdater,
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "tt-rss";
|
pname = "tt-rss";
|
||||||
version = "unstable-2023-04-13";
|
version = "0-unstable-2024-11-04";
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://git.tt-rss.org/fox/tt-rss.git";
|
url = "https://git.tt-rss.org/fox/tt-rss.git";
|
||||||
rev = "0578bf802571781a0a7e3debbbec66437a7d28b4";
|
rev = "42ebdb027ec249fb8e693c41d7ee80ecdc68d6ec";
|
||||||
hash = "sha256-j6R1QoH8SzUtyI3rGE6rHriboAfApAo/Guw8WbJ7LqU=";
|
hash = "sha256-QN7CwUufQSFlFde0NebO/kOYtEZCyL0ut+CNEpJMIMA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
@ -18,16 +24,25 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
# see the code of Config::get_version(). you can check that the version in
|
# see the code of Config::get_version(). you can check that the version in
|
||||||
# the footer of the preferences pages is not UNKNOWN
|
# the footer of the preferences pages is not UNKNOWN
|
||||||
echo "23.04" > $out/version_static.txt
|
echo "${version}" > $out/version_static.txt
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit (nixosTests) tt-rss;
|
||||||
|
updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
|
||||||
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Web-based news feed (RSS/Atom) aggregator";
|
description = "Web-based news feed (RSS/Atom) aggregator";
|
||||||
license = licenses.gpl2Plus;
|
license = licenses.gpl2Plus;
|
||||||
homepage = "https://tt-rss.org";
|
homepage = "https://tt-rss.org";
|
||||||
maintainers = with maintainers; [ globin zohl ];
|
maintainers = with maintainers; [
|
||||||
|
gileri
|
||||||
|
globin
|
||||||
|
zohl
|
||||||
|
];
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ lib, stdenv
|
{ lib, stdenv
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, makeWrapper
|
, makeShellWrapper
|
||||||
, updateAutotoolsGnuConfigScriptsHook
|
, updateAutotoolsGnuConfigScriptsHook
|
||||||
, runtimeShellPackage
|
, runtimeShellPackage
|
||||||
}:
|
}:
|
||||||
|
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook makeWrapper ];
|
nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook makeShellWrapper ];
|
||||||
buildInputs = [ runtimeShellPackage ];
|
buildInputs = [ runtimeShellPackage ];
|
||||||
|
|
||||||
makeFlags = [
|
makeFlags = [
|
||||||
|
|
|
@ -375,6 +375,8 @@ in {
|
||||||
|
|
||||||
e1000e = if lib.versionOlder kernel.version "4.10" then callPackage ../os-specific/linux/e1000e {} else null;
|
e1000e = if lib.versionOlder kernel.version "4.10" then callPackage ../os-specific/linux/e1000e {} else null;
|
||||||
|
|
||||||
|
iio-utils = if lib.versionAtLeast kernel.version "4.1" then callPackage ../os-specific/linux/iio-utils { } else null;
|
||||||
|
|
||||||
intel-speed-select = if lib.versionAtLeast kernel.version "5.3" then callPackage ../os-specific/linux/intel-speed-select { } else null;
|
intel-speed-select = if lib.versionAtLeast kernel.version "5.3" then callPackage ../os-specific/linux/intel-speed-select { } else null;
|
||||||
|
|
||||||
ipu6-drivers = callPackage ../os-specific/linux/ipu6-drivers {};
|
ipu6-drivers = callPackage ../os-specific/linux/ipu6-drivers {};
|
||||||
|
|
|
@ -9194,6 +9194,8 @@ self: super: with self; {
|
||||||
|
|
||||||
nidaqmx = callPackage ../development/python-modules/nidaqmx { };
|
nidaqmx = callPackage ../development/python-modules/nidaqmx { };
|
||||||
|
|
||||||
|
nifty8 = callPackage ../development/python-modules/nifty8 { };
|
||||||
|
|
||||||
nikola = callPackage ../development/python-modules/nikola { };
|
nikola = callPackage ../development/python-modules/nikola { };
|
||||||
|
|
||||||
niko-home-control = callPackage ../development/python-modules/niko-home-control { };
|
niko-home-control = callPackage ../development/python-modules/niko-home-control { };
|
||||||
|
@ -10391,6 +10393,8 @@ self: super: with self; {
|
||||||
|
|
||||||
pixel-font-builder = callPackage ../development/python-modules/pixel-font-builder { };
|
pixel-font-builder = callPackage ../development/python-modules/pixel-font-builder { };
|
||||||
|
|
||||||
|
pixel-font-knife = callPackage ../development/python-modules/pixel-font-knife { };
|
||||||
|
|
||||||
pixel-ring = callPackage ../development/python-modules/pixel-ring { };
|
pixel-ring = callPackage ../development/python-modules/pixel-ring { };
|
||||||
|
|
||||||
pjsua2 = (toPythonModule (pkgs.pjsip.override {
|
pjsua2 = (toPythonModule (pkgs.pjsip.override {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue