Merge master into staging-next
This commit is contained in:
commit
650e10b010
@ -80,6 +80,8 @@ Do _not_ use `dart run <package_name>`, as this will attempt to download depende
|
|||||||
|
|
||||||
### Usage with nix-shell {#ssec-dart-applications-nix-shell}
|
### Usage with nix-shell {#ssec-dart-applications-nix-shell}
|
||||||
|
|
||||||
|
#### Using dependencies from the Nix store {#ssec-dart-applications-nix-shell-deps}
|
||||||
|
|
||||||
As `buildDartApplication` provides dependencies instead of `pub get`, Dart needs to be explicitly told where to find them.
|
As `buildDartApplication` provides dependencies instead of `pub get`, Dart needs to be explicitly told where to find them.
|
||||||
|
|
||||||
Run the following commands in the source directory to configure Dart appropriately.
|
Run the following commands in the source directory to configure Dart appropriately.
|
||||||
@ -103,6 +105,9 @@ flutter.buildFlutterApplication {
|
|||||||
pname = "firmware-updater";
|
pname = "firmware-updater";
|
||||||
version = "unstable-2023-04-30";
|
version = "unstable-2023-04-30";
|
||||||
|
|
||||||
|
# To build for the Web, use the targetFlutterPlatform argument.
|
||||||
|
# targetFlutterPlatform = "web";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "canonical";
|
owner = "canonical";
|
||||||
repo = "firmware-updater";
|
repo = "firmware-updater";
|
||||||
@ -117,4 +122,15 @@ flutter.buildFlutterApplication {
|
|||||||
|
|
||||||
### Usage with nix-shell {#ssec-dart-flutter-nix-shell}
|
### Usage with nix-shell {#ssec-dart-flutter-nix-shell}
|
||||||
|
|
||||||
See the [Dart documentation](#ssec-dart-applications-nix-shell) for nix-shell instructions.
|
Flutter-specific `nix-shell` usage notes are included here. See the [Dart documentation](#ssec-dart-applications-nix-shell) for general `nix-shell` instructions.
|
||||||
|
|
||||||
|
#### Entering the shell {#ssec-dart-flutter-nix-shell-enter}
|
||||||
|
|
||||||
|
By default, dependencies for only the `targetFlutterPlatform` are available in the
|
||||||
|
build environment. This is useful for keeping closures small, but be problematic
|
||||||
|
during development. It's common, for example, to build Web apps for Linux during
|
||||||
|
development to take advantage of native features such as stateful hot reload.
|
||||||
|
|
||||||
|
To enter a shell with all the usual target platforms available, use the `multiShell` attribute.
|
||||||
|
|
||||||
|
e.g. `nix-shell '<nixpkgs>' -A fluffychat-web.multiShell`.
|
||||||
|
@ -15510,6 +15510,16 @@
|
|||||||
githubId = 1891350;
|
githubId = 1891350;
|
||||||
name = "Michael Raskin";
|
name = "Michael Raskin";
|
||||||
};
|
};
|
||||||
|
ratcornu = {
|
||||||
|
email = "ratcornu@skaven.org";
|
||||||
|
github = "RatCornu";
|
||||||
|
githubId = 98173832;
|
||||||
|
name = "Balthazar Patiachvili";
|
||||||
|
matrix = "@ratcornu:skweel.skaven.org";
|
||||||
|
keys = [{
|
||||||
|
fingerprint = "1B91 F087 3D06 1319 D3D0 7F91 FA47 BDA2 6048 9ADA";
|
||||||
|
}];
|
||||||
|
};
|
||||||
ratsclub = {
|
ratsclub = {
|
||||||
email = "victor@freire.dev.br";
|
email = "victor@freire.dev.br";
|
||||||
github = "ratsclub";
|
github = "ratsclub";
|
||||||
|
@ -37,6 +37,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
|||||||
- [Anki Sync Server](https://docs.ankiweb.net/sync-server.html), the official sync server built into recent versions of Anki. Available as [services.anki-sync-server](#opt-services.anki-sync-server.enable).
|
- [Anki Sync Server](https://docs.ankiweb.net/sync-server.html), the official sync server built into recent versions of Anki. Available as [services.anki-sync-server](#opt-services.anki-sync-server.enable).
|
||||||
The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been marked deprecated and will be dropped after 24.05 due to lack of maintenance of the anki-sync-server softwares.
|
The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been marked deprecated and will be dropped after 24.05 due to lack of maintenance of the anki-sync-server softwares.
|
||||||
|
|
||||||
|
- [Suwayomi Server](https://github.com/Suwayomi/Suwayomi-Server), a free and open source manga reader server that runs extensions built for [Tachiyomi](https://tachiyomi.org). Available as [services.suwayomi-server](#opt-services.suwayomi-server.enable).
|
||||||
|
|
||||||
- [ping_exporter](https://github.com/czerwonk/ping_exporter), a Prometheus exporter for ICMP echo requests. Available as [services.prometheus.exporters.ping](#opt-services.prometheus.exporters.ping.enable).
|
- [ping_exporter](https://github.com/czerwonk/ping_exporter), a Prometheus exporter for ICMP echo requests. Available as [services.prometheus.exporters.ping](#opt-services.prometheus.exporters.ping.enable).
|
||||||
|
|
||||||
- [Clevis](https://github.com/latchset/clevis), a pluggable framework for automated decryption, used to unlock encrypted devices in initrd. Available as [boot.initrd.clevis.enable](#opt-boot.initrd.clevis.enable).
|
- [Clevis](https://github.com/latchset/clevis), a pluggable framework for automated decryption, used to unlock encrypted devices in initrd. Available as [boot.initrd.clevis.enable](#opt-boot.initrd.clevis.enable).
|
||||||
|
@ -1339,6 +1339,7 @@
|
|||||||
./services/web-apps/restya-board.nix
|
./services/web-apps/restya-board.nix
|
||||||
./services/web-apps/rimgo.nix
|
./services/web-apps/rimgo.nix
|
||||||
./services/web-apps/sftpgo.nix
|
./services/web-apps/sftpgo.nix
|
||||||
|
./services/web-apps/suwayomi-server.nix
|
||||||
./services/web-apps/rss-bridge.nix
|
./services/web-apps/rss-bridge.nix
|
||||||
./services/web-apps/selfoss.nix
|
./services/web-apps/selfoss.nix
|
||||||
./services/web-apps/shiori.nix
|
./services/web-apps/shiori.nix
|
||||||
|
@ -143,7 +143,7 @@ in
|
|||||||
# ConnectionTimeout = 180
|
# ConnectionTimeout = 180
|
||||||
|
|
||||||
#RemoteServiceName = gds_db
|
#RemoteServiceName = gds_db
|
||||||
RemoteServicePort = ${cfg.port}
|
RemoteServicePort = ${toString cfg.port}
|
||||||
|
|
||||||
# randomly choose port for server Event Notification
|
# randomly choose port for server Event Notification
|
||||||
#RemoteAuxPort = 0
|
#RemoteAuxPort = 0
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ config, lib, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let cfg = config.nix.sshServe;
|
let cfg = config.nix.sshServe;
|
||||||
@ -46,7 +46,7 @@ in {
|
|||||||
description = "Nix SSH store user";
|
description = "Nix SSH store user";
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
group = "nix-ssh";
|
group = "nix-ssh";
|
||||||
useDefaultShell = true;
|
shell = pkgs.bashInteractive;
|
||||||
};
|
};
|
||||||
users.groups.nix-ssh = {};
|
users.groups.nix-ssh = {};
|
||||||
|
|
||||||
|
108
nixos/modules/services/web-apps/suwayomi-server.md
Normal file
108
nixos/modules/services/web-apps/suwayomi-server.md
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
# Suwayomi-Server {#module-services-suwayomi-server}
|
||||||
|
|
||||||
|
A free and open source manga reader server that runs extensions built for Tachiyomi.
|
||||||
|
|
||||||
|
## Basic usage {#module-services-suwayomi-server-basic-usage}
|
||||||
|
|
||||||
|
By default, the module will execute Suwayomi-Server backend and web UI:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.suwayomi-server = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
It runs in the systemd service named `suwayomi-server` in the data directory `/var/lib/suwayomi-server`.
|
||||||
|
|
||||||
|
You can change the default parameters with some other parameters:
|
||||||
|
```nix
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.suwayomi-server = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
dataDir = "/var/lib/suwayomi"; # Default is "/var/lib/suwayomi-server"
|
||||||
|
openFirewall = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
server.port = 4567;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to create a desktop icon, you can activate the system tray option:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.suwayomi-server = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
dataDir = "/var/lib/suwayomi"; # Default is "/var/lib/suwayomi-server"
|
||||||
|
openFirewall = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
server.port = 4567;
|
||||||
|
server.enableSystemTray = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Basic authentication {#module-services-suwayomi-server-basic-auth}
|
||||||
|
|
||||||
|
You can configure a basic authentication to the web interface with:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.suwayomi-server = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
openFirewall = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
server.port = 4567;
|
||||||
|
server = {
|
||||||
|
basicAuthEnabled = true;
|
||||||
|
basicAuthUsername = "username";
|
||||||
|
|
||||||
|
# NOTE: this is not a real upstream option
|
||||||
|
basicAuthPasswordFile = ./path/to/the/password/file;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Extra configuration {#module-services-suwayomi-server-extra-config}
|
||||||
|
|
||||||
|
Not all the configuration options are available directly in this module, but you can add the other options of suwayomi-server with:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.suwayomi-server = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
openFirewall = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
port = 4567;
|
||||||
|
autoDownloadNewChapters = false;
|
||||||
|
maxSourcesInParallel" = 6;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
260
nixos/modules/services/web-apps/suwayomi-server.nix
Normal file
260
nixos/modules/services/web-apps/suwayomi-server.nix
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.suwayomi-server;
|
||||||
|
inherit (lib) mkOption mdDoc mkEnableOption mkIf types;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
services.suwayomi-server = {
|
||||||
|
enable = mkEnableOption (mdDoc "Suwayomi, a free and open source manga reader server that runs extensions built for Tachiyomi.");
|
||||||
|
|
||||||
|
package = lib.mkPackageOptionMD pkgs "suwayomi-server" { };
|
||||||
|
|
||||||
|
dataDir = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
default = "/var/lib/suwayomi-server";
|
||||||
|
example = "/var/data/mangas";
|
||||||
|
description = mdDoc ''
|
||||||
|
The path to the data directory in which Suwayomi-Server will download scans.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "suwayomi";
|
||||||
|
example = "root";
|
||||||
|
description = mdDoc ''
|
||||||
|
User account under which Suwayomi-Server runs.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
group = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "suwayomi";
|
||||||
|
example = "medias";
|
||||||
|
description = mdDoc ''
|
||||||
|
Group under which Suwayomi-Server runs.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
openFirewall = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = mdDoc ''
|
||||||
|
Whether to open the firewall for the port in {option}`services.suwayomi-server.settings.server.port`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = mkOption {
|
||||||
|
type = types.submodule {
|
||||||
|
freeformType =
|
||||||
|
let
|
||||||
|
recursiveAttrsType = with types; attrsOf (nullOr (oneOf [
|
||||||
|
str
|
||||||
|
path
|
||||||
|
int
|
||||||
|
float
|
||||||
|
bool
|
||||||
|
(listOf str)
|
||||||
|
(recursiveAttrsType // { description = "instances of this type recursively"; })
|
||||||
|
]));
|
||||||
|
in
|
||||||
|
recursiveAttrsType;
|
||||||
|
options = {
|
||||||
|
server = {
|
||||||
|
ip = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "0.0.0.0";
|
||||||
|
example = "127.0.0.1";
|
||||||
|
description = mdDoc ''
|
||||||
|
The ip that Suwayomi will bind to.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 8080;
|
||||||
|
example = 4567;
|
||||||
|
description = mdDoc ''
|
||||||
|
The port that Suwayomi will listen to.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
basicAuthEnabled = mkEnableOption (mdDoc ''
|
||||||
|
Add basic access authentication to Suwayomi-Server.
|
||||||
|
Enabling this option is useful when hosting on a public network/the Internet
|
||||||
|
'');
|
||||||
|
|
||||||
|
basicAuthUsername = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
description = mdDoc ''
|
||||||
|
The username value that you have to provide when authenticating.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# NOTE: this is not a real upstream option
|
||||||
|
basicAuthPasswordFile = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
example = "/var/secrets/suwayomi-server-password";
|
||||||
|
description = mdDoc ''
|
||||||
|
The password file containing the value that you have to provide when authenticating.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
downloadAsCbz = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = mdDoc ''
|
||||||
|
Download chapters as `.cbz` files.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
localSourcePath = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
default = cfg.dataDir;
|
||||||
|
defaultText = lib.literalExpression "suwayomi-server.dataDir";
|
||||||
|
example = "/var/data/local_mangas";
|
||||||
|
description = mdDoc ''
|
||||||
|
Path to the local source folder.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
systemTrayEnabled = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = mdDoc ''
|
||||||
|
Whether to enable a system tray icon, if possible.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description = mdDoc ''
|
||||||
|
Configuration to write to {file}`server.conf`.
|
||||||
|
See <https://github.com/Suwayomi/Suwayomi-Server/wiki/Configuring-Suwayomi-Server> for more information.
|
||||||
|
'';
|
||||||
|
default = { };
|
||||||
|
example = {
|
||||||
|
server.socksProxyEnabled = true;
|
||||||
|
server.socksProxyHost = "yourproxyhost.com";
|
||||||
|
server.socksProxyPort = "8080";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
assertions = [{
|
||||||
|
assertion = with cfg.settings.server; basicAuthEnabled -> (basicAuthUsername != null && basicAuthPasswordFile != null);
|
||||||
|
message = ''
|
||||||
|
[suwayomi-server]: the username and the password file cannot be null when the basic auth is enabled
|
||||||
|
'';
|
||||||
|
}];
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.settings.server.port ];
|
||||||
|
|
||||||
|
users.groups = mkIf (cfg.group == "suwayomi") {
|
||||||
|
suwayomi = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users = mkIf (cfg.user == "suwayomi") {
|
||||||
|
suwayomi = {
|
||||||
|
group = cfg.group;
|
||||||
|
# Need to set the user home because the package writes to ~/.local/Tachidesk
|
||||||
|
home = cfg.dataDir;
|
||||||
|
description = "Suwayomi Daemon user";
|
||||||
|
isSystemUser = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.tmpfiles.settings."10-suwayomi-server" = {
|
||||||
|
"${cfg.dataDir}/.local/share/Tachidesk".d = {
|
||||||
|
mode = "0700";
|
||||||
|
inherit (cfg) user group;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.suwayomi-server =
|
||||||
|
let
|
||||||
|
flattenConfig = prefix: config:
|
||||||
|
lib.foldl'
|
||||||
|
lib.mergeAttrs
|
||||||
|
{ }
|
||||||
|
(lib.attrValues
|
||||||
|
(lib.mapAttrs
|
||||||
|
(k: v:
|
||||||
|
if !(lib.isAttrs v)
|
||||||
|
then { "${prefix}${k}" = v; }
|
||||||
|
else flattenConfig "${prefix}${k}." v
|
||||||
|
)
|
||||||
|
config
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
# HOCON is a JSON superset that suwayomi-server use for configuration
|
||||||
|
toHOCON = attr:
|
||||||
|
let
|
||||||
|
attrType = builtins.typeOf attr;
|
||||||
|
in
|
||||||
|
if builtins.elem attrType [ "string" "path" "int" "float" ]
|
||||||
|
then ''"${toString attr}"''
|
||||||
|
else if attrType == "bool"
|
||||||
|
then lib.boolToString attr
|
||||||
|
else if attrType == "list"
|
||||||
|
then "[\n${lib.concatMapStringsSep ",\n" toHOCON attr}\n]"
|
||||||
|
else # attrs, lambda, null
|
||||||
|
throw ''
|
||||||
|
[suwayomi-server]: invalid config value type '${attrType}'.
|
||||||
|
'';
|
||||||
|
|
||||||
|
configFile = pkgs.writeText "server.conf" (lib.pipe cfg.settings [
|
||||||
|
(settings: lib.recursiveUpdate settings {
|
||||||
|
server.basicAuthPasswordFile = null;
|
||||||
|
server.basicAuthPassword =
|
||||||
|
if settings.server.basicAuthEnabled
|
||||||
|
then "$TACHIDESK_SERVER_BASIC_AUTH_PASSWORD"
|
||||||
|
else null;
|
||||||
|
})
|
||||||
|
(flattenConfig "")
|
||||||
|
(lib.filterAttrs (_: x: x != null))
|
||||||
|
(lib.mapAttrsToList (name: value: ''${name} = ${toHOCON value}''))
|
||||||
|
lib.concatLines
|
||||||
|
]);
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
description = "A free and open source manga reader server that runs extensions built for Tachiyomi.";
|
||||||
|
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
${lib.optionalString cfg.settings.server.basicAuthEnabled ''
|
||||||
|
export TACHIDESK_SERVER_BASIC_AUTH_PASSWORD="$(<${cfg.settings.server.basicAuthPasswordFile})"
|
||||||
|
''}
|
||||||
|
${lib.getExe pkgs.envsubst} -i ${configFile} -o ${cfg.dataDir}/.local/share/Tachidesk/server.conf
|
||||||
|
${lib.getExe cfg.package} -Dsuwayomi.tachidesk.config.server.rootDir=${cfg.dataDir}
|
||||||
|
'';
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
User = cfg.user;
|
||||||
|
Group = cfg.group;
|
||||||
|
|
||||||
|
Type = "simple";
|
||||||
|
Restart = "on-failure";
|
||||||
|
|
||||||
|
StateDirectory = mkIf (cfg.dataDir == "/var/lib/suwayomi-server") "suwayomi-server";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
maintainers = with lib.maintainers; [ ratcornu ];
|
||||||
|
doc = ./suwayomi-server.md;
|
||||||
|
};
|
||||||
|
}
|
@ -15,6 +15,19 @@ import json
|
|||||||
from typing import NamedTuple, Dict, List
|
from typing import NamedTuple, Dict, List
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
# These values will be replaced with actual values during the package build
|
||||||
|
EFI_SYS_MOUNT_POINT = "@efiSysMountPoint@"
|
||||||
|
TIMEOUT = "@timeout@"
|
||||||
|
EDITOR = bool("@editor@")
|
||||||
|
CONSOLE_MODE = "@consoleMode@"
|
||||||
|
BOOTSPEC_TOOLS = "@bootspecTools@"
|
||||||
|
DISTRO_NAME = "@distroName@"
|
||||||
|
NIX = "@nix@"
|
||||||
|
SYSTEMD = "@systemd@"
|
||||||
|
CONFIGURATION_LIMIT = int("@configurationLimit@")
|
||||||
|
CAN_TOUCH_EFI_VARIABLES = "@canTouchEfiVariables@"
|
||||||
|
GRACEFUL = "@graceful@"
|
||||||
|
COPY_EXTRA_FILES = "@copyExtraFiles@"
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class BootSpec:
|
class BootSpec:
|
||||||
@ -29,7 +42,6 @@ class BootSpec:
|
|||||||
initrdSecrets: str | None = None
|
initrdSecrets: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
libc = ctypes.CDLL("libc.so.6")
|
libc = ctypes.CDLL("libc.so.6")
|
||||||
|
|
||||||
class SystemIdentifier(NamedTuple):
|
class SystemIdentifier(NamedTuple):
|
||||||
@ -75,16 +87,16 @@ def generation_conf_filename(profile: str | None, generation: int, specialisatio
|
|||||||
|
|
||||||
|
|
||||||
def write_loader_conf(profile: str | None, generation: int, specialisation: str | None) -> None:
|
def write_loader_conf(profile: str | None, generation: int, specialisation: str | None) -> None:
|
||||||
with open("@efiSysMountPoint@/loader/loader.conf.tmp", 'w') as f:
|
with open(f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf.tmp", 'w') as f:
|
||||||
if "@timeout@" != "":
|
if TIMEOUT != "":
|
||||||
f.write("timeout @timeout@\n")
|
f.write(f"timeout {TIMEOUT}\n")
|
||||||
f.write("default %s\n" % generation_conf_filename(profile, generation, specialisation))
|
f.write("default %s\n" % generation_conf_filename(profile, generation, specialisation))
|
||||||
if not @editor@:
|
if not EDITOR:
|
||||||
f.write("editor 0\n")
|
f.write("editor 0\n")
|
||||||
f.write("console-mode @consoleMode@\n")
|
f.write(f"console-mode {CONSOLE_MODE}\n")
|
||||||
f.flush()
|
f.flush()
|
||||||
os.fsync(f.fileno())
|
os.fsync(f.fileno())
|
||||||
os.rename("@efiSysMountPoint@/loader/loader.conf.tmp", "@efiSysMountPoint@/loader/loader.conf")
|
os.rename(f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf.tmp", f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf")
|
||||||
|
|
||||||
|
|
||||||
def get_bootspec(profile: str | None, generation: int) -> BootSpec:
|
def get_bootspec(profile: str | None, generation: int) -> BootSpec:
|
||||||
@ -95,7 +107,7 @@ def get_bootspec(profile: str | None, generation: int) -> BootSpec:
|
|||||||
bootspec_json = json.load(boot_json_f)
|
bootspec_json = json.load(boot_json_f)
|
||||||
else:
|
else:
|
||||||
boot_json_str = subprocess.check_output([
|
boot_json_str = subprocess.check_output([
|
||||||
"@bootspecTools@/bin/synthesize",
|
f"{BOOTSPEC_TOOLS}/bin/synthesize",
|
||||||
"--version",
|
"--version",
|
||||||
"1",
|
"1",
|
||||||
system_directory,
|
system_directory,
|
||||||
@ -116,7 +128,7 @@ def copy_from_file(file: str, dry_run: bool = False) -> str:
|
|||||||
store_dir = os.path.basename(os.path.dirname(store_file_path))
|
store_dir = os.path.basename(os.path.dirname(store_file_path))
|
||||||
efi_file_path = "/efi/nixos/%s-%s.efi" % (store_dir, suffix)
|
efi_file_path = "/efi/nixos/%s-%s.efi" % (store_dir, suffix)
|
||||||
if not dry_run:
|
if not dry_run:
|
||||||
copy_if_not_exists(store_file_path, "@efiSysMountPoint@%s" % (efi_file_path))
|
copy_if_not_exists(store_file_path, f"{EFI_SYS_MOUNT_POINT}%s" % (efi_file_path))
|
||||||
return efi_file_path
|
return efi_file_path
|
||||||
|
|
||||||
def write_entry(profile: str | None, generation: int, specialisation: str | None,
|
def write_entry(profile: str | None, generation: int, specialisation: str | None,
|
||||||
@ -126,13 +138,14 @@ def write_entry(profile: str | None, generation: int, specialisation: str | None
|
|||||||
kernel = copy_from_file(bootspec.kernel)
|
kernel = copy_from_file(bootspec.kernel)
|
||||||
initrd = copy_from_file(bootspec.initrd)
|
initrd = copy_from_file(bootspec.initrd)
|
||||||
|
|
||||||
title = "@distroName@{profile}{specialisation}".format(
|
title = "{name}{profile}{specialisation}".format(
|
||||||
|
name=DISTRO_NAME,
|
||||||
profile=" [" + profile + "]" if profile else "",
|
profile=" [" + profile + "]" if profile else "",
|
||||||
specialisation=" (%s)" % specialisation if specialisation else "")
|
specialisation=" (%s)" % specialisation if specialisation else "")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if bootspec.initrdSecrets is not None:
|
if bootspec.initrdSecrets is not None:
|
||||||
subprocess.check_call([bootspec.initrdSecrets, "@efiSysMountPoint@%s" % (initrd)])
|
subprocess.check_call([bootspec.initrdSecrets, f"{EFI_SYS_MOUNT_POINT}%s" % (initrd)])
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
if current:
|
if current:
|
||||||
print("failed to create initrd secrets!", file=sys.stderr)
|
print("failed to create initrd secrets!", file=sys.stderr)
|
||||||
@ -142,7 +155,7 @@ def write_entry(profile: str | None, generation: int, specialisation: str | None
|
|||||||
f'for "{title} - Configuration {generation}", an older generation', file=sys.stderr)
|
f'for "{title} - Configuration {generation}", an older generation', file=sys.stderr)
|
||||||
print("note: this is normal after having removed "
|
print("note: this is normal after having removed "
|
||||||
"or renamed a file in `boot.initrd.secrets`", file=sys.stderr)
|
"or renamed a file in `boot.initrd.secrets`", file=sys.stderr)
|
||||||
entry_file = "@efiSysMountPoint@/loader/entries/%s" % (
|
entry_file = f"{EFI_SYS_MOUNT_POINT}/loader/entries/%s" % (
|
||||||
generation_conf_filename(profile, generation, specialisation))
|
generation_conf_filename(profile, generation, specialisation))
|
||||||
tmp_path = "%s.tmp" % (entry_file)
|
tmp_path = "%s.tmp" % (entry_file)
|
||||||
kernel_params = "init=%s " % bootspec.init
|
kernel_params = "init=%s " % bootspec.init
|
||||||
@ -167,7 +180,7 @@ def write_entry(profile: str | None, generation: int, specialisation: str | None
|
|||||||
|
|
||||||
def get_generations(profile: str | None = None) -> list[SystemIdentifier]:
|
def get_generations(profile: str | None = None) -> list[SystemIdentifier]:
|
||||||
gen_list = subprocess.check_output([
|
gen_list = subprocess.check_output([
|
||||||
"@nix@/bin/nix-env",
|
f"{NIX}/bin/nix-env",
|
||||||
"--list-generations",
|
"--list-generations",
|
||||||
"-p",
|
"-p",
|
||||||
"/nix/var/nix/profiles/%s" % ("system-profiles/" + profile if profile else "system"),
|
"/nix/var/nix/profiles/%s" % ("system-profiles/" + profile if profile else "system"),
|
||||||
@ -176,7 +189,7 @@ def get_generations(profile: str | None = None) -> list[SystemIdentifier]:
|
|||||||
gen_lines = gen_list.split('\n')
|
gen_lines = gen_list.split('\n')
|
||||||
gen_lines.pop()
|
gen_lines.pop()
|
||||||
|
|
||||||
configurationLimit = @configurationLimit@
|
configurationLimit = CONFIGURATION_LIMIT
|
||||||
configurations = [
|
configurations = [
|
||||||
SystemIdentifier(
|
SystemIdentifier(
|
||||||
profile=profile,
|
profile=profile,
|
||||||
@ -189,14 +202,14 @@ def get_generations(profile: str | None = None) -> list[SystemIdentifier]:
|
|||||||
|
|
||||||
|
|
||||||
def remove_old_entries(gens: list[SystemIdentifier]) -> None:
|
def remove_old_entries(gens: list[SystemIdentifier]) -> None:
|
||||||
rex_profile = re.compile(r"^@efiSysMountPoint@/loader/entries/nixos-(.*)-generation-.*\.conf$")
|
rex_profile = re.compile(r"^" + re.escape(EFI_SYS_MOUNT_POINT) + "/loader/entries/nixos-(.*)-generation-.*\.conf$")
|
||||||
rex_generation = re.compile(r"^@efiSysMountPoint@/loader/entries/nixos.*-generation-([0-9]+)(-specialisation-.*)?\.conf$")
|
rex_generation = re.compile(r"^" + re.escape(EFI_SYS_MOUNT_POINT) + "/loader/entries/nixos.*-generation-([0-9]+)(-specialisation-.*)?\.conf$")
|
||||||
known_paths = []
|
known_paths = []
|
||||||
for gen in gens:
|
for gen in gens:
|
||||||
bootspec = get_bootspec(gen.profile, gen.generation)
|
bootspec = get_bootspec(gen.profile, gen.generation)
|
||||||
known_paths.append(copy_from_file(bootspec.kernel, True))
|
known_paths.append(copy_from_file(bootspec.kernel, True))
|
||||||
known_paths.append(copy_from_file(bootspec.initrd, True))
|
known_paths.append(copy_from_file(bootspec.initrd, True))
|
||||||
for path in glob.iglob("@efiSysMountPoint@/loader/entries/nixos*-generation-[1-9]*.conf"):
|
for path in glob.iglob(f"{EFI_SYS_MOUNT_POINT}/loader/entries/nixos*-generation-[1-9]*.conf"):
|
||||||
if rex_profile.match(path):
|
if rex_profile.match(path):
|
||||||
prof = rex_profile.sub(r"\1", path)
|
prof = rex_profile.sub(r"\1", path)
|
||||||
else:
|
else:
|
||||||
@ -207,7 +220,7 @@ def remove_old_entries(gens: list[SystemIdentifier]) -> None:
|
|||||||
continue
|
continue
|
||||||
if not (prof, gen_number, None) in gens:
|
if not (prof, gen_number, None) in gens:
|
||||||
os.unlink(path)
|
os.unlink(path)
|
||||||
for path in glob.iglob("@efiSysMountPoint@/efi/nixos/*"):
|
for path in glob.iglob(f"{EFI_SYS_MOUNT_POINT}/efi/nixos/*"):
|
||||||
if not path in known_paths and not os.path.isdir(path):
|
if not path in known_paths and not os.path.isdir(path):
|
||||||
os.unlink(path)
|
os.unlink(path)
|
||||||
|
|
||||||
@ -230,7 +243,7 @@ def install_bootloader(args: argparse.Namespace) -> None:
|
|||||||
# Since systemd version 232 a machine ID is required and it might not
|
# Since systemd version 232 a machine ID is required and it might not
|
||||||
# be there on newly installed systems, so let's generate one so that
|
# be there on newly installed systems, so let's generate one so that
|
||||||
# bootctl can find it and we can also pass it to write_entry() later.
|
# bootctl can find it and we can also pass it to write_entry() later.
|
||||||
cmd = ["@systemd@/bin/systemd-machine-id-setup", "--print"]
|
cmd = [f"{SYSTEMD}/bin/systemd-machine-id-setup", "--print"]
|
||||||
machine_id = subprocess.run(
|
machine_id = subprocess.run(
|
||||||
cmd, text=True, check=True, stdout=subprocess.PIPE
|
cmd, text=True, check=True, stdout=subprocess.PIPE
|
||||||
).stdout.rstrip()
|
).stdout.rstrip()
|
||||||
@ -242,22 +255,22 @@ def install_bootloader(args: argparse.Namespace) -> None:
|
|||||||
# flags to pass to bootctl install/update
|
# flags to pass to bootctl install/update
|
||||||
bootctl_flags = []
|
bootctl_flags = []
|
||||||
|
|
||||||
if "@canTouchEfiVariables@" != "1":
|
if CAN_TOUCH_EFI_VARIABLES != "1":
|
||||||
bootctl_flags.append("--no-variables")
|
bootctl_flags.append("--no-variables")
|
||||||
|
|
||||||
if "@graceful@" == "1":
|
if GRACEFUL == "1":
|
||||||
bootctl_flags.append("--graceful")
|
bootctl_flags.append("--graceful")
|
||||||
|
|
||||||
if os.getenv("NIXOS_INSTALL_BOOTLOADER") == "1":
|
if os.getenv("NIXOS_INSTALL_BOOTLOADER") == "1":
|
||||||
# bootctl uses fopen() with modes "wxe" and fails if the file exists.
|
# bootctl uses fopen() with modes "wxe" and fails if the file exists.
|
||||||
if os.path.exists("@efiSysMountPoint@/loader/loader.conf"):
|
if os.path.exists(f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf"):
|
||||||
os.unlink("@efiSysMountPoint@/loader/loader.conf")
|
os.unlink(f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf")
|
||||||
|
|
||||||
subprocess.check_call(["@systemd@/bin/bootctl", "--esp-path=@efiSysMountPoint@"] + bootctl_flags + ["install"])
|
subprocess.check_call([f"{SYSTEMD}/bin/bootctl", f"--esp-path={EFI_SYS_MOUNT_POINT}"] + bootctl_flags + ["install"])
|
||||||
else:
|
else:
|
||||||
# Update bootloader to latest if needed
|
# Update bootloader to latest if needed
|
||||||
available_out = subprocess.check_output(["@systemd@/bin/bootctl", "--version"], universal_newlines=True).split()[2]
|
available_out = subprocess.check_output([f"{SYSTEMD}/bin/bootctl", "--version"], universal_newlines=True).split()[2]
|
||||||
installed_out = subprocess.check_output(["@systemd@/bin/bootctl", "--esp-path=@efiSysMountPoint@", "status"], universal_newlines=True)
|
installed_out = subprocess.check_output([f"{SYSTEMD}/bin/bootctl", f"--esp-path={EFI_SYS_MOUNT_POINT}", "status"], universal_newlines=True)
|
||||||
|
|
||||||
# See status_binaries() in systemd bootctl.c for code which generates this
|
# See status_binaries() in systemd bootctl.c for code which generates this
|
||||||
installed_match = re.search(r"^\W+File:.*/EFI/(?:BOOT|systemd)/.*\.efi \(systemd-boot ([\d.]+[^)]*)\)$",
|
installed_match = re.search(r"^\W+File:.*/EFI/(?:BOOT|systemd)/.*\.efi \(systemd-boot ([\d.]+[^)]*)\)$",
|
||||||
@ -276,10 +289,10 @@ def install_bootloader(args: argparse.Namespace) -> None:
|
|||||||
|
|
||||||
if installed_version < available_version:
|
if installed_version < available_version:
|
||||||
print("updating systemd-boot from %s to %s" % (installed_version, available_version))
|
print("updating systemd-boot from %s to %s" % (installed_version, available_version))
|
||||||
subprocess.check_call(["@systemd@/bin/bootctl", "--esp-path=@efiSysMountPoint@"] + bootctl_flags + ["update"])
|
subprocess.check_call([f"{SYSTEMD}/bin/bootctl", f"--esp-path={EFI_SYS_MOUNT_POINT}"] + bootctl_flags + ["update"])
|
||||||
|
|
||||||
os.makedirs("@efiSysMountPoint@/efi/nixos", exist_ok=True)
|
os.makedirs(f"{EFI_SYS_MOUNT_POINT}/efi/nixos", exist_ok=True)
|
||||||
os.makedirs("@efiSysMountPoint@/loader/entries", exist_ok=True)
|
os.makedirs(f"{EFI_SYS_MOUNT_POINT}/loader/entries", exist_ok=True)
|
||||||
|
|
||||||
gens = get_generations()
|
gens = get_generations()
|
||||||
for profile in get_profiles():
|
for profile in get_profiles():
|
||||||
@ -302,9 +315,9 @@ def install_bootloader(args: argparse.Namespace) -> None:
|
|||||||
else:
|
else:
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
for root, _, files in os.walk('@efiSysMountPoint@/efi/nixos/.extra-files', topdown=False):
|
for root, _, files in os.walk(f"{EFI_SYS_MOUNT_POINT}/efi/nixos/.extra-files", topdown=False):
|
||||||
relative_root = root.removeprefix("@efiSysMountPoint@/efi/nixos/.extra-files").removeprefix("/")
|
relative_root = root.removeprefix(f"{EFI_SYS_MOUNT_POINT}/efi/nixos/.extra-files").removeprefix("/")
|
||||||
actual_root = os.path.join("@efiSysMountPoint@", relative_root)
|
actual_root = os.path.join(f"{EFI_SYS_MOUNT_POINT}", relative_root)
|
||||||
|
|
||||||
for file in files:
|
for file in files:
|
||||||
actual_file = os.path.join(actual_root, file)
|
actual_file = os.path.join(actual_root, file)
|
||||||
@ -317,14 +330,14 @@ def install_bootloader(args: argparse.Namespace) -> None:
|
|||||||
os.rmdir(actual_root)
|
os.rmdir(actual_root)
|
||||||
os.rmdir(root)
|
os.rmdir(root)
|
||||||
|
|
||||||
os.makedirs("@efiSysMountPoint@/efi/nixos/.extra-files", exist_ok=True)
|
os.makedirs(f"{EFI_SYS_MOUNT_POINT}/efi/nixos/.extra-files", exist_ok=True)
|
||||||
|
|
||||||
subprocess.check_call("@copyExtraFiles@")
|
subprocess.check_call(COPY_EXTRA_FILES)
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
parser = argparse.ArgumentParser(description='Update @distroName@-related systemd-boot files')
|
parser = argparse.ArgumentParser(description=f"Update {DISTRO_NAME}-related systemd-boot files")
|
||||||
parser.add_argument('default_config', metavar='DEFAULT-CONFIG', help='The default @distroName@ config to boot')
|
parser.add_argument('default_config', metavar='DEFAULT-CONFIG', help=f"The default {DISTRO_NAME} config to boot")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -334,9 +347,9 @@ def main() -> None:
|
|||||||
# it can leave the system in an unbootable state, when a crash/outage
|
# it can leave the system in an unbootable state, when a crash/outage
|
||||||
# happens shortly after an update. To decrease the likelihood of this
|
# happens shortly after an update. To decrease the likelihood of this
|
||||||
# event sync the efi filesystem after each update.
|
# event sync the efi filesystem after each update.
|
||||||
rc = libc.syncfs(os.open("@efiSysMountPoint@", os.O_RDONLY))
|
rc = libc.syncfs(os.open(f"{EFI_SYS_MOUNT_POINT}", os.O_RDONLY))
|
||||||
if rc != 0:
|
if rc != 0:
|
||||||
print("could not sync @efiSysMountPoint@: {}".format(os.strerror(rc)), file=sys.stderr)
|
print(f"could not sync {EFI_SYS_MOUNT_POINT}: {os.strerror(rc)}", file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -810,6 +810,7 @@ in {
|
|||||||
stunnel = handleTest ./stunnel.nix {};
|
stunnel = handleTest ./stunnel.nix {};
|
||||||
sudo = handleTest ./sudo.nix {};
|
sudo = handleTest ./sudo.nix {};
|
||||||
sudo-rs = handleTest ./sudo-rs.nix {};
|
sudo-rs = handleTest ./sudo-rs.nix {};
|
||||||
|
suwayomi-server = handleTest ./suwayomi-server.nix {};
|
||||||
swap-file-btrfs = handleTest ./swap-file-btrfs.nix {};
|
swap-file-btrfs = handleTest ./swap-file-btrfs.nix {};
|
||||||
swap-partition = handleTest ./swap-partition.nix {};
|
swap-partition = handleTest ./swap-partition.nix {};
|
||||||
swap-random-encryption = handleTest ./swap-random-encryption.nix {};
|
swap-random-encryption = handleTest ./swap-random-encryption.nix {};
|
||||||
|
@ -4,7 +4,7 @@ in {
|
|||||||
name = "ayatana-indicators";
|
name = "ayatana-indicators";
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
maintainers = lib.teams.lomiri.members;
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes.machine = { config, ... }: {
|
nodes.machine = { config, ... }: {
|
||||||
@ -28,16 +28,34 @@ in {
|
|||||||
enable = true;
|
enable = true;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
ayatana-indicator-messages
|
ayatana-indicator-messages
|
||||||
];
|
] ++ (with pkgs.lomiri; [
|
||||||
|
lomiri-indicator-network
|
||||||
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
# Services needed by some indicators
|
# Setup needed by some indicators
|
||||||
|
|
||||||
services.accounts-daemon.enable = true; # messages
|
services.accounts-daemon.enable = true; # messages
|
||||||
|
|
||||||
|
# Lomiri-ish setup for Lomiri indicators
|
||||||
|
# TODO move into a Lomiri module, once the package set is far enough for the DE to start
|
||||||
|
|
||||||
|
networking.networkmanager.enable = true; # lomiri-network-indicator
|
||||||
|
# TODO potentially urfkill for lomiri-network-indicator?
|
||||||
};
|
};
|
||||||
|
|
||||||
# TODO session indicator starts up in a semi-broken state, but works fine after a restart. maybe being started before graphical session is truly up & ready?
|
# TODO session indicator starts up in a semi-broken state, but works fine after a restart. maybe being started before graphical session is truly up & ready?
|
||||||
testScript = { nodes, ... }: let
|
testScript = { nodes, ... }: let
|
||||||
runCommandPerIndicatorService = command: lib.strings.concatMapStringsSep "\n" command nodes.machine.systemd.user.targets."ayatana-indicators".wants;
|
runCommandOverServiceList = list: command:
|
||||||
|
lib.strings.concatMapStringsSep "\n" command list;
|
||||||
|
|
||||||
|
runCommandOverAyatanaIndicators = runCommandOverServiceList
|
||||||
|
(builtins.filter
|
||||||
|
(service: !(lib.strings.hasPrefix "lomiri" service || lib.strings.hasPrefix "telephony-service" service))
|
||||||
|
nodes.machine.systemd.user.targets."ayatana-indicators".wants);
|
||||||
|
|
||||||
|
runCommandOverAllIndicators = runCommandOverServiceList
|
||||||
|
nodes.machine.systemd.user.targets."ayatana-indicators".wants;
|
||||||
in ''
|
in ''
|
||||||
start_all()
|
start_all()
|
||||||
machine.wait_for_x()
|
machine.wait_for_x()
|
||||||
@ -50,7 +68,7 @@ in {
|
|||||||
machine.sleep(10)
|
machine.sleep(10)
|
||||||
|
|
||||||
# Now check if all indicators were brought up successfully, and kill them for later
|
# Now check if all indicators were brought up successfully, and kill them for later
|
||||||
'' + (runCommandPerIndicatorService (service: let serviceExec = builtins.replaceStrings [ "." ] [ "-" ] service; in ''
|
'' + (runCommandOverAyatanaIndicators (service: let serviceExec = builtins.replaceStrings [ "." ] [ "-" ] service; in ''
|
||||||
machine.succeed("pgrep -f ${serviceExec}")
|
machine.succeed("pgrep -f ${serviceExec}")
|
||||||
machine.succeed("pkill -f ${serviceExec}")
|
machine.succeed("pkill -f ${serviceExec}")
|
||||||
'')) + ''
|
'')) + ''
|
||||||
@ -65,7 +83,7 @@ in {
|
|||||||
machine.sleep(10)
|
machine.sleep(10)
|
||||||
|
|
||||||
# Now check if all indicator services were brought up successfully
|
# Now check if all indicator services were brought up successfully
|
||||||
'' + runCommandPerIndicatorService (service: ''
|
'' + runCommandOverAllIndicators (service: ''
|
||||||
machine.wait_for_unit("${service}", "${user}")
|
machine.wait_for_unit("${service}", "${user}")
|
||||||
'');
|
'');
|
||||||
})
|
})
|
||||||
|
@ -1,22 +1,42 @@
|
|||||||
import ./make-test-python.nix ({ pkgs, ...}: {
|
import ./make-test-python.nix ({ lib, pkgs, ...}: {
|
||||||
name = "haproxy";
|
name = "haproxy";
|
||||||
nodes = {
|
nodes = {
|
||||||
machine = { ... }: {
|
server = { ... }: {
|
||||||
services.haproxy = {
|
services.haproxy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = ''
|
config = ''
|
||||||
|
global
|
||||||
|
limited-quic
|
||||||
|
|
||||||
defaults
|
defaults
|
||||||
|
mode http
|
||||||
timeout connect 10s
|
timeout connect 10s
|
||||||
|
timeout client 10s
|
||||||
|
timeout server 10s
|
||||||
|
|
||||||
|
log /dev/log local0 debug err
|
||||||
|
option logasap
|
||||||
|
option httplog
|
||||||
|
option httpslog
|
||||||
|
|
||||||
backend http_server
|
backend http_server
|
||||||
mode http
|
server httpd [::1]:8000 alpn http/1.1
|
||||||
server httpd [::1]:8000
|
|
||||||
|
|
||||||
frontend http
|
frontend http
|
||||||
bind *:80
|
bind :80
|
||||||
mode http
|
bind :443 ssl strict-sni crt /etc/ssl/fullchain.pem alpn h2,http/1.1
|
||||||
|
bind quic4@:443 ssl strict-sni crt /etc/ssl/fullchain.pem alpn h3 allow-0rtt
|
||||||
|
|
||||||
|
http-after-response add-header alt-svc 'h3=":443"; ma=60' if { ssl_fc }
|
||||||
|
|
||||||
http-request use-service prometheus-exporter if { path /metrics }
|
http-request use-service prometheus-exporter if { path /metrics }
|
||||||
use_backend http_server
|
use_backend http_server
|
||||||
|
|
||||||
|
frontend http-cert-auth
|
||||||
|
bind :8443 ssl strict-sni crt /etc/ssl/fullchain.pem verify required ca-file /etc/ssl/cacert.crt
|
||||||
|
bind quic4@:8443 ssl strict-sni crt /etc/ssl/fullchain.pem verify required ca-file /etc/ssl/cacert.crt alpn h3
|
||||||
|
|
||||||
|
use_backend http_server
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
services.httpd = {
|
services.httpd = {
|
||||||
@ -30,24 +50,75 @@ import ./make-test-python.nix ({ pkgs, ...}: {
|
|||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 443 8443 ];
|
||||||
|
networking.firewall.allowedUDPPorts = [ 443 8443 ];
|
||||||
|
};
|
||||||
|
client = { ... }: {
|
||||||
|
environment.systemPackages = [ pkgs.curlHTTP3 ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
testScript = ''
|
testScript = ''
|
||||||
|
# Helpers
|
||||||
|
def cmd(command):
|
||||||
|
print(f"+{command}")
|
||||||
|
r = os.system(command)
|
||||||
|
if r != 0:
|
||||||
|
raise Exception(f"Command {command} failed with exit code {r}")
|
||||||
|
|
||||||
|
def openssl(command):
|
||||||
|
cmd(f"${pkgs.openssl}/bin/openssl {command}")
|
||||||
|
|
||||||
|
# Generate CA.
|
||||||
|
openssl("req -new -newkey rsa:4096 -nodes -x509 -days 7 -subj '/C=ZZ/ST=Cloud/L=Unspecified/O=NixOS/OU=Tests/CN=CA Certificate' -keyout cacert.key -out cacert.crt")
|
||||||
|
|
||||||
|
# Generate and sign Server.
|
||||||
|
openssl("req -newkey rsa:4096 -nodes -subj '/CN=server/OU=Tests/O=NixOS' -keyout server.key -out server.csr")
|
||||||
|
openssl("x509 -req -in server.csr -out server.crt -CA cacert.crt -CAkey cacert.key -days 7")
|
||||||
|
cmd("cat server.crt server.key > fullchain.pem")
|
||||||
|
|
||||||
|
# Generate and sign Client.
|
||||||
|
openssl("req -newkey rsa:4096 -nodes -subj '/CN=client/OU=Tests/O=NixOS' -keyout client.key -out client.csr")
|
||||||
|
openssl("x509 -req -in client.csr -out client.crt -CA cacert.crt -CAkey cacert.key -days 7")
|
||||||
|
cmd("cat client.crt client.key > client.pem")
|
||||||
|
|
||||||
|
# Start the actual test.
|
||||||
start_all()
|
start_all()
|
||||||
machine.wait_for_unit("multi-user.target")
|
server.copy_from_host("fullchain.pem", "/etc/ssl/fullchain.pem")
|
||||||
machine.wait_for_unit("haproxy.service")
|
server.copy_from_host("cacert.crt", "/etc/ssl/cacert.crt")
|
||||||
machine.wait_for_unit("httpd.service")
|
server.succeed("chmod 0644 /etc/ssl/fullchain.pem /etc/ssl/cacert.crt")
|
||||||
assert "We are all good!" in machine.succeed("curl -fk http://localhost:80/index.txt")
|
|
||||||
assert "haproxy_process_pool_allocated_bytes" in machine.succeed(
|
client.copy_from_host("cacert.crt", "/etc/ssl/cacert.crt")
|
||||||
"curl -fk http://localhost:80/metrics"
|
client.copy_from_host("client.pem", "/root/client.pem")
|
||||||
)
|
|
||||||
|
server.wait_for_unit("multi-user.target")
|
||||||
|
server.wait_for_unit("haproxy.service")
|
||||||
|
server.wait_for_unit("httpd.service")
|
||||||
|
|
||||||
|
assert "We are all good!" in client.succeed("curl -f http://server/index.txt")
|
||||||
|
assert "haproxy_process_pool_allocated_bytes" in client.succeed("curl -f http://server/metrics")
|
||||||
|
|
||||||
|
with subtest("https"):
|
||||||
|
assert "We are all good!" in client.succeed("curl -f --cacert /etc/ssl/cacert.crt https://server/index.txt")
|
||||||
|
|
||||||
|
with subtest("https-cert-auth"):
|
||||||
|
# Client must succeed in authenticating with the right certificate.
|
||||||
|
assert "We are all good!" in client.succeed("curl -f --cacert /etc/ssl/cacert.crt --cert-type pem --cert /root/client.pem https://server:8443/index.txt")
|
||||||
|
# Client must fail without certificate.
|
||||||
|
client.fail("curl --cacert /etc/ssl/cacert.crt https://server:8443/index.txt")
|
||||||
|
|
||||||
|
with subtest("h3"):
|
||||||
|
assert "We are all good!" in client.succeed("curl -f --http3-only --cacert /etc/ssl/cacert.crt https://server/index.txt")
|
||||||
|
|
||||||
|
with subtest("h3-cert-auth"):
|
||||||
|
# Client must succeed in authenticating with the right certificate.
|
||||||
|
assert "We are all good!" in client.succeed("curl -f --http3-only --cacert /etc/ssl/cacert.crt --cert-type pem --cert /root/client.pem https://server:8443/index.txt")
|
||||||
|
# Client must fail without certificate.
|
||||||
|
client.fail("curl -f --http3-only --cacert /etc/ssl/cacert.crt https://server:8443/index.txt")
|
||||||
|
|
||||||
with subtest("reload"):
|
with subtest("reload"):
|
||||||
machine.succeed("systemctl reload haproxy")
|
server.succeed("systemctl reload haproxy")
|
||||||
# wait some time to ensure the following request hits the reloaded haproxy
|
# wait some time to ensure the following request hits the reloaded haproxy
|
||||||
machine.sleep(5)
|
server.sleep(5)
|
||||||
assert "We are all good!" in machine.succeed(
|
assert "We are all good!" in client.succeed("curl -f http://server/index.txt")
|
||||||
"curl -fk http://localhost:80/index.txt"
|
|
||||||
)
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
46
nixos/tests/suwayomi-server.nix
Normal file
46
nixos/tests/suwayomi-server.nix
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{ system ? builtins.currentSystem
|
||||||
|
, pkgs
|
||||||
|
, lib ? pkgs.lib
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest;
|
||||||
|
inherit (lib) recursiveUpdate;
|
||||||
|
|
||||||
|
baseTestConfig = {
|
||||||
|
meta.maintainers = with lib.maintainers; [ ratcornu ];
|
||||||
|
nodes.machine = { pkgs, ... }: {
|
||||||
|
services.suwayomi-server = {
|
||||||
|
enable = true;
|
||||||
|
settings.server.port = 1234;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
testScript = ''
|
||||||
|
machine.wait_for_unit("suwayomi-server.service")
|
||||||
|
machine.wait_for_open_port(1234)
|
||||||
|
machine.succeed("curl --fail http://localhost:1234/")
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
without-auth = makeTest (recursiveUpdate baseTestConfig {
|
||||||
|
name = "suwayomi-server-without-auth";
|
||||||
|
});
|
||||||
|
|
||||||
|
with-auth = makeTest (recursiveUpdate baseTestConfig {
|
||||||
|
name = "suwayomi-server-with-auth";
|
||||||
|
|
||||||
|
nodes.machine = { pkgs, ... }: {
|
||||||
|
services.suwayomi-server = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings.server = {
|
||||||
|
port = 1234;
|
||||||
|
basicAuthEnabled = true;
|
||||||
|
basicAuthUsername = "alice";
|
||||||
|
basicAuthPasswordFile = pkgs.writeText "snakeoil-pass.txt" "pass";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -5,12 +5,12 @@
|
|||||||
{
|
{
|
||||||
ada = buildGrammar {
|
ada = buildGrammar {
|
||||||
language = "ada";
|
language = "ada";
|
||||||
version = "0.0.0+rev=f21f13a";
|
version = "0.0.0+rev=ba0894e";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "briot";
|
owner = "briot";
|
||||||
repo = "tree-sitter-ada";
|
repo = "tree-sitter-ada";
|
||||||
rev = "f21f13afe0410311be1f78959a25aee393c569c9";
|
rev = "ba0894efa03beb70780156b91e28c716b7a4764d";
|
||||||
hash = "sha256-Qnw1skHo9Wy88WEXAxfV4kkD4v9rdvLmu/++raLIges=";
|
hash = "sha256-30yCHcO9LdZ9VKQpObWRfk49M5tC85IZvutXgzGwTjQ=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/briot/tree-sitter-ada";
|
meta.homepage = "https://github.com/briot/tree-sitter-ada";
|
||||||
};
|
};
|
||||||
@ -62,12 +62,12 @@
|
|||||||
};
|
};
|
||||||
astro = buildGrammar {
|
astro = buildGrammar {
|
||||||
language = "astro";
|
language = "astro";
|
||||||
version = "0.0.0+rev=e122a8f";
|
version = "0.0.0+rev=a092afa";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "virchau13";
|
owner = "virchau13";
|
||||||
repo = "tree-sitter-astro";
|
repo = "tree-sitter-astro";
|
||||||
rev = "e122a8fcd07e808a7b873bfadc2667834067daf1";
|
rev = "a092afa5c330495fdfbc652766c29c66ec6880f4";
|
||||||
hash = "sha256-iCVRTX2fMW1g40rHcJEwwE+tfwun+reIaj5y4AFgmKk=";
|
hash = "sha256-yYQPBGNRmr/O9hI11L3a2ydZL/lypLtabfmBdKghnzM=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/virchau13/tree-sitter-astro";
|
meta.homepage = "https://github.com/virchau13/tree-sitter-astro";
|
||||||
};
|
};
|
||||||
@ -84,12 +84,12 @@
|
|||||||
};
|
};
|
||||||
awk = buildGrammar {
|
awk = buildGrammar {
|
||||||
language = "awk";
|
language = "awk";
|
||||||
version = "0.0.0+rev=4b4b46c";
|
version = "0.0.0+rev=dcf4ac4";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Beaglefoot";
|
owner = "Beaglefoot";
|
||||||
repo = "tree-sitter-awk";
|
repo = "tree-sitter-awk";
|
||||||
rev = "4b4b46c9a44ec7fb9e8c9ce4a010295edc5be8d5";
|
rev = "dcf4ac4eaff601d87cc15604765a7ae329c1b2ee";
|
||||||
hash = "sha256-bHlll+YgRpv4cSxzNAfVhexeMB7rgkzy3pdOZ5DW1ww=";
|
hash = "sha256-ZxSgNVY5jRi6S6psG2XoNhuQnXqAjgUK7NtBK9y1WNo=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/Beaglefoot/tree-sitter-awk";
|
meta.homepage = "https://github.com/Beaglefoot/tree-sitter-awk";
|
||||||
};
|
};
|
||||||
@ -550,12 +550,12 @@
|
|||||||
};
|
};
|
||||||
erlang = buildGrammar {
|
erlang = buildGrammar {
|
||||||
language = "erlang";
|
language = "erlang";
|
||||||
version = "0.0.0+rev=57e6951";
|
version = "0.0.0+rev=54b6f81";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "WhatsApp";
|
owner = "WhatsApp";
|
||||||
repo = "tree-sitter-erlang";
|
repo = "tree-sitter-erlang";
|
||||||
rev = "57e69513efd831f9cc8207d65d96bad917ca4aa4";
|
rev = "54b6f814f43c4eac81eeedefaa7cc8762fec6683";
|
||||||
hash = "sha256-7Me0zj/+uNXgBOAyiFgljyA3hLkdGeyBKn+CaBhODMA=";
|
hash = "sha256-21pSBjg3hArexHndfqIOy5q2FGl54uWyW2fWwO+3jIw=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/WhatsApp/tree-sitter-erlang";
|
meta.homepage = "https://github.com/WhatsApp/tree-sitter-erlang";
|
||||||
};
|
};
|
||||||
@ -715,12 +715,12 @@
|
|||||||
};
|
};
|
||||||
gitcommit = buildGrammar {
|
gitcommit = buildGrammar {
|
||||||
language = "gitcommit";
|
language = "gitcommit";
|
||||||
version = "0.0.0+rev=7e3ad5f";
|
version = "0.0.0+rev=e8d9eda";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "gbprod";
|
owner = "gbprod";
|
||||||
repo = "tree-sitter-gitcommit";
|
repo = "tree-sitter-gitcommit";
|
||||||
rev = "7e3ad5fdc61cd701e146ef78e4fc6dcdf6dbca0e";
|
rev = "e8d9eda4e5ea0b08aa39d48dab0f6553058fbe0f";
|
||||||
hash = "sha256-Ct7zLvcJVqIaVy/wOGOPvghjwRcsHblPaTuifUcackI=";
|
hash = "sha256-gn945mu9JhLocKjdNbUhQnDvXNy2xxMn36oNOsbNOz4=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/gbprod/tree-sitter-gitcommit";
|
meta.homepage = "https://github.com/gbprod/tree-sitter-gitcommit";
|
||||||
};
|
};
|
||||||
@ -737,12 +737,12 @@
|
|||||||
};
|
};
|
||||||
gleam = buildGrammar {
|
gleam = buildGrammar {
|
||||||
language = "gleam";
|
language = "gleam";
|
||||||
version = "0.0.0+rev=2b49c49";
|
version = "0.0.0+rev=62c5388";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "gleam-lang";
|
owner = "gleam-lang";
|
||||||
repo = "tree-sitter-gleam";
|
repo = "tree-sitter-gleam";
|
||||||
rev = "2b49c49ef632928b5c52bb0a7269ff797d5d1414";
|
rev = "62c5388a7badb4e29315690358267a76a734bf83";
|
||||||
hash = "sha256-zFdyUqbJn7ighjXH+9EO+0Cf2Oj8ON8IYUZCIQUQ5dA=";
|
hash = "sha256-Mxjifj5eIyw6rKPMAuhEt6bXTeHX2fDeJ1VaiZ70vgE=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/gleam-lang/tree-sitter-gleam";
|
meta.homepage = "https://github.com/gleam-lang/tree-sitter-gleam";
|
||||||
};
|
};
|
||||||
@ -803,12 +803,12 @@
|
|||||||
};
|
};
|
||||||
gomod = buildGrammar {
|
gomod = buildGrammar {
|
||||||
language = "gomod";
|
language = "gomod";
|
||||||
version = "0.0.0+rev=9b86399";
|
version = "0.0.0+rev=bbe2fe3";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "camdencheek";
|
owner = "camdencheek";
|
||||||
repo = "tree-sitter-go-mod";
|
repo = "tree-sitter-go-mod";
|
||||||
rev = "9b86399ab733fbd548ba0e817e732cb3351082d2";
|
rev = "bbe2fe3be4b87e06a613e685250f473d2267f430";
|
||||||
hash = "sha256-STi1lqsfmaiMKrk7C6fjkmJ0ehhTf+AF6hly34/3BIg=";
|
hash = "sha256-OPtqXe6OMC9c5dgFH8Msj+6DU01LvLKVbCzGLj0PnLI=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/camdencheek/tree-sitter-go-mod";
|
meta.homepage = "https://github.com/camdencheek/tree-sitter-go-mod";
|
||||||
};
|
};
|
||||||
@ -1353,24 +1353,24 @@
|
|||||||
};
|
};
|
||||||
markdown = buildGrammar {
|
markdown = buildGrammar {
|
||||||
language = "markdown";
|
language = "markdown";
|
||||||
version = "0.0.0+rev=f9820b2";
|
version = "0.0.0+rev=28aa3ba";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "MDeiml";
|
owner = "MDeiml";
|
||||||
repo = "tree-sitter-markdown";
|
repo = "tree-sitter-markdown";
|
||||||
rev = "f9820b2db958228f9be339b67d2de874d065866e";
|
rev = "28aa3baef73bd458d053b613b8bd10fd102b4405";
|
||||||
hash = "sha256-0T0P018Zb4tfU2D4PLhiW8tunOInlRtrHajPOVqOpwc=";
|
hash = "sha256-HSjKYqjrJKPLbdq1UTvk/KnDqsIzVO7k5syCsIpAZpw=";
|
||||||
};
|
};
|
||||||
location = "tree-sitter-markdown";
|
location = "tree-sitter-markdown";
|
||||||
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
|
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
|
||||||
};
|
};
|
||||||
markdown_inline = buildGrammar {
|
markdown_inline = buildGrammar {
|
||||||
language = "markdown_inline";
|
language = "markdown_inline";
|
||||||
version = "0.0.0+rev=f9820b2";
|
version = "0.0.0+rev=28aa3ba";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "MDeiml";
|
owner = "MDeiml";
|
||||||
repo = "tree-sitter-markdown";
|
repo = "tree-sitter-markdown";
|
||||||
rev = "f9820b2db958228f9be339b67d2de874d065866e";
|
rev = "28aa3baef73bd458d053b613b8bd10fd102b4405";
|
||||||
hash = "sha256-0T0P018Zb4tfU2D4PLhiW8tunOInlRtrHajPOVqOpwc=";
|
hash = "sha256-HSjKYqjrJKPLbdq1UTvk/KnDqsIzVO7k5syCsIpAZpw=";
|
||||||
};
|
};
|
||||||
location = "tree-sitter-markdown-inline";
|
location = "tree-sitter-markdown-inline";
|
||||||
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
|
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
|
||||||
@ -1543,24 +1543,24 @@
|
|||||||
};
|
};
|
||||||
ocaml = buildGrammar {
|
ocaml = buildGrammar {
|
||||||
language = "ocaml";
|
language = "ocaml";
|
||||||
version = "0.0.0+rev=694c577";
|
version = "0.0.0+rev=4abfdc1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "tree-sitter";
|
owner = "tree-sitter";
|
||||||
repo = "tree-sitter-ocaml";
|
repo = "tree-sitter-ocaml";
|
||||||
rev = "694c57718fd85d514f8b81176038e7a4cfabcaaf";
|
rev = "4abfdc1c7af2c6c77a370aee974627be1c285b3b";
|
||||||
hash = "sha256-j3Hv2qOMxeBNOW+WIgIYzG3zMIFWPQpoHe94b2rT+A8=";
|
hash = "sha256-ycmjIKfrsVSVHmPP3HCxfk5wcBIF/JFH8OnU8mY1Cc8=";
|
||||||
};
|
};
|
||||||
location = "ocaml";
|
location = "ocaml";
|
||||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-ocaml";
|
meta.homepage = "https://github.com/tree-sitter/tree-sitter-ocaml";
|
||||||
};
|
};
|
||||||
ocaml_interface = buildGrammar {
|
ocaml_interface = buildGrammar {
|
||||||
language = "ocaml_interface";
|
language = "ocaml_interface";
|
||||||
version = "0.0.0+rev=694c577";
|
version = "0.0.0+rev=4abfdc1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "tree-sitter";
|
owner = "tree-sitter";
|
||||||
repo = "tree-sitter-ocaml";
|
repo = "tree-sitter-ocaml";
|
||||||
rev = "694c57718fd85d514f8b81176038e7a4cfabcaaf";
|
rev = "4abfdc1c7af2c6c77a370aee974627be1c285b3b";
|
||||||
hash = "sha256-j3Hv2qOMxeBNOW+WIgIYzG3zMIFWPQpoHe94b2rT+A8=";
|
hash = "sha256-ycmjIKfrsVSVHmPP3HCxfk5wcBIF/JFH8OnU8mY1Cc8=";
|
||||||
};
|
};
|
||||||
location = "interface";
|
location = "interface";
|
||||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-ocaml";
|
meta.homepage = "https://github.com/tree-sitter/tree-sitter-ocaml";
|
||||||
@ -1634,24 +1634,25 @@
|
|||||||
};
|
};
|
||||||
perl = buildGrammar {
|
perl = buildGrammar {
|
||||||
language = "perl";
|
language = "perl";
|
||||||
version = "0.0.0+rev=655632f";
|
version = "0.0.0+rev=9c0cea7";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "tree-sitter-perl";
|
owner = "tree-sitter-perl";
|
||||||
repo = "tree-sitter-perl";
|
repo = "tree-sitter-perl";
|
||||||
rev = "655632fa7f9174acbdbf1ad2abdac90ad3aa57a1";
|
rev = "9c0cea7720f65a5e832c4d924356d7793f519e36";
|
||||||
hash = "sha256-0EKZTdK9hXWS7VmX8QljwLDPV0yN2d99A7ZnhXRXpPk=";
|
hash = "sha256-HRhUyt2PHP+NiYqoY8iTrO/9F5iZLv4pNYHA7ZjCZmE=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/tree-sitter-perl/tree-sitter-perl";
|
meta.homepage = "https://github.com/tree-sitter-perl/tree-sitter-perl";
|
||||||
};
|
};
|
||||||
php = buildGrammar {
|
php = buildGrammar {
|
||||||
language = "php";
|
language = "php";
|
||||||
version = "0.0.0+rev=0a99dec";
|
version = "0.0.0+rev=b569a5f";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "tree-sitter";
|
owner = "tree-sitter";
|
||||||
repo = "tree-sitter-php";
|
repo = "tree-sitter-php";
|
||||||
rev = "0a99deca13c4af1fb9adcb03c958bfc9f4c740a9";
|
rev = "b569a5f2c0d592e67430520d1a0e1f765d83ceb0";
|
||||||
hash = "sha256-MfCws6WvaYJPoxoSdk1OUkqfVGCNtfMDTyndSZpABqI=";
|
hash = "sha256-ScPFOsPVy5We1MePbf0fpyMlnqVad1dszj7uyCdi3Og=";
|
||||||
};
|
};
|
||||||
|
location = "php";
|
||||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
|
meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
|
||||||
};
|
};
|
||||||
phpdoc = buildGrammar {
|
phpdoc = buildGrammar {
|
||||||
@ -1720,6 +1721,17 @@
|
|||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/amaanq/tree-sitter-pony";
|
meta.homepage = "https://github.com/amaanq/tree-sitter-pony";
|
||||||
};
|
};
|
||||||
|
printf = buildGrammar {
|
||||||
|
language = "printf";
|
||||||
|
version = "0.0.0+rev=0469630";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ObserverOfTime";
|
||||||
|
repo = "tree-sitter-printf";
|
||||||
|
rev = "04696305caceab64a78e3a749774718d87ba85a1";
|
||||||
|
hash = "sha256-MWrKImt7+E4LYsrSMKIEifXmb6MeuiNxy3pt1DCCLBQ=";
|
||||||
|
};
|
||||||
|
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-printf";
|
||||||
|
};
|
||||||
prisma = buildGrammar {
|
prisma = buildGrammar {
|
||||||
language = "prisma";
|
language = "prisma";
|
||||||
version = "0.0.0+rev=eca2596";
|
version = "0.0.0+rev=eca2596";
|
||||||
@ -2020,12 +2032,12 @@
|
|||||||
};
|
};
|
||||||
ruby = buildGrammar {
|
ruby = buildGrammar {
|
||||||
language = "ruby";
|
language = "ruby";
|
||||||
version = "0.0.0+rev=f257f3f";
|
version = "0.0.0+rev=4d9ad3f";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "tree-sitter";
|
owner = "tree-sitter";
|
||||||
repo = "tree-sitter-ruby";
|
repo = "tree-sitter-ruby";
|
||||||
rev = "f257f3f57833d584050336921773738a3fd8ca22";
|
rev = "4d9ad3f010fdc47a8433adcf9ae30c8eb8475ae7";
|
||||||
hash = "sha256-0EaU9O67faGwtO1GIxjK4Uv1etd0p1vtfrVB3d6TDF8=";
|
hash = "sha256-d3pN+Z8qGDDKuy8OyguGNVD97m2VasVvi8CckdCsOB8=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-ruby";
|
meta.homepage = "https://github.com/tree-sitter/tree-sitter-ruby";
|
||||||
};
|
};
|
||||||
@ -2042,12 +2054,12 @@
|
|||||||
};
|
};
|
||||||
scala = buildGrammar {
|
scala = buildGrammar {
|
||||||
language = "scala";
|
language = "scala";
|
||||||
version = "0.0.0+rev=696965e";
|
version = "0.0.0+rev=45b5ba0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "tree-sitter";
|
owner = "tree-sitter";
|
||||||
repo = "tree-sitter-scala";
|
repo = "tree-sitter-scala";
|
||||||
rev = "696965ee3bafd47f4b5204d1e63b4ea4b52d9f9b";
|
rev = "45b5ba0e749a8477a8fd2666f082f352859bdc3c";
|
||||||
hash = "sha256-07C9tAaG7p2xCzoAR2choNh9A7mJyusfQviqgcZmlgE=";
|
hash = "sha256-tH2STGmCaVHDL4fOh8whPmiHbwKu8ZxjS4wDt+qVjjs=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-scala";
|
meta.homepage = "https://github.com/tree-sitter/tree-sitter-scala";
|
||||||
};
|
};
|
||||||
@ -2188,12 +2200,12 @@
|
|||||||
};
|
};
|
||||||
sql = buildGrammar {
|
sql = buildGrammar {
|
||||||
language = "sql";
|
language = "sql";
|
||||||
version = "0.0.0+rev=b599f6a";
|
version = "0.0.0+rev=fd70fb3";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "derekstride";
|
owner = "derekstride";
|
||||||
repo = "tree-sitter-sql";
|
repo = "tree-sitter-sql";
|
||||||
rev = "b599f6a1ca37cb5bae827a424cd98371a0d91bdc";
|
rev = "fd70fb358d164cd93fbe2674a9cca276dc5203f7";
|
||||||
hash = "sha256-GwDkAgWcMyASzfd8layZjjEigXelJbtQTgWe7VBLgwM=";
|
hash = "sha256-GXQH/df33jxrIRXkJg2qRXrP6/3k+PodNxZ1O/ceaT8=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/derekstride/tree-sitter-sql";
|
meta.homepage = "https://github.com/derekstride/tree-sitter-sql";
|
||||||
};
|
};
|
||||||
@ -2355,12 +2367,12 @@
|
|||||||
};
|
};
|
||||||
templ = buildGrammar {
|
templ = buildGrammar {
|
||||||
language = "templ";
|
language = "templ";
|
||||||
version = "0.0.0+rev=14d1057";
|
version = "0.0.0+rev=c3baaab";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "vrischmann";
|
owner = "vrischmann";
|
||||||
repo = "tree-sitter-templ";
|
repo = "tree-sitter-templ";
|
||||||
rev = "14d105789af342f7f0c32bff2fec1a6edec59f60";
|
rev = "c3baaab33f1f1032eedd3613cd932284975bd21f";
|
||||||
hash = "sha256-wj0LH5kgMEONd4xi0c52s+UnnQhw1DJ9fE+EumKiIMM=";
|
hash = "sha256-7YMHGcDR4Wd2FolFnh2fZ3M65L5E5BLAoJyMuRsh7Uo=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/vrischmann/tree-sitter-templ";
|
meta.homepage = "https://github.com/vrischmann/tree-sitter-templ";
|
||||||
};
|
};
|
||||||
@ -2411,23 +2423,23 @@
|
|||||||
};
|
};
|
||||||
tlaplus = buildGrammar {
|
tlaplus = buildGrammar {
|
||||||
language = "tlaplus";
|
language = "tlaplus";
|
||||||
version = "0.0.0+rev=aeb2e8f";
|
version = "0.0.0+rev=aaf5bb5";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "tlaplus-community";
|
owner = "tlaplus-community";
|
||||||
repo = "tree-sitter-tlaplus";
|
repo = "tree-sitter-tlaplus";
|
||||||
rev = "aeb2e8fdc417c32ae7d1149cfa2a8ddc3b293600";
|
rev = "aaf5bb5c1df0a6e583bb51efa519a9ac788b2ad8";
|
||||||
hash = "sha256-fETWuo/mZA6tCux0Hsdbg/vTxo/cdtIES9VIp75twMw=";
|
hash = "sha256-p/khQ31bReopPyZ1TvUKI6bnFipWiGrxKO7cAYzeku4=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/tlaplus-community/tree-sitter-tlaplus";
|
meta.homepage = "https://github.com/tlaplus-community/tree-sitter-tlaplus";
|
||||||
};
|
};
|
||||||
todotxt = buildGrammar {
|
todotxt = buildGrammar {
|
||||||
language = "todotxt";
|
language = "todotxt";
|
||||||
version = "0.0.0+rev=0207f6a";
|
version = "0.0.0+rev=3937c5c";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "arnarg";
|
owner = "arnarg";
|
||||||
repo = "tree-sitter-todotxt";
|
repo = "tree-sitter-todotxt";
|
||||||
rev = "0207f6a4ab6aeafc4b091914d31d8235049a2578";
|
rev = "3937c5cd105ec4127448651a21aef45f52d19609";
|
||||||
hash = "sha256-FWVW+qWOUSri+qf+qistf8bKWJCTxUKkoO66yUYtwHI=";
|
hash = "sha256-OeAh51rcFTiexAraRzIZUR/A8h9RPwKY7rmtc3ZzoRQ=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/arnarg/tree-sitter-todotxt.git";
|
meta.homepage = "https://github.com/arnarg/tree-sitter-todotxt.git";
|
||||||
};
|
};
|
||||||
@ -2569,12 +2581,12 @@
|
|||||||
};
|
};
|
||||||
v = buildGrammar {
|
v = buildGrammar {
|
||||||
language = "v";
|
language = "v";
|
||||||
version = "0.0.0+rev=b59edea";
|
version = "0.0.0+rev=9ac84e6";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "v-analyzer";
|
owner = "v-analyzer";
|
||||||
repo = "v-analyzer";
|
repo = "v-analyzer";
|
||||||
rev = "b59edeac4a819999ebc5a78bbd384bd30bf6fa30";
|
rev = "9ac84e62396bb13c8f1d11f967f0c0f2dec1a448";
|
||||||
hash = "sha256-u1+EV3iEPU1NAHxKdThe1qXUx6jDt1MRBMTEScf8uQw=";
|
hash = "sha256-a+oV175rnCgf5uTjmYkxTelekesBCEhcTOnKGorM88c=";
|
||||||
};
|
};
|
||||||
location = "tree_sitter_v";
|
location = "tree_sitter_v";
|
||||||
meta.homepage = "https://github.com/v-analyzer/v-analyzer";
|
meta.homepage = "https://github.com/v-analyzer/v-analyzer";
|
||||||
@ -2625,12 +2637,12 @@
|
|||||||
};
|
};
|
||||||
vimdoc = buildGrammar {
|
vimdoc = buildGrammar {
|
||||||
language = "vimdoc";
|
language = "vimdoc";
|
||||||
version = "0.0.0+rev=4f8ba9e";
|
version = "0.0.0+rev=ed8695a";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "neovim";
|
owner = "neovim";
|
||||||
repo = "tree-sitter-vimdoc";
|
repo = "tree-sitter-vimdoc";
|
||||||
rev = "4f8ba9e39c8b3fbaf0bb5f70ac255474a9099359";
|
rev = "ed8695ad8de39c3f073da130156f00b1148e2891";
|
||||||
hash = "sha256-WSDz3vP/qNW1VGmXd5aGjO9PrJpjBNN4wdBohSbh9co=";
|
hash = "sha256-q5Ln8WPFrtKBfZnaAAlMh3Q/eczEt6wCMZAtx+ISCKg=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/neovim/tree-sitter-vimdoc";
|
meta.homepage = "https://github.com/neovim/tree-sitter-vimdoc";
|
||||||
};
|
};
|
||||||
@ -2669,12 +2681,12 @@
|
|||||||
};
|
};
|
||||||
wing = buildGrammar {
|
wing = buildGrammar {
|
||||||
language = "wing";
|
language = "wing";
|
||||||
version = "0.0.0+rev=d85ef04";
|
version = "0.0.0+rev=ee58533";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "winglang";
|
owner = "winglang";
|
||||||
repo = "wing";
|
repo = "wing";
|
||||||
rev = "d85ef04bb7e75e2627348b45a5f357a2c7fbee91";
|
rev = "ee58533169c654b8d7fd47fde01241e528674d8a";
|
||||||
hash = "sha256-1N/vRQpgazayL95OA6PxzhxhjU+Uj9lgrEZnflQ4FLE=";
|
hash = "sha256-HhOWVBM4SNHgN48wgWARBo6Rd3T9Y1DC91gVm1EzvUo=";
|
||||||
};
|
};
|
||||||
location = "libs/tree-sitter-wing";
|
location = "libs/tree-sitter-wing";
|
||||||
generate = true;
|
generate = true;
|
||||||
|
@ -284,6 +284,10 @@
|
|||||||
dependencies = with self; [ nvim-cmp nvim-snippy ];
|
dependencies = with self; [ nvim-cmp nvim-snippy ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cmp-tabby = super.cmp-tabby.overrideAttrs {
|
||||||
|
dependencies = with self; [ nvim-cmp ];
|
||||||
|
};
|
||||||
|
|
||||||
cmp-tabnine = super.cmp-tabnine.overrideAttrs {
|
cmp-tabnine = super.cmp-tabnine.overrideAttrs {
|
||||||
buildInputs = [ tabnine ];
|
buildInputs = [ tabnine ];
|
||||||
|
|
||||||
@ -1112,7 +1116,7 @@
|
|||||||
pname = "sg-nvim-rust";
|
pname = "sg-nvim-rust";
|
||||||
inherit (old) version src;
|
inherit (old) version src;
|
||||||
|
|
||||||
cargoHash = "sha256-U+EGS0GMWzE2yFyMH04gXpR9lR7HRMgWBecqICfTUbE=";
|
cargoHash = "sha256-BDNFZ/7nnfvtBA7T6a7MDNJsq/cOI9tgW0kxUoIcbV8=";
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config ];
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
|
||||||
|
@ -152,6 +152,7 @@ https://github.com/hrsh7th/cmp-path/,,
|
|||||||
https://github.com/lukas-reineke/cmp-rg/,HEAD,
|
https://github.com/lukas-reineke/cmp-rg/,HEAD,
|
||||||
https://github.com/dcampos/cmp-snippy/,HEAD,
|
https://github.com/dcampos/cmp-snippy/,HEAD,
|
||||||
https://github.com/f3fora/cmp-spell/,,
|
https://github.com/f3fora/cmp-spell/,,
|
||||||
|
https://github.com/nzlov/cmp-tabby/,HEAD,
|
||||||
https://github.com/tzachar/cmp-tabnine/,,
|
https://github.com/tzachar/cmp-tabnine/,,
|
||||||
https://github.com/andersevenrud/cmp-tmux/,,
|
https://github.com/andersevenrud/cmp-tmux/,,
|
||||||
https://github.com/ray-x/cmp-treesitter/,,
|
https://github.com/ray-x/cmp-treesitter/,,
|
||||||
|
@ -675,6 +675,22 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
carrie999.cyberpunk-2020 = buildVscodeMarketplaceExtension {
|
||||||
|
mktplcRef = {
|
||||||
|
name = "cyberpunk-2020";
|
||||||
|
publisher = "carrie999";
|
||||||
|
version = "0.1.4";
|
||||||
|
sha256 = "sha256-tVbd+j9+90Z07+jGAiT0gylZN9YWHdJmq2sh1wf2oGE=";
|
||||||
|
};
|
||||||
|
meta = {
|
||||||
|
description = "A cyberpunk-inspired colour theme to satisfy your neon dreams";
|
||||||
|
downloadPage = "https://marketplace.visualstudio.com/items?itemName=carrie999.cyberpunk-2020";
|
||||||
|
homepage = "https://github.com/Carrie999/cyberpunk";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
maintainers = [ lib.maintainers.d3vil0p3r ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
catppuccin = {
|
catppuccin = {
|
||||||
catppuccin-vsc = buildVscodeMarketplaceExtension {
|
catppuccin-vsc = buildVscodeMarketplaceExtension {
|
||||||
mktplcRef = {
|
mktplcRef = {
|
||||||
@ -1073,6 +1089,23 @@ let
|
|||||||
meta = { license = lib.licenses.mit; };
|
meta = { license = lib.licenses.mit; };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dhedgecock.radical-vscode = buildVscodeMarketplaceExtension {
|
||||||
|
mktplcRef = {
|
||||||
|
name = "radical-vscode";
|
||||||
|
publisher = "dhedgecock";
|
||||||
|
version = "3.3.1";
|
||||||
|
sha256 = "sha256-VvFQovuE+I0lqXU9fHrmk7nWMpuuWafqm9Acwb0+QYg=";
|
||||||
|
};
|
||||||
|
meta = {
|
||||||
|
changelog = "https://marketplace.visualstudio.com/items/dhedgecock.radical-vscode/changelog";
|
||||||
|
description = "A dark theme for radical hacking inspired by retro futuristic design";
|
||||||
|
downloadPage = "https://marketplace.visualstudio.com/items?itemName=dhedgecock.radical-vscode";
|
||||||
|
homepage = "https://github.com/dhedgecock/radical-vscode";
|
||||||
|
license = lib.licenses.isc;
|
||||||
|
maintainers = [ lib.maintainers.d3vil0p3r ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
disneystreaming.smithy = buildVscodeMarketplaceExtension {
|
disneystreaming.smithy = buildVscodeMarketplaceExtension {
|
||||||
mktplcRef = {
|
mktplcRef = {
|
||||||
publisher = "disneystreaming";
|
publisher = "disneystreaming";
|
||||||
@ -2743,6 +2776,22 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nur.just-black = buildVscodeMarketplaceExtension {
|
||||||
|
mktplcRef = {
|
||||||
|
name = "just-black";
|
||||||
|
publisher = "nur";
|
||||||
|
version = "3.1.1";
|
||||||
|
sha256 = "sha256-fatJZquCDsLDFGVzBol2D6LIZUbZ6GzqcVEFAwLodW0=";
|
||||||
|
};
|
||||||
|
meta = {
|
||||||
|
description = "A dark theme designed specifically for syntax highlighting";
|
||||||
|
downloadPage = "https://marketplace.visualstudio.com/items?itemName=nur.just-black";
|
||||||
|
homepage = "https://github.com/nurmohammed840/extension.vsix/tree/Just-Black";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
maintainers = [ lib.maintainers.d3vil0p3r ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
nvarner.typst-lsp = buildVscodeMarketplaceExtension {
|
nvarner.typst-lsp = buildVscodeMarketplaceExtension {
|
||||||
mktplcRef = {
|
mktplcRef = {
|
||||||
name = "typst-lsp";
|
name = "typst-lsp";
|
||||||
@ -3166,6 +3215,23 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
silofy.hackthebox = buildVscodeMarketplaceExtension {
|
||||||
|
mktplcRef = {
|
||||||
|
name = "hackthebox";
|
||||||
|
publisher = "silofy";
|
||||||
|
version = "0.2.9";
|
||||||
|
sha256 = "sha256-WSPuEh+osu0DpXgPAzMU5Fw0Sh8sZFst7kx26s2BsyQ=";
|
||||||
|
};
|
||||||
|
meta = {
|
||||||
|
changelog = "https://marketplace.visualstudio.com/items/silofy.hackthebox/changelog";
|
||||||
|
description = "A Visual Studio Code theme built for hackers by hackers";
|
||||||
|
downloadPage = "https://marketplace.visualstudio.com/items?itemName=silofy.hackthebox";
|
||||||
|
homepage = "https://github.com/silofy/hackthebox";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
maintainers = [ lib.maintainers.d3vil0p3r ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
skellock.just = buildVscodeMarketplaceExtension {
|
skellock.just = buildVscodeMarketplaceExtension {
|
||||||
mktplcRef = {
|
mktplcRef = {
|
||||||
name = "just";
|
name = "just";
|
||||||
@ -3443,6 +3509,23 @@ let
|
|||||||
meta.license = lib.licenses.mit;
|
meta.license = lib.licenses.mit;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
thorerik.hacker-theme = buildVscodeMarketplaceExtension {
|
||||||
|
mktplcRef = {
|
||||||
|
name = "hacker-theme";
|
||||||
|
publisher = "thorerik";
|
||||||
|
version = "3.0.1";
|
||||||
|
sha256 = "sha256-Ugk9kTJxW1kbD+X6PF96WBc1k7x4KaGu5WbCYPGQ3qE=";
|
||||||
|
};
|
||||||
|
meta = {
|
||||||
|
changelog = "https://marketplace.visualstudio.com/items/thorerik.hacker-theme/changelog";
|
||||||
|
description = "The perfect theme for writing IP tracers in Visual Basic and reverse-proxying a UNIX-system firewall";
|
||||||
|
downloadPage = "https://marketplace.visualstudio.com/items?itemName=thorerik.hacker-theme";
|
||||||
|
homepage = "https://github.com/thorerik/vscode-hacker-theme";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
maintainers = [ lib.maintainers.d3vil0p3r ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
tiehuis.zig = buildVscodeMarketplaceExtension {
|
tiehuis.zig = buildVscodeMarketplaceExtension {
|
||||||
mktplcRef = {
|
mktplcRef = {
|
||||||
name = "zig";
|
name = "zig";
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
pname = "chatblade";
|
pname = "chatblade";
|
||||||
version = "0.3.1";
|
version = "0.3.4";
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "sha256-QBURvPfDBbhF+AhQ0SsHYnZzr5RN36Cqa2DrAQZW0gU=";
|
sha256 = "sha256-ODC8n4JS7IOfAJMn7CPzJcBNMhfD5A3eEqVUK1e4mZY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
doCheck = false; # there are no tests
|
doCheck = false; # there are no tests
|
||||||
|
@ -10,16 +10,16 @@
|
|||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "werf";
|
pname = "werf";
|
||||||
version = "1.2.277";
|
version = "1.2.281";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "werf";
|
owner = "werf";
|
||||||
repo = "werf";
|
repo = "werf";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-BUoioYirMNp1Xegmsr+qGfG4G3jfYEHED4XC5u8YgOQ=";
|
hash = "sha256-mUCUj8mm5SE/jrUGp24f7Rsa/6MUNlHKOPlHzfIPTqc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-dHNvUCOxzFjdvpX+3X+ZOshOSR0DpofKkCR65Ul0hqM=";
|
vendorHash = "sha256-1rurHe3jFs+jOZhqBlH/IOoEyCEZoNpzBYnYC/UqYAU=";
|
||||||
|
|
||||||
proxyVendor = true;
|
proxyVendor = true;
|
||||||
|
|
||||||
|
@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "goeland";
|
pname = "goeland";
|
||||||
version = "0.18.2";
|
version = "0.18.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "slurdge";
|
owner = "slurdge";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-pi4hkvBg1oMlD1zYv0YNmG+AZb0oZB4UGEtCeURhjfY=";
|
sha256 = "sha256-4xhw6L6CuwW2MepwGvpVLVafMcU/g0bn/2M/8ZSRF/U=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-TZIHYFE4kJu5EOQ9oT8S0Tp/r38d5RhoLdmIrus8Ibc=";
|
vendorHash = "sha256-TZIHYFE4kJu5EOQ9oT8S0Tp/r38d5RhoLdmIrus8Ibc=";
|
||||||
|
@ -11,11 +11,11 @@
|
|||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
pname = "beeper";
|
pname = "beeper";
|
||||||
version = "3.91.55";
|
version = "3.92.23";
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.todesktop.com/2003241lzgn20jd/beeper-3.91.55-build-240103fvmyrbzxm-x86_64.AppImage";
|
url = "https://download.todesktop.com/2003241lzgn20jd/beeper-3.92.23-build-240111az2vz7kii-x86_64.AppImage";
|
||||||
hash = "sha256-QceHUVOBMDjrkSHCEG5rjHJRzVmOUEDhUJ8p9CTbIKk=";
|
hash = "sha256-M+3mJ+X/yr6yONOpdnCRECbswYlSuhlqqbg2d6Px/7s=";
|
||||||
};
|
};
|
||||||
appimage = appimageTools.wrapType2 {
|
appimage = appimageTools.wrapType2 {
|
||||||
inherit version pname src;
|
inherit version pname src;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{ lib
|
{ lib
|
||||||
|
, fetchzip
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, imagemagick
|
, imagemagick
|
||||||
, mesa
|
, mesa
|
||||||
@ -7,13 +8,15 @@
|
|||||||
, pulseaudio
|
, pulseaudio
|
||||||
, makeDesktopItem
|
, makeDesktopItem
|
||||||
, gnome
|
, gnome
|
||||||
|
|
||||||
|
, targetFlutterPlatform ? "linux"
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
libwebrtcRpath = lib.makeLibraryPath [ mesa libdrm ];
|
libwebrtcRpath = lib.makeLibraryPath [ mesa libdrm ];
|
||||||
in
|
in
|
||||||
flutter313.buildFlutterApplication rec {
|
flutter313.buildFlutterApplication (rec {
|
||||||
pname = "fluffychat";
|
pname = "fluffychat-${targetFlutterPlatform}";
|
||||||
version = "1.14.1";
|
version = "1.14.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
@ -30,6 +33,25 @@ flutter313.buildFlutterApplication rec {
|
|||||||
wakelock_windows = "sha256-Dfwe3dSScD/6kvkP67notcbb+EgTQ3kEYcH7wpra2dI=";
|
wakelock_windows = "sha256-Dfwe3dSScD/6kvkP67notcbb+EgTQ3kEYcH7wpra2dI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inherit targetFlutterPlatform;
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Chat with your friends (matrix client)";
|
||||||
|
homepage = "https://fluffychat.im/";
|
||||||
|
license = licenses.agpl3Plus;
|
||||||
|
maintainers = with maintainers; [ mkg20001 gilice ];
|
||||||
|
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
||||||
|
sourceProvenance = [ sourceTypes.fromSource ];
|
||||||
|
};
|
||||||
|
} // lib.optionalAttrs (targetFlutterPlatform == "linux") {
|
||||||
|
nativeBuildInputs = [ imagemagick ];
|
||||||
|
|
||||||
|
runtimeDependencies = [ pulseaudio ];
|
||||||
|
|
||||||
|
extraWrapProgramArgs = "--prefix PATH : ${gnome.zenity}/bin";
|
||||||
|
|
||||||
|
env.NIX_LDFLAGS = "-rpath-link ${libwebrtcRpath}";
|
||||||
|
|
||||||
desktopItem = makeDesktopItem {
|
desktopItem = makeDesktopItem {
|
||||||
name = "Fluffychat";
|
name = "Fluffychat";
|
||||||
exec = "@out@/bin/fluffychat";
|
exec = "@out@/bin/fluffychat";
|
||||||
@ -39,9 +61,6 @@ flutter313.buildFlutterApplication rec {
|
|||||||
categories = [ "Chat" "Network" "InstantMessaging" ];
|
categories = [ "Chat" "Network" "InstantMessaging" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ imagemagick ];
|
|
||||||
runtimeDependencies = [ pulseaudio ];
|
|
||||||
extraWrapProgramArgs = "--prefix PATH : ${gnome.zenity}/bin";
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
FAV=$out/app/data/flutter_assets/assets/favicon.png
|
FAV=$out/app/data/flutter_assets/assets/favicon.png
|
||||||
ICO=$out/share/icons
|
ICO=$out/share/icons
|
||||||
@ -59,15 +78,21 @@ flutter313.buildFlutterApplication rec {
|
|||||||
|
|
||||||
patchelf --add-rpath ${libwebrtcRpath} $out/app/lib/libwebrtc.so
|
patchelf --add-rpath ${libwebrtcRpath} $out/app/lib/libwebrtc.so
|
||||||
'';
|
'';
|
||||||
|
} // lib.optionalAttrs (targetFlutterPlatform == "web") {
|
||||||
env.NIX_LDFLAGS = "-rpath-link ${libwebrtcRpath}";
|
prePatch =
|
||||||
|
# https://github.com/krille-chan/fluffychat/blob/v1.17.1/scripts/prepare-web.sh
|
||||||
meta = with lib; {
|
let
|
||||||
description = "Chat with your friends (matrix client)";
|
# Use Olm 1.3.2, the oldest version, for FluffyChat 1.14.1 which depends on olm_flutter 1.2.0.
|
||||||
homepage = "https://fluffychat.im/";
|
# In the future, this should be changed to use self.pubspecLock.dependencyVersions.flutter_olm as the script does.
|
||||||
license = licenses.agpl3Plus;
|
olmVersion = "1.3.2";
|
||||||
maintainers = with maintainers; [ mkg20001 gilice ];
|
olmJs = fetchzip {
|
||||||
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
url = "https://github.com/famedly/olm/releases/download/v${olmVersion}/olm.zip";
|
||||||
sourceProvenance = [ sourceTypes.fromSource ];
|
stripRoot = false;
|
||||||
|
hash = "sha256-Vl3Cp2OaYzM5CPOOtTHtUb1W48VXePzOV6FeiIzyD1Y=";
|
||||||
};
|
};
|
||||||
}
|
in
|
||||||
|
''
|
||||||
|
rm -r assets/js/package
|
||||||
|
cp -r '${olmJs}/javascript' assets/js/package
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -25,21 +25,20 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "fractal";
|
pname = "fractal";
|
||||||
version = "5";
|
version = "6";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
domain = "gitlab.gnome.org";
|
domain = "gitlab.gnome.org";
|
||||||
owner = "GNOME";
|
owner = "GNOME";
|
||||||
repo = "fractal";
|
repo = "fractal";
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-XHb8HjQ5PDL2sen6qUivDllvYEhKnp1vQynD2Lksi30=";
|
hash = "sha256-J4Jb7G5Rfou3N7mytetIdLl0dGY5dSvTjnu8aj4kWXQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoDeps = rustPlatform.importCargoLock {
|
cargoDeps = rustPlatform.importCargoLock {
|
||||||
lockFile = ./Cargo.lock;
|
lockFile = ./Cargo.lock;
|
||||||
outputHashes = {
|
outputHashes = {
|
||||||
"matrix-sdk-0.6.2" = "sha256-X+4077rlaE8zjXHXPUfiYwa/+Bg0KTFrcsAg7yCz4ug=";
|
"matrix-sdk-0.6.2" = "sha256-CY0Ylrd3NkP1IevyQa351IS/+evG2GgrjPnR/ZDFR9Q=";
|
||||||
"mas-http-0.5.0-rc.2" = "sha256-XH+I5URcbkSY4NDwfOFhIjb+/swuGz6n9hKufziPgoY=";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -82,6 +81,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Matrix group messaging app";
|
description = "Matrix group messaging app";
|
||||||
homepage = "https://gitlab.gnome.org/GNOME/fractal";
|
homepage = "https://gitlab.gnome.org/GNOME/fractal";
|
||||||
|
changelog = "https://gitlab.gnome.org/World/fractal/-/releases/${version}";
|
||||||
license = licenses.gpl3Plus;
|
license = licenses.gpl3Plus;
|
||||||
maintainers = teams.gnome.members ++ (with maintainers; [ anselmschueler dtzWill ]);
|
maintainers = teams.gnome.members ++ (with maintainers; [ anselmschueler dtzWill ]);
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
|
@ -45,14 +45,14 @@ let
|
|||||||
|
|
||||||
pname = "slack";
|
pname = "slack";
|
||||||
|
|
||||||
x86_64-darwin-version = "4.36.134";
|
x86_64-darwin-version = "4.36.138";
|
||||||
x86_64-darwin-sha256 = "13s7vcbi180y221qh5dpvp9s94511lqwih3k52k61p98xjarrcwv";
|
x86_64-darwin-sha256 = "1dj4q98sva25kbniqnwz2l38lg48dhrdmjx31sg8j0ayrs82hha4";
|
||||||
|
|
||||||
x86_64-linux-version = "4.35.131";
|
x86_64-linux-version = "4.36.138";
|
||||||
x86_64-linux-sha256 = "0mb33vvb36aavn52yvk5fiyc8f7z56cqm1siknaap707iqqfpwpb";
|
x86_64-linux-sha256 = "06h258fvpprx37vjvd5sxl6bxnfcq3shviwx9wv8m9fmg2riwnsg";
|
||||||
|
|
||||||
aarch64-darwin-version = "4.36.134";
|
aarch64-darwin-version = "4.36.138";
|
||||||
aarch64-darwin-sha256 = "0yyqmyicf4rkpvp6al2kb7g188xhg3m8hyi24a23yhnil8hk2r3v";
|
aarch64-darwin-sha256 = "10xg5aa668iq0n56la1rqgpbzw8jym0y8dgv99f1l7yn03fcwpql";
|
||||||
|
|
||||||
version = {
|
version = {
|
||||||
x86_64-darwin = x86_64-darwin-version;
|
x86_64-darwin = x86_64-darwin-version;
|
||||||
|
@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
|
|||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
'';
|
'';
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = false;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Display and manipulate molecular structures";
|
description = "Display and manipulate molecular structures";
|
||||||
|
@ -10,13 +10,13 @@ in
|
|||||||
buildKodiBinaryAddon rec {
|
buildKodiBinaryAddon rec {
|
||||||
pname = "inputstream-adaptive";
|
pname = "inputstream-adaptive";
|
||||||
namespace = "inputstream.adaptive";
|
namespace = "inputstream.adaptive";
|
||||||
version = "20.3.14";
|
version = "20.3.16";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "xbmc";
|
owner = "xbmc";
|
||||||
repo = "inputstream.adaptive";
|
repo = "inputstream.adaptive";
|
||||||
rev = "${version}-${rel}";
|
rev = "${version}-${rel}";
|
||||||
sha256 = "sha256-9S98LgeXq2Wc5CLd5WGo7iNM9ZkSuDBO/O35wf0SjZY=";
|
sha256 = "sha256-1OY+3pvpVW8rkj7HL84IECyHpAmWsUQ9mTzuGesH+jI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
extraCMakeFlags = [
|
extraCMakeFlags = [
|
||||||
|
@ -87,7 +87,7 @@ let
|
|||||||
dartCompileCommand dartOutputType dartRuntimeCommand dartCompileFlags
|
dartCompileCommand dartOutputType dartRuntimeCommand dartCompileFlags
|
||||||
dartJitFlags;
|
dartJitFlags;
|
||||||
|
|
||||||
outputs = args.outputs or [ ] ++ [ "out" "pubcache" ];
|
outputs = [ "out" "pubcache" ] ++ args.outputs or [ ];
|
||||||
|
|
||||||
dartEntryPoints =
|
dartEntryPoints =
|
||||||
if (dartEntryPoints != null)
|
if (dartEntryPoints != null)
|
||||||
|
@ -19,15 +19,25 @@ dartInstallHook() {
|
|||||||
fi
|
fi
|
||||||
done < <(_getDartEntryPoints)
|
done < <(_getDartEntryPoints)
|
||||||
|
|
||||||
# Install the package_config.json file.
|
|
||||||
mkdir -p "$pubcache"
|
|
||||||
cp .dart_tool/package_config.json "$pubcache/package_config.json"
|
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
|
|
||||||
echo "Finished dartInstallHook"
|
echo "Finished dartInstallHook"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dartInstallCacheHook() {
|
||||||
|
echo "Executing dartInstallCacheHook"
|
||||||
|
|
||||||
|
# Install the package_config.json file.
|
||||||
|
mkdir -p "$pubcache"
|
||||||
|
cp .dart_tool/package_config.json "$pubcache/package_config.json"
|
||||||
|
|
||||||
|
echo "Finished dartInstallCacheHook"
|
||||||
|
}
|
||||||
|
|
||||||
if [ -z "${dontDartInstall-}" ] && [ -z "${installPhase-}" ]; then
|
if [ -z "${dontDartInstall-}" ] && [ -z "${installPhase-}" ]; then
|
||||||
installPhase=dartInstallHook
|
installPhase=dartInstallHook
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -z "${dontDartInstallCache-}" ]; then
|
||||||
|
postInstallHooks+=(dartInstallCacheHook)
|
||||||
|
fi
|
||||||
|
@ -17,13 +17,14 @@
|
|||||||
|
|
||||||
{ pubGetScript ? "flutter pub get"
|
{ pubGetScript ? "flutter pub get"
|
||||||
, flutterBuildFlags ? [ ]
|
, flutterBuildFlags ? [ ]
|
||||||
|
, targetFlutterPlatform ? "linux"
|
||||||
, extraWrapProgramArgs ? ""
|
, extraWrapProgramArgs ? ""
|
||||||
, ...
|
, ...
|
||||||
}@args:
|
}@args:
|
||||||
|
|
||||||
(buildDartApplication.override {
|
let
|
||||||
dart = flutter;
|
builderArgs = rec {
|
||||||
}) (args // {
|
universal = args // {
|
||||||
sdkSetupScript = ''
|
sdkSetupScript = ''
|
||||||
# Pub needs SSL certificates. Dart normally looks in a hardcoded path.
|
# Pub needs SSL certificates. Dart normally looks in a hardcoded path.
|
||||||
# https://github.com/dart-lang/sdk/blob/3.1.0/runtime/bin/security_context_linux.cc#L48
|
# https://github.com/dart-lang/sdk/blob/3.1.0/runtime/bin/security_context_linux.cc#L48
|
||||||
@ -79,8 +80,12 @@
|
|||||||
}]' "$out" | '${moreutils}/bin/sponge' "$out"
|
}]' "$out" | '${moreutils}/bin/sponge' "$out"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [
|
linux = universal // {
|
||||||
|
outputs = universal.outputs or [ ] ++ [ "debug" ];
|
||||||
|
|
||||||
|
nativeBuildInputs = (universal.nativeBuildInputs or [ ]) ++ [
|
||||||
wrapGAppsHook
|
wrapGAppsHook
|
||||||
|
|
||||||
# Flutter requires pkg-config for Linux desktop support, and many plugins
|
# Flutter requires pkg-config for Linux desktop support, and many plugins
|
||||||
@ -92,10 +97,10 @@
|
|||||||
pkg-config
|
pkg-config
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = (args.buildInputs or [ ]) ++ [ glib ];
|
buildInputs = (universal.buildInputs or [ ]) ++ [ glib ];
|
||||||
|
|
||||||
dontDartBuild = true;
|
dontDartBuild = true;
|
||||||
buildPhase = args.buildPhase or ''
|
buildPhase = universal.buildPhase or ''
|
||||||
runHook preBuild
|
runHook preBuild
|
||||||
|
|
||||||
mkdir -p build/flutter_assets/fonts
|
mkdir -p build/flutter_assets/fonts
|
||||||
@ -106,7 +111,7 @@
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
dontDartInstall = true;
|
dontDartInstall = true;
|
||||||
installPhase = args.installPhase or ''
|
installPhase = universal.installPhase or ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
built=build/linux/*/release/bundle
|
built=build/linux/*/release/bundle
|
||||||
@ -134,11 +139,6 @@
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Install the package_config.json file.
|
|
||||||
# This is normally done by dartInstallHook, but we disable it.
|
|
||||||
mkdir -p "$pubcache"
|
|
||||||
cp .dart_tool/package_config.json "$pubcache/package_config.json"
|
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
@ -147,4 +147,33 @@
|
|||||||
''${gappsWrapperArgs[@]} \
|
''${gappsWrapperArgs[@]} \
|
||||||
${extraWrapProgramArgs}
|
${extraWrapProgramArgs}
|
||||||
'';
|
'';
|
||||||
})
|
};
|
||||||
|
|
||||||
|
web = universal // {
|
||||||
|
dontDartBuild = true;
|
||||||
|
buildPhase = universal.buildPhase or ''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
mkdir -p build/flutter_assets/fonts
|
||||||
|
|
||||||
|
flutter build web -v --release ${builtins.concatStringsSep " " (map (flag: "\"${flag}\"") flutterBuildFlags)}
|
||||||
|
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
dontDartInstall = true;
|
||||||
|
installPhase = universal.installPhase or ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
cp -r build/web "$out"
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}.${targetFlutterPlatform} or (throw "Unsupported Flutter host platform: ${targetFlutterPlatform}");
|
||||||
|
|
||||||
|
minimalFlutter = flutter.override { supportedTargetFlutterPlatforms = [ "universal" targetFlutterPlatform ]; };
|
||||||
|
|
||||||
|
buildAppWith = flutter: buildDartApplication.override { dart = flutter; };
|
||||||
|
in
|
||||||
|
buildAppWith minimalFlutter (builderArgs // { passthru = builderArgs.passthru or { } // { multiShell = buildAppWith flutter builderArgs; }; })
|
||||||
|
50
pkgs/by-name/bs/bsync/package.nix
Normal file
50
pkgs/by-name/bs/bsync/package.nix
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{ lib
|
||||||
|
, fetchFromGitHub
|
||||||
|
, stdenv
|
||||||
|
, makeWrapper
|
||||||
|
, python3
|
||||||
|
, openssh
|
||||||
|
, rsync
|
||||||
|
, findutils
|
||||||
|
, which
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "bsync";
|
||||||
|
version = "unstable-2023-12-21";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "dooblem";
|
||||||
|
repo = "bsync";
|
||||||
|
rev = "25f77730750720ad68b0ab2773e79d9ca98c3647";
|
||||||
|
hash = "sha256-k25MjLis0/dp1TTS4aFeJZq/c0T01LmNcWtC+dw/kKY=";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
install -Dm555 bsync -t $out/bin
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
buildInputs = [ python3 ];
|
||||||
|
|
||||||
|
fixupPhase = ''
|
||||||
|
runHook preFixup
|
||||||
|
|
||||||
|
patchShebangs $out/bin/bsync
|
||||||
|
wrapProgram $out/bin/bsync \
|
||||||
|
--prefix PATH ":" ${lib.makeLibraryPath [ openssh rsync findutils which ]}
|
||||||
|
|
||||||
|
runHook postFixup
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://github.com/dooblem/bsync";
|
||||||
|
description = "Bidirectional Synchronization using Rsync";
|
||||||
|
license = licenses.gpl3Only;
|
||||||
|
maintainers = with maintainers; [ dietmarw ];
|
||||||
|
platforms = platforms.unix;
|
||||||
|
mainProgram = "bsync";
|
||||||
|
};
|
||||||
|
}
|
35
pkgs/by-name/li/libmpdclient/package.nix
Normal file
35
pkgs/by-name/li/libmpdclient/package.nix
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{ fetchFromGitHub
|
||||||
|
, fixDarwinDylibNames
|
||||||
|
, lib
|
||||||
|
, meson
|
||||||
|
, ninja
|
||||||
|
, stdenv
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libmpdclient";
|
||||||
|
version = "2.22";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "MusicPlayerDaemon";
|
||||||
|
repo = "libmpdclient";
|
||||||
|
rev = "v${finalAttrs.version}";
|
||||||
|
hash = "sha256-KF8IR9YV6b9ro+L9m6nHs1IggakEZddfcBKm/oKCVZY=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
|
fixDarwinDylibNames
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Client library for MPD (music player daemon)";
|
||||||
|
homepage = "https://www.musicpd.org/libs/libmpdclient/";
|
||||||
|
changelog = "https://raw.githubusercontent.com/MusicPlayerDaemon/libmpdclient/${finalAttrs.src.rev}/NEWS";
|
||||||
|
license = with lib.licenses; [ bsd2 ];
|
||||||
|
maintainers = with lib.maintainers; [ AndersonTorres ehmry ];
|
||||||
|
platforms = lib.platforms.unix;
|
||||||
|
};
|
||||||
|
})
|
57
pkgs/by-name/mq/mqttx/package.nix
Normal file
57
pkgs/by-name/mq/mqttx/package.nix
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchurl
|
||||||
|
, appimageTools
|
||||||
|
, imagemagick
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
pname = "mqttx";
|
||||||
|
version = "1.9.8";
|
||||||
|
|
||||||
|
suffixedUrl = suffix: "https://github.com/emqx/MQTTX/releases/download/v${version}/MQTTX-${version}${suffix}.AppImage";
|
||||||
|
sources = {
|
||||||
|
"aarch64-linux" = fetchurl {
|
||||||
|
url = suffixedUrl "-arm64";
|
||||||
|
hash = "sha256-pdR9LwWgFdO0Dtn7ByyYKpLrfoBnl75TzQ31aIAJ/gs=";
|
||||||
|
};
|
||||||
|
"x86_64-linux" = fetchurl {
|
||||||
|
url = suffixedUrl "";
|
||||||
|
hash = "sha256-XHAroiFuUcK0aUleNDskI1bfVX7HfTvIvSup9gKJj1w=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
src = sources.${stdenv.hostPlatform.system}
|
||||||
|
or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||||
|
|
||||||
|
appimageContents = appimageTools.extractType2 {
|
||||||
|
inherit pname version src;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
appimageTools.wrapType2 {
|
||||||
|
inherit pname version src;
|
||||||
|
|
||||||
|
extraPkgs = pkgs: [ ];
|
||||||
|
|
||||||
|
extraInstallCommands = ''
|
||||||
|
mv $out/bin/${pname}-${version} $out/bin/${pname}
|
||||||
|
install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop
|
||||||
|
install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/1024x1024/apps/${pname}.png
|
||||||
|
|
||||||
|
${imagemagick}/bin/convert ${appimageContents}/mqttx.png -resize 512x512 ${pname}_512.png
|
||||||
|
install -m 444 -D ${pname}_512.png $out/share/icons/hicolor/512x512/apps/${pname}.png
|
||||||
|
|
||||||
|
substituteInPlace $out/share/applications/${pname}.desktop \
|
||||||
|
--replace 'Exec=AppRun' 'Exec=${pname}'
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Powerful cross-platform MQTT 5.0 Desktop, CLI, and WebSocket client tools";
|
||||||
|
homepage = "https://mqttx.app/";
|
||||||
|
changelog = "https://github.com/emqx/MQTTX/releases/tag/v${version}";
|
||||||
|
license = licenses.asl20;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ gaelreyrol ];
|
||||||
|
mainProgram = "mqttx";
|
||||||
|
};
|
||||||
|
}
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "ory";
|
pname = "ory";
|
||||||
version = "0.2.2";
|
version = "0.3.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ory";
|
owner = "ory";
|
||||||
repo = "cli";
|
repo = "cli";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-5N69/Gv4eYLbZNN+sEx+RcFyhGCT0hUxDCje1qrbWiY=";
|
hash = "sha256-dO595NzdkVug955dqji/ttAPb+sMGLxJftXHzHA37Lo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@ -23,7 +23,7 @@ buildGoModule rec {
|
|||||||
"sqlite"
|
"sqlite"
|
||||||
];
|
];
|
||||||
|
|
||||||
vendorHash = "sha256-J9jyeLIT+1pFnHOUHrzmblVCJikvY05Sw9zMz5qaDOk=";
|
vendorHash = "sha256-H1dM/r7gJvjnexQwlA4uhJ7rUH15yg4AMRW/f0k1Ixw=";
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
mv $out/bin/cli $out/bin/ory
|
mv $out/bin/cli $out/bin/ory
|
||||||
@ -36,8 +36,8 @@ buildGoModule rec {
|
|||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
mainProgram = "ory";
|
mainProgram = "ory";
|
||||||
description = "The Ory CLI";
|
description = "The Ory CLI";
|
||||||
homepage = "https://www.ory.sh/";
|
homepage = "https://www.ory.sh/cli";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
maintainers = with maintainers; [ luleyleo ];
|
maintainers = with maintainers; [ luleyleo nicolas-goudry ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
58
pkgs/by-name/su/suwayomi-server/package.nix
Normal file
58
pkgs/by-name/su/suwayomi-server/package.nix
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
{ lib
|
||||||
|
, stdenvNoCC
|
||||||
|
, fetchurl
|
||||||
|
, makeWrapper
|
||||||
|
, jdk17_headless
|
||||||
|
, nixosTests
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
jdk = jdk17_headless;
|
||||||
|
in
|
||||||
|
|
||||||
|
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
|
pname = "suwayomi-server";
|
||||||
|
version = "0.7.0";
|
||||||
|
revision = 1197;
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://github.com/Suwayomi/Suwayomi-Server/releases/download/v${finalAttrs.version}/Tachidesk-Server-v${finalAttrs.version}-r${toString finalAttrs.revision}.jar";
|
||||||
|
hash = "sha256-4DO1WiBCu/8ypFgJdBmEwQXQ1xaWAlbt8N5TELomVVA=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
makeWrapper ${jdk}/bin/java $out/bin/tachidesk-server \
|
||||||
|
--add-flags "-Dsuwayomi.tachidesk.config.server.initialOpenInBrowserEnabled=false -jar $src"
|
||||||
|
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.tests = {
|
||||||
|
suwayomi-server-with-auth = nixosTests.suwayomi-server.with-auth;
|
||||||
|
suwayomi-server-without-auth = nixosTests.suwayomi-server.without-auth;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A free and open source manga reader server that runs extensions built for Tachiyomi.";
|
||||||
|
longDescription = ''
|
||||||
|
Suwayomi is an independent Tachiyomi compatible software and is not a Fork of Tachiyomi.
|
||||||
|
|
||||||
|
Suwayomi-Server is as multi-platform as you can get. Any platform that runs java and/or has a modern browser can run it. This includes Windows, Linux, macOS, chrome OS, etc.
|
||||||
|
'';
|
||||||
|
homepage = "https://github.com/Suwayomi/Suwayomi-Server";
|
||||||
|
downloadPage = "https://github.com/Suwayomi/Suwayomi-Server/releases";
|
||||||
|
changelog = "https://github.com/Suwayomi/Suwayomi-Server/releases/tag/v${finalAttrs.version}";
|
||||||
|
license = licenses.mpl20;
|
||||||
|
platforms = jdk.meta.platforms;
|
||||||
|
maintainers = with maintainers; [ ratcornu ];
|
||||||
|
mainProgram = "tachidesk-server";
|
||||||
|
};
|
||||||
|
})
|
@ -18,13 +18,13 @@
|
|||||||
}:
|
}:
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "vcpkg-tool";
|
pname = "vcpkg-tool";
|
||||||
version = "2023-12-12";
|
version = "2024-01-11";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "microsoft";
|
owner = "microsoft";
|
||||||
repo = "vcpkg-tool";
|
repo = "vcpkg-tool";
|
||||||
rev = finalAttrs.version;
|
rev = finalAttrs.version;
|
||||||
hash = "sha256-Ol31TDY3cLEzXQk8YpK2Lf3CEnM5RkJqdcm/OQGUetE=";
|
hash = "sha256-PwCJv0O0ysE4CQVOrt+rqp3pjSt/11We+ZI8vdaYpPM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
44
pkgs/by-name/xf/xfs-undelete/package.nix
Normal file
44
pkgs/by-name/xf/xfs-undelete/package.nix
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, makeWrapper
|
||||||
|
, coreutils
|
||||||
|
, tcl-8_6
|
||||||
|
, tcllib
|
||||||
|
, installShellFiles
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "xfs_undelete";
|
||||||
|
version = "unstable-2023-04-12";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
repo = "xfs_undelete";
|
||||||
|
owner = "ianka";
|
||||||
|
rev = "9e2f7abf0d3a466328e335d251c567ce4194e473";
|
||||||
|
sha256 = "0n1718bmr2lfpwx57hajancda51fyrgyk9rbybbadvd8gypvzmhh";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ tcl-8_6 tcllib coreutils ];
|
||||||
|
nativeBuildInputs = [ makeWrapper tcl-8_6.tclPackageHook installShellFiles ];
|
||||||
|
|
||||||
|
tclWrapperArgs = [ "--prefix" "PATH" ":" (lib.makeBinPath [ tcl-8_6 ]) ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
install -Dm555 xfs_undelete -t $out/bin
|
||||||
|
mv xfs_undelete.man xfs_undelete.8
|
||||||
|
installManPage xfs_undelete.8
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "An undelete tool for the XFS filesystem";
|
||||||
|
homepage = "https://github.com/ianka/xfs_undelete";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = [ maintainers.deepfire ];
|
||||||
|
};
|
||||||
|
}
|
47
pkgs/desktops/lomiri/data/lomiri-sounds/default.nix
Normal file
47
pkgs/desktops/lomiri/data/lomiri-sounds/default.nix
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{ stdenvNoCC
|
||||||
|
, lib
|
||||||
|
, fetchFromGitLab
|
||||||
|
, gitUpdater
|
||||||
|
, testers
|
||||||
|
, cmake
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
|
pname = "lomiri-sounds";
|
||||||
|
version = "22.02";
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
owner = "ubports";
|
||||||
|
repo = "development/core/lomiri-sounds";
|
||||||
|
rev = finalAttrs.version;
|
||||||
|
hash = "sha256-t9JYxrJ5ICslxidHmbD1wa6n7XZMf2a+PgMLcwgsDvU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
# Doesn't need a compiler, only installs data
|
||||||
|
substituteInPlace CMakeLists.txt \
|
||||||
|
--replace 'project (lomiri-sounds)' 'project (lomiri-sounds LANGUAGES NONE)'
|
||||||
|
'';
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
];
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
|
||||||
|
updateScript = gitUpdater { };
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Notification and ringtone sound effects for Lomiri";
|
||||||
|
homepage = "https://gitlab.com/ubports/development/core/lomiri-sounds";
|
||||||
|
license = with licenses; [ cc-by-30 cc0 cc-by-sa-30 cc-by-40 ];
|
||||||
|
maintainers = teams.lomiri.members;
|
||||||
|
platforms = platforms.all;
|
||||||
|
pkgConfigModules = [
|
||||||
|
"lomiri-sounds"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
})
|
@ -12,6 +12,7 @@ let
|
|||||||
|
|
||||||
#### Data
|
#### Data
|
||||||
lomiri-schemas = callPackage ./data/lomiri-schemas { };
|
lomiri-schemas = callPackage ./data/lomiri-schemas { };
|
||||||
|
lomiri-sounds = callPackage ./data/lomiri-sounds { };
|
||||||
suru-icon-theme = callPackage ./data/suru-icon-theme { };
|
suru-icon-theme = callPackage ./data/suru-icon-theme { };
|
||||||
|
|
||||||
#### Development tools / libraries
|
#### Development tools / libraries
|
||||||
@ -38,6 +39,7 @@ let
|
|||||||
hfd-service = callPackage ./services/hfd-service { };
|
hfd-service = callPackage ./services/hfd-service { };
|
||||||
history-service = callPackage ./services/history-service { };
|
history-service = callPackage ./services/history-service { };
|
||||||
lomiri-download-manager = callPackage ./services/lomiri-download-manager { };
|
lomiri-download-manager = callPackage ./services/lomiri-download-manager { };
|
||||||
|
lomiri-indicator-network = callPackage ./services/lomiri-indicator-network { };
|
||||||
lomiri-url-dispatcher = callPackage ./services/lomiri-url-dispatcher { };
|
lomiri-url-dispatcher = callPackage ./services/lomiri-url-dispatcher { };
|
||||||
mediascanner2 = callPackage ./services/mediascanner2 { };
|
mediascanner2 = callPackage ./services/mediascanner2 { };
|
||||||
};
|
};
|
||||||
|
@ -0,0 +1,148 @@
|
|||||||
|
{ stdenv
|
||||||
|
, lib
|
||||||
|
, fetchFromGitLab
|
||||||
|
, fetchpatch
|
||||||
|
, gitUpdater
|
||||||
|
, nixosTests
|
||||||
|
, testers
|
||||||
|
, cmake
|
||||||
|
, cmake-extras
|
||||||
|
, coreutils
|
||||||
|
, dbus
|
||||||
|
, doxygen
|
||||||
|
, gettext
|
||||||
|
, glib
|
||||||
|
, gmenuharness
|
||||||
|
, gtest
|
||||||
|
, intltool
|
||||||
|
, libsecret
|
||||||
|
, libqofono
|
||||||
|
, libqtdbusmock
|
||||||
|
, libqtdbustest
|
||||||
|
, lomiri-api
|
||||||
|
, lomiri-url-dispatcher
|
||||||
|
, networkmanager
|
||||||
|
, ofono
|
||||||
|
, pkg-config
|
||||||
|
, python3
|
||||||
|
, qtdeclarative
|
||||||
|
, qtbase
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "lomiri-indicator-network";
|
||||||
|
version = "1.0.1";
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
owner = "ubports";
|
||||||
|
repo = "development/core/lomiri-indicator-network";
|
||||||
|
rev = finalAttrs.version;
|
||||||
|
hash = "sha256-rJKWhW082ndVPEQHjuSriKtl0zQw86adxiINkZQq1hY=";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"dev"
|
||||||
|
"doc"
|
||||||
|
];
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Remove when version > 1.0.1
|
||||||
|
(fetchpatch {
|
||||||
|
name = "0001-lomiri-indicator-network-Make-less-assumptions-about-where-files-will-end-up.patch";
|
||||||
|
url = "https://gitlab.com/ubports/development/core/lomiri-indicator-network/-/commit/065212b22ab9aa8d25a61b5482ad6511e4c8510b.patch";
|
||||||
|
hash = "sha256-WrDTBKusK1808W8LZRGWaTOExu7gKpYBvkQ8hzoHoHk=";
|
||||||
|
})
|
||||||
|
|
||||||
|
# Remove when version > 1.0.1
|
||||||
|
(fetchpatch {
|
||||||
|
name = "0002-lomiri-indicator-network-Honour-CMAKE_INSTALL_DOCDIR_fordocumentation-installation.patch";
|
||||||
|
url = "https://gitlab.com/ubports/development/core/lomiri-indicator-network/-/commit/79b9e12313f765ab6e95b4d4dfefbdbca50ef3c6.patch";
|
||||||
|
hash = "sha256-vRfdegEi892UlrC9c1+5Td7CHLh7u0foPggLNBfc8lw=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
# Queried via pkg-config, would need to override a prefix variable
|
||||||
|
# Needs CMake 3.28 or higher to do as part of the call, https://github.com/NixOS/nixpkgs/pull/275284
|
||||||
|
substituteInPlace data/CMakeLists.txt \
|
||||||
|
--replace 'pkg_get_variable(DBUS_SESSION_BUS_SERVICES_DIR dbus-1 session_bus_services_dir)' 'set(DBUS_SESSION_BUS_SERVICES_DIR "''${CMAKE_INSTALL_SYSCONFDIR}/dbus-1/services")' \
|
||||||
|
--replace 'pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir)' 'set(SYSTEMD_USER_DIR "''${CMAKE_INSTALL_PREFIX}/lib/systemd/user")'
|
||||||
|
'';
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
doxygen
|
||||||
|
gettext
|
||||||
|
intltool
|
||||||
|
pkg-config
|
||||||
|
qtdeclarative
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
cmake-extras
|
||||||
|
dbus
|
||||||
|
glib
|
||||||
|
libqofono
|
||||||
|
libsecret
|
||||||
|
lomiri-api
|
||||||
|
lomiri-url-dispatcher
|
||||||
|
networkmanager
|
||||||
|
ofono
|
||||||
|
qtbase
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeCheckInputs = [
|
||||||
|
(python3.withPackages (ps: with ps; [
|
||||||
|
python-dbusmock
|
||||||
|
]))
|
||||||
|
];
|
||||||
|
|
||||||
|
checkInputs = [
|
||||||
|
gmenuharness
|
||||||
|
gtest
|
||||||
|
libqtdbusmock
|
||||||
|
libqtdbustest
|
||||||
|
];
|
||||||
|
|
||||||
|
dontWrapQtApps = true;
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
(lib.cmakeBool "GSETTINGS_LOCALINSTALL" true)
|
||||||
|
(lib.cmakeBool "GSETTINGS_COMPILE" true)
|
||||||
|
(lib.cmakeBool "ENABLE_TESTS" finalAttrs.doCheck)
|
||||||
|
(lib.cmakeBool "ENABLE_UBUNTU_COMPAT" true) # just in case something needs it
|
||||||
|
(lib.cmakeBool "BUILD_DOC" true) # lacks QML docs, needs qdoc: https://github.com/NixOS/nixpkgs/pull/245379
|
||||||
|
];
|
||||||
|
|
||||||
|
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
substituteInPlace $out/etc/dbus-1/services/com.lomiri.connectivity1.service \
|
||||||
|
--replace '/bin/false' '${lib.getExe' coreutils "false"}'
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
ayatana-indicators = [
|
||||||
|
"lomiri-indicator-network"
|
||||||
|
];
|
||||||
|
tests = {
|
||||||
|
pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
|
||||||
|
vm = nixosTests.ayatana-indicators;
|
||||||
|
};
|
||||||
|
updateScript = gitUpdater { };
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Ayatana indiator exporting the network settings menu through D-Bus";
|
||||||
|
homepage = "https://gitlab.com/ubports/development/core/lomiri-indicator-network";
|
||||||
|
license = licenses.gpl3Only;
|
||||||
|
maintainers = teams.lomiri.members;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
pkgConfigModules = [
|
||||||
|
"lomiri-connectivity-qt1"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
})
|
@ -51,12 +51,7 @@ let
|
|||||||
(mkCustomFlutter args).overrideAttrs (prev: next: {
|
(mkCustomFlutter args).overrideAttrs (prev: next: {
|
||||||
passthru = next.passthru // rec {
|
passthru = next.passthru // rec {
|
||||||
inherit wrapFlutter mkCustomFlutter mkFlutter;
|
inherit wrapFlutter mkCustomFlutter mkFlutter;
|
||||||
buildFlutterApplication = callPackage ../../../build-support/flutter {
|
buildFlutterApplication = callPackage ../../../build-support/flutter { flutter = wrapFlutter (mkCustomFlutter args); };
|
||||||
# Package a minimal version of Flutter that only uses Linux desktop release artifacts.
|
|
||||||
flutter = (wrapFlutter (mkCustomFlutter args)).override {
|
|
||||||
supportedTargetFlutterPlatforms = [ "universal" "linux" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,22 +1,22 @@
|
|||||||
# Generated by update.sh script
|
# Generated by update.sh script
|
||||||
{
|
{
|
||||||
"version" = "23.1.1";
|
"version" = "23.1.2";
|
||||||
"hashes" = {
|
"hashes" = {
|
||||||
"aarch64-linux" = {
|
"aarch64-linux" = {
|
||||||
sha256 = "0d8lxbfafgyirgs06bmfbmww61h8w3sr95z7y4x0ykfs7mghsnpd";
|
sha256 = "0bmrpp88zny0hbq4hqhs4xajqr96qxj6p5nj12m7kcr8hzh2vkf3";
|
||||||
url = "https://github.com/oracle/truffleruby/releases/download/graal-23.1.1/truffleruby-community-23.1.1-linux-aarch64.tar.gz";
|
url = "https://github.com/oracle/truffleruby/releases/download/graal-23.1.2/truffleruby-community-23.1.2-linux-aarch64.tar.gz";
|
||||||
};
|
};
|
||||||
"x86_64-linux" = {
|
"x86_64-linux" = {
|
||||||
sha256 = "1304yvllffnhwmpbcdsgcwkhc5w5w7r1rhxdwb709if8kglx793y";
|
sha256 = "0hrab1jrs59swpx33zg111wa4nv2215ygyckv47x6mmjibf30c86";
|
||||||
url = "https://github.com/oracle/truffleruby/releases/download/graal-23.1.1/truffleruby-community-23.1.1-linux-amd64.tar.gz";
|
url = "https://github.com/oracle/truffleruby/releases/download/graal-23.1.2/truffleruby-community-23.1.2-linux-amd64.tar.gz";
|
||||||
};
|
};
|
||||||
"x86_64-darwin" = {
|
"x86_64-darwin" = {
|
||||||
sha256 = "09lfski3dj3zzp7cdfrndjafx48ln0wdgb7cs3an3krh6xjchi8l";
|
sha256 = "1y68wz6rv2vksbnhmf57zlk8smgv9954np07d8ywdls99a92217z";
|
||||||
url = "https://github.com/oracle/truffleruby/releases/download/graal-23.1.1/truffleruby-community-23.1.1-macos-amd64.tar.gz";
|
url = "https://github.com/oracle/truffleruby/releases/download/graal-23.1.2/truffleruby-community-23.1.2-macos-amd64.tar.gz";
|
||||||
};
|
};
|
||||||
"aarch64-darwin" = {
|
"aarch64-darwin" = {
|
||||||
sha256 = "152mrz5hfnmsf5k1gd6rsb6yacy3zyjm2jl8q3zjl18n784np57b";
|
sha256 = "0za4ff3wlj2fgl2z3vzp2p4jf9x0fkvd98qwk1dm7lmffghfb14n";
|
||||||
url = "https://github.com/oracle/truffleruby/releases/download/graal-23.1.1/truffleruby-community-23.1.1-macos-aarch64.tar.gz";
|
url = "https://github.com/oracle/truffleruby/releases/download/graal-23.1.2/truffleruby-community-23.1.2-macos-aarch64.tar.gz";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -63,11 +63,12 @@ let
|
|||||||
# computeName :: Package -> String
|
# computeName :: Package -> String
|
||||||
computeName = {version, ...}: mkVersionedPackageName pname version;
|
computeName = {version, ...}: mkVersionedPackageName pname version;
|
||||||
|
|
||||||
# Check whether a package supports our CUDA version
|
# Check whether a package supports our CUDA version and platform.
|
||||||
# isSupported :: Package -> Bool
|
# isSupported :: Package -> Bool
|
||||||
isSupported =
|
isSupported =
|
||||||
package:
|
package:
|
||||||
!(strings.hasPrefix "unsupported" package.platform)
|
# The `platform` attribute of the package is NVIDIA's name for a redistributable architecture.
|
||||||
|
redistArch == package.platform
|
||||||
&& strings.versionAtLeast cudaVersion package.minCudaVersion
|
&& strings.versionAtLeast cudaVersion package.minCudaVersion
|
||||||
&& strings.versionAtLeast package.maxCudaVersion cudaVersion;
|
&& strings.versionAtLeast package.maxCudaVersion cudaVersion;
|
||||||
|
|
||||||
|
@ -4,13 +4,13 @@ let
|
|||||||
|
|
||||||
pkg = buildGoModule rec {
|
pkg = buildGoModule rec {
|
||||||
pname = "arduino-cli";
|
pname = "arduino-cli";
|
||||||
version = "0.34.2";
|
version = "0.35.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "arduino";
|
owner = "arduino";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = "v${version}";
|
||||||
hash = "sha256-X7vrcaJkVqzZoaIFLWJhhdlgRpckLG69uVmUUZd/XXY=";
|
hash = "sha256-5XMdI+TMUd+U6bvDQT9Q62ATxtbnRAJ/XDYWHgVEUbU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@ -23,7 +23,7 @@ let
|
|||||||
|
|
||||||
subPackages = [ "." ];
|
subPackages = [ "." ];
|
||||||
|
|
||||||
vendorHash = "sha256-cr5D7QDh65xWZJ4gq32ehklwrHWyQEWW/FZZ4gPTJBk=";
|
vendorHash = "sha256-y7YxcBFjKcQK6ilCKOyoszq64/0xG5GgTehKrKThknU=";
|
||||||
|
|
||||||
postPatch = let
|
postPatch = let
|
||||||
skipTests = [
|
skipTests = [
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "aiomqtt";
|
pname = "aiomqtt";
|
||||||
version = "1.2.1";
|
version = "2.0.0";
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
disabled = pythonOlder "3.8";
|
disabled = pythonOlder "3.8";
|
||||||
@ -21,7 +21,7 @@ buildPythonPackage rec {
|
|||||||
owner = "sbtinstruments";
|
owner = "sbtinstruments";
|
||||||
repo = "aiomqtt";
|
repo = "aiomqtt";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-P8p21wjmFDvI0iobpQsWkKYleY4M0R3yod3/mJ7V+Og=";
|
hash = "sha256-Ww4NdCtT04b4tRmarJjB4xmfRBNIQekP8iARAdpmBH0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@ -50,7 +50,7 @@ buildPythonPackage rec {
|
|||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "The idiomatic asyncio MQTT client, wrapped around paho-mqtt";
|
description = "The idiomatic asyncio MQTT client, wrapped around paho-mqtt";
|
||||||
homepage = "https://github.com/sbtinstruments/aiomqtt";
|
homepage = "https://github.com/sbtinstruments/aiomqtt";
|
||||||
changelog = "https://github.com/sbtinstruments/aiomqtt/blob/${version}/CHANGELOG.md";
|
changelog = "https://github.com/sbtinstruments/aiomqtt/blob/${src.rev}/CHANGELOG.md";
|
||||||
license = licenses.bsd3;
|
license = licenses.bsd3;
|
||||||
maintainers = with maintainers; [ ];
|
maintainers = with maintainers; [ ];
|
||||||
};
|
};
|
||||||
|
@ -14,13 +14,13 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "astropy-healpix";
|
pname = "astropy-healpix";
|
||||||
version = "1.0.1";
|
version = "1.0.2";
|
||||||
pyproject = true;
|
pyproject = true;
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit version;
|
inherit version;
|
||||||
pname = lib.replaceStrings ["-"] ["_"] pname;
|
pname = lib.replaceStrings ["-"] ["_"] pname;
|
||||||
hash = "sha256-74k4vfcpdXw4CowXNHlNc3StAOB2f8Si+mOma+8SYkI=";
|
hash = "sha256-BW+m7ZOWvtx3HTdNh3zeg9lGCj9ip4/gXb+boDlAMjo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -10,16 +10,16 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "asyncclick";
|
pname = "asyncclick";
|
||||||
version = "8.1.3.2";
|
version = "8.1.7.1";
|
||||||
format = "setuptools";
|
pyproject = true;
|
||||||
|
|
||||||
disabled = pythonOlder "3.6";
|
disabled = pythonOlder "3.9";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "python-trio";
|
owner = "python-trio";
|
||||||
repo = pname;
|
repo = "asyncclick";
|
||||||
rev = version;
|
rev = "refs/tags/${version}";
|
||||||
hash = "sha256-by1clF+WAfN/gjOg/F60O1tCZ3qAhWqiiJJY04iMzQ8=";
|
hash = "sha256-gx7s/HikvjsXalc0Z73JWMKc1SlhR+kohwk2sW4o19I=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@ -40,15 +40,18 @@ buildPythonPackage rec {
|
|||||||
];
|
];
|
||||||
|
|
||||||
disabledTests = [
|
disabledTests = [
|
||||||
# RuntimeWarning: coroutine 'Context.invoke' was never awaited
|
# AttributeError: 'Context' object has no attribute '_ctx_mgr'
|
||||||
"test_context_invoke_type"
|
"test_context_pushing"
|
||||||
];
|
];
|
||||||
|
|
||||||
pythonImportsCheck = [ "asyncclick" ];
|
pythonImportsCheck = [
|
||||||
|
"asyncclick"
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Python composable command line utility";
|
description = "Python composable command line utility";
|
||||||
homepage = "https://github.com/python-trio/asyncclick";
|
homepage = "https://github.com/python-trio/asyncclick";
|
||||||
|
changelog = "https://github.com/python-trio/asyncclick/blob/${version}/CHANGES.rst";
|
||||||
license = with licenses; [ bsd3 ];
|
license = with licenses; [ bsd3 ];
|
||||||
maintainers = with maintainers; [ fab ];
|
maintainers = with maintainers; [ fab ];
|
||||||
};
|
};
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "django-import-export";
|
pname = "django-import-export";
|
||||||
version = "3.3.5";
|
version = "3.3.6";
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
disabled = pythonOlder "3.7";
|
disabled = pythonOlder "3.7";
|
||||||
@ -22,7 +22,7 @@ buildPythonPackage rec {
|
|||||||
owner = "django-import-export";
|
owner = "django-import-export";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "refs/tags/${version}";
|
rev = "refs/tags/${version}";
|
||||||
hash = "sha256-bYb000KRnvuMSMTTicqrJ+0zU/XguQFcLATqxUvc5V0=";
|
hash = "sha256-1c+ZGCVrHqqT9aUua+7fI8fYZYBq4I/qq1yIjdVLJPY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
@ -9,20 +9,25 @@
|
|||||||
, pytest-asyncio
|
, pytest-asyncio
|
||||||
, pytestCheckHook
|
, pytestCheckHook
|
||||||
, pythonOlder
|
, pythonOlder
|
||||||
|
, setuptools
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "google-cloud-tasks";
|
pname = "google-cloud-tasks";
|
||||||
version = "2.15.0";
|
version = "2.15.1";
|
||||||
format = "setuptools";
|
pyproject = true;
|
||||||
|
|
||||||
disabled = pythonOlder "3.7";
|
disabled = pythonOlder "3.7";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
hash = "sha256-SpmTjbARHVU3hkG1I1uY5r12S8jip+JN9wb4uGO98nw=";
|
hash = "sha256-wkk3hefFhfDvL7iSFbOZqzTLaVBJPydSItjt5P4/zxY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
setuptools
|
||||||
|
];
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
google-api-core
|
google-api-core
|
||||||
grpc-google-iam-v1
|
grpc-google-iam-v1
|
||||||
|
@ -4,19 +4,21 @@
|
|||||||
, dsinternals
|
, dsinternals
|
||||||
, fetchPypi
|
, fetchPypi
|
||||||
, flask
|
, flask
|
||||||
|
, ldap3
|
||||||
, ldapdomaindump
|
, ldapdomaindump
|
||||||
, pyasn1
|
, pyasn1
|
||||||
, pycryptodomex
|
, pycryptodomex
|
||||||
, pyopenssl
|
, pyopenssl
|
||||||
, pythonOlder
|
, pythonOlder
|
||||||
, setuptools
|
, setuptools
|
||||||
|
, pytestCheckHook
|
||||||
, six
|
, six
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "impacket";
|
pname = "impacket";
|
||||||
version = "0.11.0";
|
version = "0.11.0";
|
||||||
format = "setuptools";
|
pyproject = true;
|
||||||
|
|
||||||
disabled = pythonOlder "3.7";
|
disabled = pythonOlder "3.7";
|
||||||
|
|
||||||
@ -25,25 +27,36 @@ buildPythonPackage rec {
|
|||||||
hash = "sha256-7kA5tNKu3o9fZEeLxZ+qyGA2eWviTeqNwY8An7CQXko=";
|
hash = "sha256-7kA5tNKu3o9fZEeLxZ+qyGA2eWviTeqNwY8An7CQXko=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
setuptools
|
||||||
|
];
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
charset-normalizer
|
charset-normalizer
|
||||||
dsinternals
|
dsinternals
|
||||||
flask
|
flask
|
||||||
|
ldap3
|
||||||
ldapdomaindump
|
ldapdomaindump
|
||||||
pyasn1
|
pyasn1
|
||||||
pycryptodomex
|
pycryptodomex
|
||||||
pyopenssl
|
pyopenssl
|
||||||
setuptools
|
|
||||||
six
|
six
|
||||||
];
|
];
|
||||||
|
|
||||||
# RecursionError: maximum recursion depth exceeded
|
nativeCheckInputs = [
|
||||||
doCheck = false;
|
pytestCheckHook
|
||||||
|
];
|
||||||
|
|
||||||
pythonImportsCheck = [
|
pythonImportsCheck = [
|
||||||
"impacket"
|
"impacket"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
disabledTestPaths = [
|
||||||
|
# Skip all RPC related tests
|
||||||
|
"tests/dcerpc/"
|
||||||
|
"tests/SMB_RPC/"
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Network protocols Constructors and Dissectors";
|
description = "Network protocols Constructors and Dissectors";
|
||||||
homepage = "https://github.com/SecureAuthCorp/impacket";
|
homepage = "https://github.com/SecureAuthCorp/impacket";
|
||||||
|
51
pkgs/development/python-modules/lmcloud/default.nix
Normal file
51
pkgs/development/python-modules/lmcloud/default.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{ lib
|
||||||
|
, authlib
|
||||||
|
, bleak
|
||||||
|
, buildPythonPackage
|
||||||
|
, fetchFromGitHub
|
||||||
|
, httpx
|
||||||
|
, pythonOlder
|
||||||
|
, setuptools
|
||||||
|
, websockets
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "lmcloud";
|
||||||
|
version = "0.4.35";
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
disabled = pythonOlder "3.11";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "zweckj";
|
||||||
|
repo = "lmcloud";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-TUve21yamtEmEceK/V1w7IZjnMgKConMfSY/GlqFpp8=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
setuptools
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
authlib
|
||||||
|
bleak
|
||||||
|
httpx
|
||||||
|
websockets
|
||||||
|
];
|
||||||
|
|
||||||
|
# Module has no tests
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
pythonImportsCheck = [
|
||||||
|
"lmcloud"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Library to interface with La Marzocco's cloud";
|
||||||
|
homepage = "https://github.com/zweckj/lmcloud";
|
||||||
|
changelog = "https://github.com/zweckj/lmcloud/releases/tag/v${version}";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ fab ];
|
||||||
|
};
|
||||||
|
}
|
38
pkgs/development/python-modules/pdfrw2/default.nix
Normal file
38
pkgs/development/python-modules/pdfrw2/default.nix
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{ lib
|
||||||
|
, buildPythonPackage
|
||||||
|
, fetchPypi
|
||||||
|
, pillow
|
||||||
|
, pycryptodome
|
||||||
|
, reportlab
|
||||||
|
, setuptools
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "pdfrw2";
|
||||||
|
version = "0.5.0";
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
src = fetchPypi {
|
||||||
|
inherit pname version;
|
||||||
|
hash = "sha256-5qnMq4Pnaaeov+Lb3fD0ndfr5SAy6SlXTwG7v6IZce0=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
setuptools
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
pillow
|
||||||
|
reportlab
|
||||||
|
pycryptodome
|
||||||
|
];
|
||||||
|
|
||||||
|
pythonImportCheck = [ "pdfrw" ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Pure Python library that reads and writes PDFs";
|
||||||
|
homepage = "https://github.com/sarnold/pdfrw";
|
||||||
|
maintainers = with maintainers; [ loicreynier ];
|
||||||
|
license = licenses.mit;
|
||||||
|
};
|
||||||
|
}
|
104
pkgs/development/python-modules/pins/default.nix
Normal file
104
pkgs/development/python-modules/pins/default.nix
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
{ lib
|
||||||
|
, adlfs
|
||||||
|
, appdirs
|
||||||
|
, buildPythonPackage
|
||||||
|
, fastparquet
|
||||||
|
, fetchFromGitHub
|
||||||
|
, fsspec
|
||||||
|
, gcsfs
|
||||||
|
, humanize
|
||||||
|
, importlib-metadata
|
||||||
|
, importlib-resources
|
||||||
|
, jinja2
|
||||||
|
, joblib
|
||||||
|
, pandas
|
||||||
|
, pyarrow
|
||||||
|
, pytest-cases
|
||||||
|
, pytest-parallel
|
||||||
|
, pytestCheckHook
|
||||||
|
, pythonOlder
|
||||||
|
, pyyaml
|
||||||
|
, requests
|
||||||
|
, s3fs
|
||||||
|
, setuptools
|
||||||
|
, setuptools-scm
|
||||||
|
, xxhash
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "pins";
|
||||||
|
version = "0.8.4";
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
disabled = pythonOlder "3.8";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "rstudio";
|
||||||
|
repo = "pins-python";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-rNIjHwFELHoxDxC/T5vPzHA6Ifjz01rJpTK6kjUxOIM=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
setuptools
|
||||||
|
setuptools-scm
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
appdirs
|
||||||
|
fsspec
|
||||||
|
humanize
|
||||||
|
importlib-metadata
|
||||||
|
importlib-resources
|
||||||
|
jinja2
|
||||||
|
joblib
|
||||||
|
pandas
|
||||||
|
pyyaml
|
||||||
|
requests
|
||||||
|
xxhash
|
||||||
|
];
|
||||||
|
|
||||||
|
passthru.optional-dependencies = {
|
||||||
|
aws = [
|
||||||
|
s3fs
|
||||||
|
];
|
||||||
|
azure = [
|
||||||
|
adlfs
|
||||||
|
];
|
||||||
|
gcs = [
|
||||||
|
gcsfs
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeCheckInputs = [
|
||||||
|
fastparquet
|
||||||
|
pyarrow
|
||||||
|
pytest-cases
|
||||||
|
pytest-parallel
|
||||||
|
pytestCheckHook
|
||||||
|
] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
|
||||||
|
|
||||||
|
pythonImportsCheck = [
|
||||||
|
"pins"
|
||||||
|
];
|
||||||
|
|
||||||
|
pytestFlagsArray = [
|
||||||
|
"pins/tests/"
|
||||||
|
];
|
||||||
|
|
||||||
|
disabledTestPaths = [
|
||||||
|
# Tests require network access
|
||||||
|
"pins/tests/test_boards.py"
|
||||||
|
"pins/tests/test_compat.py"
|
||||||
|
"pins/tests/test_constructors.py"
|
||||||
|
"pins/tests/test_rsconnect_api.py"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Module to publishes data, models and other Python objects";
|
||||||
|
homepage = "https://github.com/rstudio/pins-python";
|
||||||
|
changelog = "https://github.com/rstudio/pins-python/releases/tag/v${version}";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ fab ];
|
||||||
|
};
|
||||||
|
}
|
37
pkgs/development/python-modules/pyarrow-hotfix/default.nix
Normal file
37
pkgs/development/python-modules/pyarrow-hotfix/default.nix
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{ lib
|
||||||
|
, buildPythonPackage
|
||||||
|
, fetchFromGitHub
|
||||||
|
, hatchling
|
||||||
|
, pythonOlder
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "pyarrow-hotfix";
|
||||||
|
version = "0.6";
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
disabled = pythonOlder "3.7";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "pitrou";
|
||||||
|
repo = "pyarrow-hotfix";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-LlSbxIxvouzvlP6PB8J8fJaxWoRbxz4wTs7Gb5LbM4A=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
hatchling
|
||||||
|
];
|
||||||
|
|
||||||
|
pythonImportsCheck = [
|
||||||
|
"pyarrow_hotfix"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Hotfix for the PyArrow security vulnerability CVE-2023-47248";
|
||||||
|
homepage = "https://github.com/pitrou/pyarrow-hotfix";
|
||||||
|
changelog = "https://github.com/pitrou/pyarrow-hotfix/releases/tag/v${version}";
|
||||||
|
license = licenses.asl20;
|
||||||
|
maintainers = with maintainers; [ fab ];
|
||||||
|
};
|
||||||
|
}
|
@ -1,47 +1,63 @@
|
|||||||
{ stdenv
|
{ lib
|
||||||
, lib
|
, stdenv
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, invoke
|
, invoke
|
||||||
, mock
|
, mock
|
||||||
, pytestCheckHook
|
, pytestCheckHook
|
||||||
, pythonOlder
|
, pythonOlder
|
||||||
|
, setuptools
|
||||||
, sphinx-rtd-theme
|
, sphinx-rtd-theme
|
||||||
|
, typing-extensions
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "pydash";
|
pname = "pydash";
|
||||||
version = "5.1.1";
|
version = "7.0.6";
|
||||||
format = "pyproject";
|
pyproject = true;
|
||||||
|
|
||||||
disabled = pythonOlder "3.6";
|
disabled = pythonOlder "3.7";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "dgilland";
|
owner = "dgilland";
|
||||||
repo = pname;
|
repo = "pydash";
|
||||||
rev = "v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-VbuRzKwPMh5S4GZQYnh0sZOBi4LNFjMuol95tMC43b0=";
|
hash = "sha256-zwtUdP2fFFE5X0SDkBDetAQbKnZ1v24DGdzN3fQLa0A=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeCheckInputs = [
|
|
||||||
invoke
|
|
||||||
mock
|
|
||||||
sphinx-rtd-theme
|
|
||||||
pytestCheckHook
|
|
||||||
];
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
sed -i "/--cov/d" setup.cfg
|
sed -i "/--cov/d" setup.cfg
|
||||||
sed -i "/--no-cov/d" setup.cfg
|
sed -i "/--no-cov/d" setup.cfg
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
setuptools
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
typing-extensions
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeCheckInputs = [
|
||||||
|
invoke
|
||||||
|
mock
|
||||||
|
pytestCheckHook
|
||||||
|
sphinx-rtd-theme
|
||||||
|
];
|
||||||
|
|
||||||
pythonImportsCheck = [
|
pythonImportsCheck = [
|
||||||
"pydash"
|
"pydash"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
disabledTestPaths = [
|
||||||
|
# Disable mypy testing
|
||||||
|
"tests/pytest_mypy_testing/"
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Python utility libraries for doing stuff in a functional way";
|
description = "Python utility libraries for doing stuff in a functional way";
|
||||||
homepage = "https://pydash.readthedocs.io";
|
homepage = "https://pydash.readthedocs.io";
|
||||||
|
changelog = "https://github.com/dgilland/pydash/blob/v${version}/CHANGELOG.rst";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ ma27 ];
|
maintainers = with maintainers; [ ma27 ];
|
||||||
};
|
};
|
||||||
|
@ -1,24 +1,27 @@
|
|||||||
{ stdenv
|
{ lib
|
||||||
, lib
|
, stdenv
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchFromGitHub
|
|
||||||
, sphinx
|
|
||||||
, markdown
|
|
||||||
, commonmark
|
, commonmark
|
||||||
, recommonmark
|
, fetchFromGitHub
|
||||||
|
, markdown
|
||||||
, pydash
|
, pydash
|
||||||
|
, pytestCheckHook
|
||||||
|
, pythonOlder
|
||||||
, pyyaml
|
, pyyaml
|
||||||
|
, recommonmark
|
||||||
|
, setuptools
|
||||||
|
, sphinx
|
||||||
, unify
|
, unify
|
||||||
, yapf
|
, yapf
|
||||||
, python
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "sphinx-markdown-parser";
|
pname = "sphinx-markdown-parser";
|
||||||
version = "0.2.4";
|
version = "0.2.4";
|
||||||
format = "setuptools";
|
pyproject = true;
|
||||||
|
|
||||||
|
disabled = pythonOlder "3.8";
|
||||||
|
|
||||||
# PyPi release does not include requirements.txt
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "clayrisser";
|
owner = "clayrisser";
|
||||||
repo = "sphinx-markdown-parser";
|
repo = "sphinx-markdown-parser";
|
||||||
@ -28,20 +31,44 @@ buildPythonPackage rec {
|
|||||||
sha256 = "0i0hhapmdmh83yx61lxi2h4bsmhnzddamz95844g2ghm132kw5mv";
|
sha256 = "0i0hhapmdmh83yx61lxi2h4bsmhnzddamz95844g2ghm132kw5mv";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ sphinx markdown commonmark pydash pyyaml unify yapf recommonmark ];
|
nativeBuildInputs = [
|
||||||
|
setuptools
|
||||||
|
];
|
||||||
|
|
||||||
# Avoids running broken tests in test_markdown.py
|
propagatedBuildInputs = [
|
||||||
checkPhase = ''
|
commonmark
|
||||||
${python.interpreter} -m unittest -v tests/test_basic.py tests/test_sphinx.py
|
markdown
|
||||||
'';
|
pydash
|
||||||
|
pyyaml
|
||||||
|
recommonmark
|
||||||
|
unify
|
||||||
|
yapf
|
||||||
|
];
|
||||||
|
|
||||||
pythonImportsCheck = [ "sphinx_markdown_parser" ];
|
buildInputs = [
|
||||||
|
sphinx
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeCheckInputs = [
|
||||||
|
pytestCheckHook
|
||||||
|
];
|
||||||
|
|
||||||
|
pythonImportsCheck = [
|
||||||
|
"sphinx_markdown_parser"
|
||||||
|
];
|
||||||
|
|
||||||
|
disabledTests = [
|
||||||
|
# AssertionError
|
||||||
|
"test_heading"
|
||||||
|
"test_headings"
|
||||||
|
"test_integration"
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
|
|
||||||
description = "Write markdown inside of docutils & sphinx projects";
|
description = "Write markdown inside of docutils & sphinx projects";
|
||||||
homepage = "https://github.com/clayrisser/sphinx-markdown-parser";
|
homepage = "https://github.com/clayrisser/sphinx-markdown-parser";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ FlorianFranzen ];
|
maintainers = with maintainers; [ FlorianFranzen ];
|
||||||
|
broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,41 +1,56 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
|
, duckdb
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, pythonOlder
|
|
||||||
, pytestCheckHook
|
, pytestCheckHook
|
||||||
, python-dateutil
|
, python-dateutil
|
||||||
, duckdb
|
, pythonOlder
|
||||||
|
, setuptools
|
||||||
, setuptools-scm
|
, setuptools-scm
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "sqlglot";
|
pname = "sqlglot";
|
||||||
version = "17.14.2";
|
version = "20.9.0";
|
||||||
format = "setuptools";
|
pyproject = true;
|
||||||
|
|
||||||
disabled = pythonOlder "3.8";
|
disabled = pythonOlder "3.8";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
repo = "sqlglot";
|
repo = "sqlglot";
|
||||||
owner = "tobymao";
|
owner = "tobymao";
|
||||||
rev = "v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-aImshQ5jf0k62ucpK4X8G7uHGAFQkhGgjMYo4mvSvew=";
|
hash = "sha256-4czhmAJUDRj0x8dCmIXg5BQ1Uvie5vx+UtWdSSY5mnM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ setuptools-scm ];
|
nativeBuildInputs = [
|
||||||
|
setuptools
|
||||||
|
setuptools-scm
|
||||||
|
];
|
||||||
|
|
||||||
# optional dependency used in the sqlglot optimizer
|
propagatedBuildInputs = [
|
||||||
propagatedBuildInputs = [ python-dateutil ];
|
# Optional dependency used in the sqlglot optimizer
|
||||||
|
python-dateutil
|
||||||
|
];
|
||||||
|
|
||||||
nativeCheckInputs = [ pytestCheckHook duckdb ];
|
nativeCheckInputs = [
|
||||||
|
pytestCheckHook
|
||||||
|
duckdb
|
||||||
|
];
|
||||||
|
|
||||||
# these integration tests assume a running Spark instance
|
disabledTestPaths = [
|
||||||
disabledTestPaths = [ "tests/dataframe/integration" ];
|
# These integration tests assume a running Spark instance
|
||||||
|
"tests/dataframe/integration"
|
||||||
|
];
|
||||||
|
|
||||||
pythonImportsCheck = [ "sqlglot" ];
|
pythonImportsCheck = [
|
||||||
|
"sqlglot"
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A no dependency Python SQL parser, transpiler, and optimizer";
|
description = "A no dependency Python SQL parser, transpiler, and optimizer";
|
||||||
homepage = "https://github.com/tobymao/sqlglot";
|
homepage = "https://github.com/tobymao/sqlglot";
|
||||||
|
changelog = "https://github.com/tobymao/sqlglot/blob/v${version}/CHANGELOG.md";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ cpcloud ];
|
maintainers = with maintainers; [ cpcloud ];
|
||||||
};
|
};
|
||||||
|
@ -1,26 +1,47 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
|
, pythonOlder
|
||||||
|
, setuptools
|
||||||
|
, pytestCheckHook
|
||||||
, untokenize
|
, untokenize
|
||||||
, unittestCheckHook
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "unify";
|
pname = "unify";
|
||||||
version = "0.5";
|
version = "0.5";
|
||||||
format = "setuptools";
|
pyproject = true;
|
||||||
|
|
||||||
|
disabled = pythonOlder "3.9";
|
||||||
|
|
||||||
# PyPi release is missing tests (see https://github.com/myint/unify/pull/18)
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "myint";
|
owner = "myint";
|
||||||
repo = "unify";
|
repo = "unify";
|
||||||
rev = "v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
sha256 = "1l6xxygaigacsxf0g5f7w5gpqha1ava6mcns81kqqy6vw91pyrbi";
|
hash = "sha256-cWV/Q+LbeIxnQNqyatRWQUF8X+HHlQdc10y9qJ7v3dA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ untokenize ];
|
nativeBuildInputs = [
|
||||||
|
setuptools
|
||||||
|
];
|
||||||
|
|
||||||
nativeCheckInputs = [ unittestCheckHook ];
|
propagatedBuildInputs = [
|
||||||
|
untokenize
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeCheckInputs = [
|
||||||
|
pytestCheckHook
|
||||||
|
];
|
||||||
|
|
||||||
|
pythonImportsCheck = [
|
||||||
|
"unify"
|
||||||
|
];
|
||||||
|
|
||||||
|
disabledTests = [
|
||||||
|
# https://github.com/myint/unify/issues/21
|
||||||
|
"test_format_code"
|
||||||
|
"test_format_code_with_backslash_in_comment"
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Modifies strings to all use the same quote where possible";
|
description = "Modifies strings to all use the same quote where possible";
|
||||||
|
@ -17,13 +17,13 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "castxml";
|
pname = "castxml";
|
||||||
version = "0.6.2";
|
version = "0.6.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "CastXML";
|
owner = "CastXML";
|
||||||
repo = "CastXML";
|
repo = "CastXML";
|
||||||
rev = "v${finalAttrs.version}";
|
rev = "v${finalAttrs.version}";
|
||||||
hash = "sha256-x27koa0q+rDqPmfHMf7v7KTx3bfDgqS/FkPAX5auqaw=";
|
hash = "sha256-g/BgKkU8Me6EacDm+KFAsKq5++v/b+Par0x7lzBzHw8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
python3.pkgs.buildPythonApplication rec {
|
python3.pkgs.buildPythonApplication rec {
|
||||||
pname = "distgen";
|
pname = "distgen";
|
||||||
version = "1.5";
|
version = "1.17";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "08f9rw5irgv0gw7jizk5f9csn0yhrdnb84k40px1zbypsylvr5c5";
|
sha256 = "sha256-Md6R1thUtPQ7BFZsWmTDuNdD7UHMMFlEVksIJZAyjk4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeCheckInputs = with python3.pkgs; [
|
nativeCheckInputs = with python3.pkgs; [
|
||||||
|
@ -12,13 +12,13 @@
|
|||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "kdash";
|
pname = "kdash";
|
||||||
version = "0.4.5";
|
version = "0.4.7";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kdash-rs";
|
owner = "kdash-rs";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-6jCbsF9Nl5A7PZM59Z1ozcJ3V0ajA/4V3A6hunrB9Xg=";
|
sha256 = "sha256-KQ1SLnXtox/bIV32guEfC2LSt8LDWGSG5b9i0gqS2Yc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ perl python3 pkg-config ];
|
nativeBuildInputs = [ perl python3 pkg-config ];
|
||||||
@ -26,7 +26,7 @@ rustPlatform.buildRustPackage rec {
|
|||||||
buildInputs = [ openssl xorg.xcbutil ]
|
buildInputs = [ openssl xorg.xcbutil ]
|
||||||
++ lib.optional stdenv.isDarwin AppKit;
|
++ lib.optional stdenv.isDarwin AppKit;
|
||||||
|
|
||||||
cargoHash = "sha256-EwlY4kBieFYxXGreeFb2VxLMwFZnYB6+d/Zv7fjsJls=";
|
cargoHash = "sha256-bgS93o654xDVz2OMFy1mwxCKQESV8MPZ4Mjb0IdypLU=";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A simple and fast dashboard for Kubernetes";
|
description = "A simple and fast dashboard for Kubernetes";
|
||||||
|
@ -5,16 +5,16 @@
|
|||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "neocmakelsp";
|
pname = "neocmakelsp";
|
||||||
version = "0.6.17";
|
version = "0.6.19";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Decodetalkers";
|
owner = "Decodetalkers";
|
||||||
repo = "neocmakelsp";
|
repo = "neocmakelsp";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-0Rc5oPm6BAjPmoRHUO3gVivbQt2p2y62VbT5NIzHtpI=";
|
hash = "sha256-nYZ9H66sA5umOTn/w/P62kJy3WHLwYPWWs1B74bTAEM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-7ifdmW9JBjz0jxpltn5gFa60oNsB4daA6cXCLnBne7o=";
|
cargoHash = "sha256-1jpKo/fSWLf0pFgzTvnkaghz/Fdy+MJhZsKQPaJHlfs=";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A cmake lsp based on tower-lsp and treesitter";
|
description = "A cmake lsp based on tower-lsp and treesitter";
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
tree-sitter-json5 = lib.importJSON ./tree-sitter-json5.json;
|
tree-sitter-json5 = lib.importJSON ./tree-sitter-json5.json;
|
||||||
tree-sitter-jsonnet = lib.importJSON ./tree-sitter-jsonnet.json;
|
tree-sitter-jsonnet = lib.importJSON ./tree-sitter-jsonnet.json;
|
||||||
tree-sitter-julia = lib.importJSON ./tree-sitter-julia.json;
|
tree-sitter-julia = lib.importJSON ./tree-sitter-julia.json;
|
||||||
|
tree-sitter-just = lib.importJSON ./tree-sitter-just.json;
|
||||||
tree-sitter-kotlin = lib.importJSON ./tree-sitter-kotlin.json;
|
tree-sitter-kotlin = lib.importJSON ./tree-sitter-kotlin.json;
|
||||||
tree-sitter-latex = lib.importJSON ./tree-sitter-latex.json;
|
tree-sitter-latex = lib.importJSON ./tree-sitter-latex.json;
|
||||||
tree-sitter-ledger = lib.importJSON ./tree-sitter-ledger.json;
|
tree-sitter-ledger = lib.importJSON ./tree-sitter-ledger.json;
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"url": "https://github.com/IndianBoy42/tree-sitter-just",
|
||||||
|
"rev": "f807ab33c36651ecb503a291aed933932754864d",
|
||||||
|
"date": "2024-01-11T04:53:14-05:00",
|
||||||
|
"path": "/nix/store/f6b4xvxkbzrwmxk8vr1gz4c3g3pqh2hz-tree-sitter-just",
|
||||||
|
"sha256": "1ng49slp5x98s9ydc7gha7gkcj93ks4iv0ixc7n0z9dr4akqrbw8",
|
||||||
|
"hash": "sha256-iK+MpyK5pQ/sYT2CHYmeI0k231HwHdZ80ij1cqlO5Nk=",
|
||||||
|
"fetchLFS": false,
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"deepClone": false,
|
||||||
|
"leaveDotGit": false
|
||||||
|
}
|
@ -108,6 +108,10 @@ let
|
|||||||
orga = "wilfred";
|
orga = "wilfred";
|
||||||
repo = "tree-sitter-elisp";
|
repo = "tree-sitter-elisp";
|
||||||
};
|
};
|
||||||
|
"tree-sitter-just" = {
|
||||||
|
orga = "IndianBoy42";
|
||||||
|
repo = "tree-sitter-just";
|
||||||
|
};
|
||||||
"tree-sitter-nix" = {
|
"tree-sitter-nix" = {
|
||||||
orga = "cstrahan";
|
orga = "cstrahan";
|
||||||
repo = "tree-sitter-nix";
|
repo = "tree-sitter-nix";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
rufo (0.16.2)
|
rufo (0.17.0)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
@ -10,4 +10,4 @@ DEPENDENCIES
|
|||||||
rufo
|
rufo
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.4.20
|
2.5.3
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "11nm1vzr3vd85yy4rd7ndrrx1ygm3m2jmw9r0b9lfxlj8rc1rip2";
|
sha256 = "1rqq6mf7fvwvc9m3d5w5ysch3h7z4ml1vvdvy26064fb6lrnn5ai";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.16.2";
|
version = "0.17.0";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -10,13 +10,13 @@
|
|||||||
}:
|
}:
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "sentry-cli";
|
pname = "sentry-cli";
|
||||||
version = "2.23.2";
|
version = "2.25.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "getsentry";
|
owner = "getsentry";
|
||||||
repo = "sentry-cli";
|
repo = "sentry-cli";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-txxDA/8pQDiZsoxrdWz6JZmjpyeILWHl1rUHzPacJN8=";
|
sha256 = "sha256-IAtOlWIs1BScr569s8Y8A+m1CzzGrSXX/CaqkXubZfA=";
|
||||||
};
|
};
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ rustPlatform.buildRustPackage rec {
|
|||||||
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ CoreServices Security SystemConfiguration ];
|
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ CoreServices Security SystemConfiguration ];
|
||||||
nativeBuildInputs = [ pkg-config ];
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
|
||||||
cargoHash = "sha256-KytXqILji1pbiMz7OX+O5B2bw5MMlKf/MYh13+nd+bg=";
|
cargoHash = "sha256-oydBeEOFTmDibUZZSwe7WMcU5eDshsDogPRlxrrx1i8=";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "https://docs.sentry.io/cli/";
|
homepage = "https://docs.sentry.io/cli/";
|
||||||
|
@ -10,13 +10,13 @@
|
|||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "fastly";
|
pname = "fastly";
|
||||||
version = "10.7.0";
|
version = "10.8.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "fastly";
|
owner = "fastly";
|
||||||
repo = "cli";
|
repo = "cli";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-KqFBsSoiKzvbSG5XanlFcU8NkveksnEbfqNuPeWEb48=";
|
hash = "sha256-XlfTtA4jYFrs1W8pyulkqbhrRt8vS+oPB/g9/tIW8Ws=";
|
||||||
# The git commit is part of the `fastly version` original output;
|
# The git commit is part of the `fastly version` original output;
|
||||||
# leave that output the same in nixpkgs. Use the `.git` directory
|
# leave that output the same in nixpkgs. Use the `.git` directory
|
||||||
# to retrieve the commit SHA, and remove the directory afterwards,
|
# to retrieve the commit SHA, and remove the directory afterwards,
|
||||||
@ -33,7 +33,7 @@ buildGoModule rec {
|
|||||||
"cmd/fastly"
|
"cmd/fastly"
|
||||||
];
|
];
|
||||||
|
|
||||||
vendorHash = "sha256-Mh737emdQkIoNOAkaTafCoMQnLqXIGMKX6X5ClsmMzc=";
|
vendorHash = "sha256-sN6kJspIG3XKW71sTjINE+hoWHNbd8ZmVEXNcvuvThg=";
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
installShellFiles
|
installShellFiles
|
||||||
|
@ -15,7 +15,10 @@ stdenv.mkDerivation rec {
|
|||||||
'/usr/include/linux/' "${linuxHeaders}/include/linux/"
|
'/usr/include/linux/' "${linuxHeaders}/include/linux/"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
makeFlags = [ "prefix=" ];
|
makeFlags = [
|
||||||
|
"prefix="
|
||||||
|
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
|
||||||
|
];
|
||||||
|
|
||||||
preInstall = ''
|
preInstall = ''
|
||||||
export DESTDIR=$out
|
export DESTDIR=$out
|
||||||
|
@ -4507,7 +4507,8 @@
|
|||||||
paho-mqtt
|
paho-mqtt
|
||||||
];
|
];
|
||||||
"snmp" = ps: with ps; [
|
"snmp" = ps: with ps; [
|
||||||
]; # missing inputs: pysnmp-lextudio
|
pysnmp-lextudio
|
||||||
|
];
|
||||||
"snooz" = ps: with ps; [
|
"snooz" = ps: with ps; [
|
||||||
aioesphomeapi
|
aioesphomeapi
|
||||||
aiohttp-cors
|
aiohttp-cors
|
||||||
@ -6317,6 +6318,7 @@
|
|||||||
"smtp"
|
"smtp"
|
||||||
"snapcast"
|
"snapcast"
|
||||||
"snips"
|
"snips"
|
||||||
|
"snmp"
|
||||||
"snooz"
|
"snooz"
|
||||||
"solaredge"
|
"solaredge"
|
||||||
"solarlog"
|
"solarlog"
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
{ lib
|
|
||||||
, stdenv
|
|
||||||
, fetchFromGitHub
|
|
||||||
, meson
|
|
||||||
, ninja
|
|
||||||
, fixDarwinDylibNames
|
|
||||||
}:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "libmpdclient";
|
|
||||||
version = "2.20";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "MusicPlayerDaemon";
|
|
||||||
repo = pname;
|
|
||||||
rev = "v${version}";
|
|
||||||
sha256 = "sha256-qEgdwG7ygVblIa3uRf1tddxHg7T1yvY17nbhZ7NRNvg=";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ meson ninja ]
|
|
||||||
++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Client library for MPD (music player daemon)";
|
|
||||||
homepage = "https://www.musicpd.org/libs/libmpdclient/";
|
|
||||||
license = licenses.bsd2;
|
|
||||||
maintainers = with maintainers; [ ehmry AndersonTorres ];
|
|
||||||
platforms = platforms.unix;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,7 +1,7 @@
|
|||||||
{ lib, stdenv, buildGoModule, fetchFromGitHub, makeWrapper, iptables, iproute2, procps, shadow, getent }:
|
{ lib, stdenv, buildGoModule, fetchFromGitHub, makeWrapper, iptables, iproute2, procps, shadow, getent }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.56.1";
|
version = "1.58.0";
|
||||||
in
|
in
|
||||||
buildGoModule {
|
buildGoModule {
|
||||||
pname = "tailscale";
|
pname = "tailscale";
|
||||||
@ -11,9 +11,9 @@ buildGoModule {
|
|||||||
owner = "tailscale";
|
owner = "tailscale";
|
||||||
repo = "tailscale";
|
repo = "tailscale";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-kMk5Q/KvNcsohHNLDMmpBm+gUxQEOeO8o/odukcJi0A=";
|
hash = "sha256-ue1opjT8wkL+hYzMxU/GtOrJd3/KPSOptU8A8nklacY=";
|
||||||
};
|
};
|
||||||
vendorHash = "sha256-bG/ydsJf2UncOcDo8/BXdvQJO3Mk0tl8JGje1b6kto4=";
|
vendorHash = "sha256-BK1zugKGtx2RpWHDvFZaFqz/YdoewsG8SscGt25uwtQ=";
|
||||||
|
|
||||||
nativeBuildInputs = lib.optionals stdenv.isLinux [ makeWrapper ];
|
nativeBuildInputs = lib.optionals stdenv.isLinux [ makeWrapper ];
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"rev": "9b19f5e77dd906cb52dade0b7bd280339d2a1f3d",
|
"rev": "842d9d80cfd4560648c785f8a4e6f3b096790e19",
|
||||||
"ci-path": "/nix/store/qlls5ca8q88qpyygg9ddi60gl1nmvpij-nixpkgs-check-by-name"
|
"ci-path": "/nix/store/8habk3j25bs2a34zn5q5p17b9dl3fywg-nixpkgs-check-by-name"
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env nix-shell
|
#!/usr/bin/env nix-shell
|
||||||
#!nix-shell -i bash -p jq
|
#!nix-shell -i bash -p jq -I nixpkgs=../../../..
|
||||||
|
|
||||||
set -o pipefail -o errexit -o nounset
|
set -o pipefail -o errexit -o nounset
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env nix-shell
|
#!/usr/bin/env nix-shell
|
||||||
#!nix-shell -i bash -p jq
|
#!nix-shell -i bash -p jq -I nixpkgs=../../../..
|
||||||
|
|
||||||
set -o pipefail -o errexit -o nounset
|
set -o pipefail -o errexit -o nounset
|
||||||
|
|
||||||
|
@ -6,12 +6,12 @@
|
|||||||
|
|
||||||
python3.pkgs.buildPythonApplication rec {
|
python3.pkgs.buildPythonApplication rec {
|
||||||
pname = "ansible-lint";
|
pname = "ansible-lint";
|
||||||
version = "6.21.1";
|
version = "6.22.2";
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
hash = "sha256-Bf/G38jzy79W9/l3CzQ2/HkJutXB11Rw76BkUx8C324=";
|
hash = "sha256-L0Cf6Y762mHan4q3zfNKW2feQ+EzjO4GGfXVH0+LFd0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
buildNpmPackage rec {
|
buildNpmPackage rec {
|
||||||
pname = "github-copilot-cli";
|
pname = "github-copilot-cli";
|
||||||
version = "0.1.33";
|
version = "0.1.36";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://registry.npmjs.org/@githubnext/${pname}/-/${pname}-${version}.tgz";
|
url = "https://registry.npmjs.org/@githubnext/${pname}/-/${pname}-${version}.tgz";
|
||||||
hash = "sha256-uTv6Z/AzvINinMiIfaaqRZDCmsAQ7tOE5SpuecpzGug=";
|
hash = "sha256-7n+7sN61OrqMVGaKll85+HwX7iGG9M/UW5lf2Pd5sRU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
npmDepsHash = "sha256-VIg9a63GH246SbmK4Q8CwA2jdaaOwNUXoJkuDVwy5jE=";
|
npmDepsHash = "sha256-h0StxzGbl3ZeOQ4Jy1BgJ5sJ0pAbubMCRsiIOYpU04w=";
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
cp ${./package-lock.json} package-lock.json
|
cp ${./package-lock.json} package-lock.json
|
||||||
|
1020
pkgs/tools/misc/github-copilot-cli/package-lock.json
generated
1020
pkgs/tools/misc/github-copilot-cli/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "instaloader";
|
pname = "instaloader";
|
||||||
version = "4.9.6";
|
version = "4.10.3";
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
disabled = pythonOlder "3.6";
|
disabled = pythonOlder "3.6";
|
||||||
@ -18,7 +18,7 @@ buildPythonPackage rec {
|
|||||||
owner = "instaloader";
|
owner = "instaloader";
|
||||||
repo = "instaloader";
|
repo = "instaloader";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
sha256 = "sha256-ZxvJPDj+r7KSyXpYNQIgnda5OS77GOFM901ZHgR6c4k=";
|
sha256 = "sha256-+K15MlyOONC5E8ZjtzbYnGGzQEMDGEGBFDbLZp7FeWQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -10,12 +10,12 @@
|
|||||||
}:
|
}:
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "plocate";
|
pname = "plocate";
|
||||||
version = "1.1.21";
|
version = "1.1.22";
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://git.sesse.net/plocate";
|
url = "https://git.sesse.net/plocate";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-ucCRm1w3ON3Qh7qt1Pf5/3kvXVGP+dJwjSuwYGcDMcs=";
|
sha256 = "sha256-ejv1IsjbImnvI1oorvMoIvTBu3HuVy7VtgHNTIkqqro=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -9,14 +9,14 @@ with python3.pkgs;
|
|||||||
|
|
||||||
buildPythonApplication rec {
|
buildPythonApplication rec {
|
||||||
pname = "yutto";
|
pname = "yutto";
|
||||||
version = "2.0.0b32";
|
version = "2.0.0b33";
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
disabled = pythonOlder "3.9";
|
disabled = pythonOlder "3.9";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
hash = "sha256-tncuRrEq59OPO2ZuWUowDHLsqJ1Dof9vroVOxQQ9hpE=";
|
hash = "sha256-TUyjppAHmWCZxifeQeOpFMPBksqLRSYdqgG7NEMVILY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -1,39 +1,44 @@
|
|||||||
{ useLua ? true
|
{ useLua ? true
|
||||||
, usePcre ? true
|
, usePcre ? true
|
||||||
# QUIC "is currently supported as an experimental feature" so shouldn't be enabled by default
|
|
||||||
, useQuicTls ? false
|
|
||||||
, withPrometheusExporter ? true
|
, withPrometheusExporter ? true
|
||||||
|
, sslLibrary ? "quictls"
|
||||||
, stdenv
|
, stdenv
|
||||||
, lib
|
, lib
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, nixosTests
|
, nixosTests
|
||||||
, zlib
|
, zlib
|
||||||
, libxcrypt
|
, libxcrypt
|
||||||
, openssl ? null
|
, wolfssl
|
||||||
, quictls ? null
|
, libressl
|
||||||
, lua5_3 ? null
|
, quictls
|
||||||
, pcre ? null
|
, openssl
|
||||||
, systemd ? null
|
, lua5_4
|
||||||
|
, pcre2
|
||||||
|
, systemd
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert useLua -> lua5_3 != null;
|
assert lib.assertOneOf "sslLibrary" sslLibrary [ "quictls" "openssl" "libressl" "wolfssl" ];
|
||||||
assert usePcre -> pcre != null;
|
let
|
||||||
assert useQuicTls -> quictls != null;
|
sslPkgs = {
|
||||||
assert !useQuicTls -> openssl != null;
|
inherit quictls openssl libressl;
|
||||||
|
wolfssl = wolfssl.override {
|
||||||
let sslPkg = if useQuicTls then quictls else openssl;
|
variant = "haproxy";
|
||||||
|
extraConfigureFlags = [ "--enable-quic" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
sslPkg = sslPkgs.${sslLibrary};
|
||||||
in stdenv.mkDerivation (finalAttrs: {
|
in stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "haproxy";
|
pname = "haproxy";
|
||||||
version = "2.9.2";
|
version = "2.9.3";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://www.haproxy.org/download/${lib.versions.majorMinor finalAttrs.version}/src/haproxy-${finalAttrs.version}.tar.gz";
|
url = "https://www.haproxy.org/download/${lib.versions.majorMinor finalAttrs.version}/src/haproxy-${finalAttrs.version}.tar.gz";
|
||||||
hash = "sha256-hRrugw7CjBeRJGqf1EePZD0RWlY92Qf2YSzDgalSqzw=";
|
hash = "sha256-7VF8ZavYaUVBH2vLGMfsZXpwaTHLeB6igwY7oKdYWMA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ sslPkg zlib libxcrypt ]
|
buildInputs = [ sslPkg zlib libxcrypt ]
|
||||||
++ lib.optional useLua lua5_3
|
++ lib.optional useLua lua5_4
|
||||||
++ lib.optional usePcre pcre
|
++ lib.optional usePcre pcre2
|
||||||
++ lib.optional stdenv.isLinux systemd;
|
++ lib.optional stdenv.isLinux systemd;
|
||||||
|
|
||||||
# TODO: make it work on bsd as well
|
# TODO: make it work on bsd as well
|
||||||
@ -46,20 +51,23 @@ in stdenv.mkDerivation (finalAttrs: {
|
|||||||
];
|
];
|
||||||
|
|
||||||
buildFlags = [
|
buildFlags = [
|
||||||
"USE_OPENSSL=yes"
|
|
||||||
"SSL_LIB=${sslPkg}/lib"
|
|
||||||
"SSL_INC=${sslPkg}/include"
|
|
||||||
"USE_ZLIB=yes"
|
"USE_ZLIB=yes"
|
||||||
] ++ lib.optionals useQuicTls [
|
"USE_OPENSSL=yes"
|
||||||
"USE_QUIC=1"
|
"SSL_INC=${lib.getDev sslPkg}/include"
|
||||||
|
"SSL_LIB=${lib.getDev sslPkg}/lib"
|
||||||
|
"USE_QUIC=yes"
|
||||||
|
] ++ lib.optionals (sslLibrary == "openssl") [
|
||||||
|
"USE_QUIC_OPENSSL_COMPAT=yes"
|
||||||
|
] ++ lib.optionals (sslLibrary == "wolfssl") [
|
||||||
|
"USE_OPENSSL_WOLFSSL=yes"
|
||||||
] ++ lib.optionals usePcre [
|
] ++ lib.optionals usePcre [
|
||||||
"USE_PCRE=yes"
|
"USE_PCRE2=yes"
|
||||||
"USE_PCRE_JIT=yes"
|
"USE_PCRE2_JIT=yes"
|
||||||
] ++ lib.optionals useLua [
|
] ++ lib.optionals useLua [
|
||||||
"USE_LUA=yes"
|
"USE_LUA=yes"
|
||||||
"LUA_LIB_NAME=lua"
|
"LUA_LIB_NAME=lua"
|
||||||
"LUA_LIB=${lua5_3}/lib"
|
"LUA_LIB=${lua5_4}/lib"
|
||||||
"LUA_INC=${lua5_3}/include"
|
"LUA_INC=${lua5_4}/include"
|
||||||
] ++ lib.optionals stdenv.isLinux [
|
] ++ lib.optionals stdenv.isLinux [
|
||||||
"USE_SYSTEMD=yes"
|
"USE_SYSTEMD=yes"
|
||||||
"USE_GETADDRINFO=1"
|
"USE_GETADDRINFO=1"
|
||||||
@ -84,7 +92,7 @@ in stdenv.mkDerivation (finalAttrs: {
|
|||||||
tens of thousands of connections is clearly realistic with todays
|
tens of thousands of connections is clearly realistic with todays
|
||||||
hardware.
|
hardware.
|
||||||
'';
|
'';
|
||||||
maintainers = with lib.maintainers; [ ];
|
maintainers = with lib.maintainers; [ vifino ];
|
||||||
platforms = with lib.platforms; linux ++ darwin;
|
platforms = with lib.platforms; linux ++ darwin;
|
||||||
mainProgram = "haproxy";
|
mainProgram = "haproxy";
|
||||||
};
|
};
|
||||||
|
@ -12,12 +12,12 @@
|
|||||||
, withSssd ? false
|
, withSssd ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "sudo";
|
pname = "sudo";
|
||||||
version = "1.9.15p5";
|
version = "1.9.15p5";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://www.sudo.ws/dist/${pname}-${version}.tar.gz";
|
url = "https://www.sudo.ws/dist/sudo-${finalAttrs.version}.tar.gz";
|
||||||
hash = "sha256-VY0QuaGZH7O5+n+nsH7EQFt677WzywsIcdvIHjqI5Vg=";
|
hash = "sha256-VY0QuaGZH7O5+n+nsH7EQFt677WzywsIcdvIHjqI5Vg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -85,5 +85,6 @@ stdenv.mkDerivation rec {
|
|||||||
license = with licenses; [ sudo bsd2 bsd3 zlib ];
|
license = with licenses; [ sudo bsd2 bsd3 zlib ];
|
||||||
maintainers = with maintainers; [ delroth ];
|
maintainers = with maintainers; [ delroth ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
|
mainProgram = "sudo";
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
|
@ -3851,6 +3851,8 @@ with pkgs;
|
|||||||
|
|
||||||
fluffychat = callPackage ../applications/networking/instant-messengers/fluffychat { };
|
fluffychat = callPackage ../applications/networking/instant-messengers/fluffychat { };
|
||||||
|
|
||||||
|
fluffychat-web = fluffychat.override { targetFlutterPlatform = "web"; };
|
||||||
|
|
||||||
fxlinuxprintutil = callPackage ../tools/misc/fxlinuxprintutil { };
|
fxlinuxprintutil = callPackage ../tools/misc/fxlinuxprintutil { };
|
||||||
|
|
||||||
gbl = callPackage ../tools/archivers/gbl {
|
gbl = callPackage ../tools/archivers/gbl {
|
||||||
@ -26653,8 +26655,6 @@ with pkgs;
|
|||||||
inherit (darwin.apple_sdk.frameworks) AudioToolbox AudioUnit;
|
inherit (darwin.apple_sdk.frameworks) AudioToolbox AudioUnit;
|
||||||
}) mpd mpd-small mpdWithFeatures;
|
}) mpd mpd-small mpdWithFeatures;
|
||||||
|
|
||||||
libmpdclient = callPackage ../servers/mpd/libmpdclient.nix { };
|
|
||||||
|
|
||||||
mpdscribble = callPackage ../tools/misc/mpdscribble { };
|
mpdscribble = callPackage ../tools/misc/mpdscribble { };
|
||||||
|
|
||||||
mtprotoproxy = python3.pkgs.callPackage ../servers/mtprotoproxy { };
|
mtprotoproxy = python3.pkgs.callPackage ../servers/mtprotoproxy { };
|
||||||
|
@ -6587,6 +6587,8 @@ self: super: with self; {
|
|||||||
llvm = pkgs.llvm_14;
|
llvm = pkgs.llvm_14;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
lmcloud = callPackage ../development/python-modules/lmcloud { };
|
||||||
|
|
||||||
lmdb = callPackage ../development/python-modules/lmdb {
|
lmdb = callPackage ../development/python-modules/lmdb {
|
||||||
inherit (pkgs) lmdb;
|
inherit (pkgs) lmdb;
|
||||||
};
|
};
|
||||||
@ -9093,6 +9095,8 @@ self: super: with self; {
|
|||||||
|
|
||||||
pdfrw = callPackage ../development/python-modules/pdfrw { };
|
pdfrw = callPackage ../development/python-modules/pdfrw { };
|
||||||
|
|
||||||
|
pdfrw2 = callPackage ../development/python-modules/pdfrw2 { };
|
||||||
|
|
||||||
pdftotext = callPackage ../development/python-modules/pdftotext { };
|
pdftotext = callPackage ../development/python-modules/pdftotext { };
|
||||||
|
|
||||||
pdfx = callPackage ../development/python-modules/pdfx { };
|
pdfx = callPackage ../development/python-modules/pdfx { };
|
||||||
@ -9178,6 +9182,8 @@ self: super: with self; {
|
|||||||
|
|
||||||
ping3 = callPackage ../development/python-modules/ping3 { };
|
ping3 = callPackage ../development/python-modules/ping3 { };
|
||||||
|
|
||||||
|
pins = callPackage ../development/python-modules/pins { };
|
||||||
|
|
||||||
pg8000 = callPackage ../development/python-modules/pg8000 { };
|
pg8000 = callPackage ../development/python-modules/pg8000 { };
|
||||||
|
|
||||||
pgcli = callPackage ../development/python-modules/pgcli { };
|
pgcli = callPackage ../development/python-modules/pgcli { };
|
||||||
@ -10064,6 +10070,8 @@ self: super: with self; {
|
|||||||
inherit (pkgs) arrow-cpp cmake;
|
inherit (pkgs) arrow-cpp cmake;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pyarrow-hotfix = callPackage ../development/python-modules/pyarrow-hotfix { };
|
||||||
|
|
||||||
pyasn = callPackage ../development/python-modules/pyasn { };
|
pyasn = callPackage ../development/python-modules/pyasn { };
|
||||||
|
|
||||||
pyasn1 = callPackage ../development/python-modules/pyasn1 { };
|
pyasn1 = callPackage ../development/python-modules/pyasn1 { };
|
||||||
|
Loading…
Reference in New Issue
Block a user