Merge master into haskell-updates
This commit is contained in:
commit
fb9e753d1e
|
@ -185,17 +185,17 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
|
|||
/lib/licenses.nix @alyssais
|
||||
|
||||
# Qt
|
||||
/pkgs/development/libraries/qt-5 @NixOS/qt-kde
|
||||
/pkgs/development/libraries/qt-6 @NixOS/qt-kde
|
||||
/pkgs/development/libraries/qt-5 @K900 @NickCao @SuperSandro2000 @ttuegel
|
||||
/pkgs/development/libraries/qt-6 @K900 @NickCao @SuperSandro2000 @ttuegel
|
||||
|
||||
# KDE / Plasma 5
|
||||
/pkgs/applications/kde @NixOS/qt-kde
|
||||
/pkgs/desktops/plasma-5 @NixOS/qt-kde
|
||||
/pkgs/development/libraries/kde-frameworks @NixOS/qt-kde
|
||||
/pkgs/applications/kde @K900 @NickCao @SuperSandro2000 @ttuegel
|
||||
/pkgs/desktops/plasma-5 @K900 @NickCao @SuperSandro2000 @ttuegel
|
||||
/pkgs/development/libraries/kde-frameworks @K900 @NickCao @SuperSandro2000 @ttuegel
|
||||
|
||||
# KDE / Plasma 6
|
||||
/pkgs/kde @NixOS/qt-kde
|
||||
/maintainers/scripts/kde @NixOS/qt-kde
|
||||
/pkgs/kde @K900 @NickCao @SuperSandro2000 @ttuegel
|
||||
/maintainers/scripts/kde @K900 @NickCao @SuperSandro2000 @ttuegel
|
||||
|
||||
# PostgreSQL and related stuff
|
||||
/pkgs/servers/sql/postgresql @thoughtpolice @marsam
|
||||
|
|
|
@ -26,4 +26,4 @@ jobs:
|
|||
name: nixpkgs-ci
|
||||
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
|
||||
# explicit list of supportedSystems is needed until aarch64-darwin becomes part of the trunk jobset
|
||||
- run: nix-build pkgs/top-level/release.nix -A tarball.nixpkgs-basic-release-checks --arg supportedSystems '[ "aarch64-darwin" "aarch64-linux" "x86_64-linux" "x86_64-darwin" ]'
|
||||
- run: nix-build pkgs/top-level/release.nix -A release-checks --arg supportedSystems '[ "aarch64-darwin" "aarch64-linux" "x86_64-linux" "x86_64-darwin" ]'
|
||||
|
|
|
@ -800,6 +800,12 @@
|
|||
githubId = 20405311;
|
||||
name = "Aksh Gupta";
|
||||
};
|
||||
aktaboot = {
|
||||
email = "akhtaboo@protonmail.com";
|
||||
github = "aktaboot";
|
||||
githubId = 120214979;
|
||||
name = "aktaboot";
|
||||
};
|
||||
al3xtjames = {
|
||||
email = "nix@alextjam.es";
|
||||
github = "al3xtjames";
|
||||
|
@ -6456,6 +6462,12 @@
|
|||
githubId = 4246921;
|
||||
name = "Florian Beeres";
|
||||
};
|
||||
fccapria = {
|
||||
email = "francesco@capria.eu";
|
||||
github = "fccapria";
|
||||
githubId = 62179193;
|
||||
name = "Francesco Carmelo Capria";
|
||||
};
|
||||
fd = {
|
||||
email = "simon.menke@gmail.com";
|
||||
github = "fd";
|
||||
|
@ -14810,6 +14822,12 @@
|
|||
githubId = 127548;
|
||||
name = "Judson Lester";
|
||||
};
|
||||
nyawox = {
|
||||
name = "nyawox";
|
||||
email = "nyawox.git@gmail.com";
|
||||
github = "nyawox";
|
||||
githubId = 93813719;
|
||||
};
|
||||
nzbr = {
|
||||
email = "nixos@nzbr.de";
|
||||
github = "nzbr";
|
||||
|
@ -16695,6 +16713,12 @@
|
|||
githubId = 145816;
|
||||
name = "David McKay";
|
||||
};
|
||||
raylas = {
|
||||
email = "r@raymond.sh";
|
||||
github = "raylas";
|
||||
githubId = 8099415;
|
||||
name = "Raymond Douglas";
|
||||
};
|
||||
rayslash = {
|
||||
email = "stevemathewjoy@tutanota.com";
|
||||
github = "rayslash";
|
||||
|
|
|
@ -108,6 +108,8 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi
|
|||
|
||||
- [dnsproxy](https://github.com/AdguardTeam/dnsproxy), a simple DNS proxy with DoH, DoT, DoQ and DNSCrypt support. Available as [services.dnsproxy](#opt-services.dnsproxy.enable).
|
||||
|
||||
- [manticoresearch](https://manticoresearch.com), easy to use open source fast database for search. Available as [services.manticore](#opt-services.manticore.enable).
|
||||
|
||||
- [rspamd-trainer](https://gitlab.com/onlime/rspamd-trainer), script triggered by a helper which reads mails from a specific mail inbox and feeds them into rspamd for spam/ham training.
|
||||
|
||||
- [ollama](https://ollama.ai), server for running large language models locally.
|
||||
|
@ -137,6 +139,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
|||
|
||||
- [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).
|
||||
|
||||
- A self-hosted management server for the [Netbird](https://netbird.io). Available as [services.netbird.server](#opt-services.netbird.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).
|
||||
|
||||
- [Prometheus DNSSEC Exporter](https://github.com/chrj/prometheus-dnssec-exporter), check for validity and expiration in DNSSEC signatures and expose metrics for Prometheus. Available as [services.prometheus.exporters.dnssec](#opt-services.prometheus.exporters.dnssec.enable).
|
||||
|
@ -173,12 +177,16 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
|||
|
||||
- [davis](https://github.com/tchapi/davis), a simple CardDav and CalDav server inspired by Baïkal. Available as [services.davis]($opt-services-davis.enable).
|
||||
|
||||
- [Firefly-iii](https://www.firefly-iii.org), a free and open source personal finance manager. Available as [services.firefly-iii](#opt-services.firefly-iii.enable)
|
||||
|
||||
- [systemd-lock-handler](https://git.sr.ht/~whynothugo/systemd-lock-handler/), a bridge between logind D-Bus events and systemd targets. Available as [services.systemd-lock-handler.enable](#opt-services.systemd-lock-handler.enable).
|
||||
|
||||
- [wastebin](https://github.com/matze/wastebin), a pastebin server written in rust. Available as [services.wastebin](#opt-services.wastebin.enable).
|
||||
|
||||
- [Mealie](https://nightly.mealie.io/), a self-hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in NuxtJS for a pleasant user experience for the whole family. Available as [services.mealie](#opt-services.mealie.enable)
|
||||
|
||||
- [Sunshine](https://app.lizardbyte.dev/Sunshine), a self-hosted game stream host for Moonlight. Available as [services.sunshine](#opt-services.sunshine.enable).
|
||||
|
||||
- [Uni-Sync](https://github.com/EightB1ts/uni-sync), a synchronization tool for Lian Li Uni Controllers. Available as [hardware.uni-sync](#opt-hardware.uni-sync.enable)
|
||||
|
||||
- [prometheus-nats-exporter](https://github.com/nats-io/prometheus-nats-exporter), a Prometheus exporter for NATS. Available as [services.prometheus.exporters.nats](#opt-services.prometheus.exporters.nats.enable).
|
||||
|
|
|
@ -1070,6 +1070,7 @@
|
|||
./services/networking/ndppd.nix
|
||||
./services/networking/nebula.nix
|
||||
./services/networking/netbird.nix
|
||||
./services/networking/netbird/server.nix
|
||||
./services/networking/netclient.nix
|
||||
./services/networking/networkd-dispatcher.nix
|
||||
./services/networking/networkmanager.nix
|
||||
|
@ -1160,6 +1161,7 @@
|
|||
./services/networking/strongswan.nix
|
||||
./services/networking/stubby.nix
|
||||
./services/networking/stunnel.nix
|
||||
./services/networking/sunshine.nix
|
||||
./services/networking/supplicant.nix
|
||||
./services/networking/supybot.nix
|
||||
./services/networking/syncplay.nix
|
||||
|
@ -1223,6 +1225,7 @@
|
|||
./services/search/elasticsearch-curator.nix
|
||||
./services/search/elasticsearch.nix
|
||||
./services/search/hound.nix
|
||||
./services/search/manticore.nix
|
||||
./services/search/meilisearch.nix
|
||||
./services/search/opensearch.nix
|
||||
./services/search/qdrant.nix
|
||||
|
@ -1334,6 +1337,7 @@
|
|||
./services/web-apps/dolibarr.nix
|
||||
./services/web-apps/engelsystem.nix
|
||||
./services/web-apps/ethercalc.nix
|
||||
./services/web-apps/firefly-iii.nix
|
||||
./services/web-apps/fluidd.nix
|
||||
./services/web-apps/freshrss.nix
|
||||
./services/web-apps/galene.nix
|
||||
|
|
|
@ -21,6 +21,8 @@ in
|
|||
example = "/home/foo";
|
||||
description = ''
|
||||
The home directory that the ollama service is started in.
|
||||
|
||||
See also `services.ollama.writablePaths` and `services.ollama.sandbox`.
|
||||
'';
|
||||
};
|
||||
models = lib.mkOption {
|
||||
|
@ -29,6 +31,37 @@ in
|
|||
example = "/path/to/ollama/models";
|
||||
description = ''
|
||||
The directory that the ollama service will read models from and download new models to.
|
||||
|
||||
See also `services.ollama.writablePaths` and `services.ollama.sandbox`
|
||||
if downloading models or other mutation of the filesystem is required.
|
||||
'';
|
||||
};
|
||||
sandbox = lib.mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
example = false;
|
||||
description = ''
|
||||
Whether to enable systemd's sandboxing capabilities.
|
||||
|
||||
This sets [`DynamicUser`](
|
||||
https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html#DynamicUser=
|
||||
), which runs the server as a unique user with read-only access to most of the filesystem.
|
||||
|
||||
See also `services.ollama.writablePaths`.
|
||||
'';
|
||||
};
|
||||
writablePaths = lib.mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
example = [ "/home/foo" "/mnt/foo" ];
|
||||
description = ''
|
||||
Paths that the server should have write access to.
|
||||
|
||||
This sets [`ReadWritePaths`](
|
||||
https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html#ReadWritePaths=
|
||||
), which allows specified paths to be written to through the default sandboxing.
|
||||
|
||||
See also `services.ollama.sandbox`.
|
||||
'';
|
||||
};
|
||||
listenAddress = lib.mkOption {
|
||||
|
@ -59,8 +92,8 @@ in
|
|||
type = types.attrsOf types.str;
|
||||
default = { };
|
||||
example = {
|
||||
HOME = "/tmp";
|
||||
OLLAMA_LLM_LIBRARY = "cpu";
|
||||
HIP_VISIBLE_DEVICES = "0,1";
|
||||
};
|
||||
description = ''
|
||||
Set arbitrary environment variables for the ollama service.
|
||||
|
@ -87,7 +120,8 @@ in
|
|||
ExecStart = "${lib.getExe ollamaPackage} serve";
|
||||
WorkingDirectory = cfg.home;
|
||||
StateDirectory = [ "ollama" ];
|
||||
DynamicUser = true;
|
||||
DynamicUser = cfg.sandbox;
|
||||
ReadWritePaths = cfg.writablePaths;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ in
|
|||
'';
|
||||
postStart = ''
|
||||
# Delay signalling service readiness until it's actually up.
|
||||
while ! "${lib.getExe pkgs.curl}" -sSfl -o /dev/null "http://${cfg.listenAddress}:${toString cfg.httpPort}"; do
|
||||
while ! "${lib.getExe pkgs.curl}" -sSfL -o /dev/null "http://${cfg.listenAddress}:${toString cfg.httpPort}"; do
|
||||
echo "Waiting for TCP port ${toString cfg.httpPort} to be open..."
|
||||
sleep 1
|
||||
done
|
||||
|
|
|
@ -0,0 +1,160 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
getExe
|
||||
literalExpression
|
||||
mkAfter
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkMerge
|
||||
mkOption
|
||||
optionalAttrs
|
||||
optionalString
|
||||
;
|
||||
|
||||
inherit (lib.types)
|
||||
bool
|
||||
listOf
|
||||
nullOr
|
||||
path
|
||||
port
|
||||
str
|
||||
;
|
||||
|
||||
cfg = config.services.netbird.server.coturn;
|
||||
in
|
||||
|
||||
{
|
||||
options.services.netbird.server.coturn = {
|
||||
enable = mkEnableOption "a Coturn server for Netbird, will also open the firewall on the configured range";
|
||||
|
||||
useAcmeCertificates = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to use ACME certificates corresponding to the given domain for the server.
|
||||
'';
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
type = str;
|
||||
description = "The domain under which the coturn server runs.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = str;
|
||||
default = "netbird";
|
||||
description = ''
|
||||
The username used by netbird to connect to the coturn server.
|
||||
'';
|
||||
};
|
||||
|
||||
password = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
The password of the user used by netbird to connect to the coturn server.
|
||||
'';
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = nullOr path;
|
||||
default = null;
|
||||
description = ''
|
||||
The path to a file containing the password of the user used by netbird to connect to the coturn server.
|
||||
'';
|
||||
};
|
||||
|
||||
openPorts = mkOption {
|
||||
type = listOf port;
|
||||
default = with config.services.coturn; [
|
||||
listening-port
|
||||
alt-listening-port
|
||||
tls-listening-port
|
||||
alt-tls-listening-port
|
||||
];
|
||||
defaultText = literalExpression ''
|
||||
with config.services.coturn; [
|
||||
listening-port
|
||||
alt-listening-port
|
||||
tls-listening-port
|
||||
alt-tls-listening-port
|
||||
];
|
||||
'';
|
||||
|
||||
description = ''
|
||||
The list of ports used by coturn for listening to open in the firewall.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
{
|
||||
assertions = [
|
||||
{
|
||||
assertion = (cfg.password == null) != (cfg.passwordFile == null);
|
||||
message = "Exactly one of `password` or `passwordFile` must be given for the coturn setup.";
|
||||
}
|
||||
];
|
||||
|
||||
services.coturn =
|
||||
{
|
||||
enable = true;
|
||||
|
||||
realm = cfg.domain;
|
||||
lt-cred-mech = true;
|
||||
no-cli = true;
|
||||
|
||||
extraConfig = ''
|
||||
fingerprint
|
||||
user=${cfg.user}:${if cfg.password != null then cfg.password else "@password@"}
|
||||
no-software-attribute
|
||||
'';
|
||||
}
|
||||
// (optionalAttrs cfg.useAcmeCertificates {
|
||||
cert = "@cert@";
|
||||
pkey = "@pkey@";
|
||||
});
|
||||
|
||||
systemd.services.coturn =
|
||||
let
|
||||
dir = config.security.acme.certs.${cfg.domain}.directory;
|
||||
preStart' =
|
||||
(optionalString (cfg.passwordFile != null) ''
|
||||
${getExe pkgs.replace-secret} @password@ ${cfg.passwordFile} /run/coturn/turnserver.cfg
|
||||
'')
|
||||
+ (optionalString cfg.useAcmeCertificates ''
|
||||
${getExe pkgs.replace-secret} @cert@ "$CREDENTIALS_DIRECTORY/cert.pem" /run/coturn/turnserver.cfg
|
||||
${getExe pkgs.replace-secret} @pkey@ "$CREDENTIALS_DIRECTORY/pkey.pem" /run/coturn/turnserver.cfg
|
||||
'');
|
||||
in
|
||||
(optionalAttrs (preStart' != "") { preStart = mkAfter preStart'; })
|
||||
// (optionalAttrs cfg.useAcmeCertificates {
|
||||
serviceConfig.LoadCredential = [
|
||||
"cert.pem:${dir}/fullchain.pem"
|
||||
"pkey.pem:${dir}/key.pem"
|
||||
];
|
||||
});
|
||||
|
||||
security.acme.certs.${cfg.domain}.postRun = optionalString cfg.useAcmeCertificates "systemctl restart coturn.service";
|
||||
|
||||
networking.firewall = {
|
||||
allowedUDPPorts = cfg.openPorts;
|
||||
allowedTCPPorts = cfg.openPorts;
|
||||
|
||||
allowedUDPPortRanges = [
|
||||
{
|
||||
from = cfg.minPort;
|
||||
to = cfg.maxPort;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
]);
|
||||
}
|
|
@ -0,0 +1,186 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
boolToString
|
||||
concatStringsSep
|
||||
hasAttr
|
||||
isBool
|
||||
mapAttrs
|
||||
mkDefault
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkOption
|
||||
mkPackageOption
|
||||
;
|
||||
|
||||
inherit (lib.types)
|
||||
attrsOf
|
||||
bool
|
||||
either
|
||||
package
|
||||
str
|
||||
submodule
|
||||
;
|
||||
|
||||
toStringEnv = value: if isBool value then boolToString value else toString value;
|
||||
|
||||
cfg = config.services.netbird.server.dashboard;
|
||||
in
|
||||
|
||||
{
|
||||
options.services.netbird.server.dashboard = {
|
||||
enable = mkEnableOption "the static netbird dashboard frontend";
|
||||
|
||||
package = mkPackageOption pkgs "netbird-dashboard" { };
|
||||
|
||||
enableNginx = mkEnableOption "Nginx reverse-proxy to serve the dashboard.";
|
||||
|
||||
domain = mkOption {
|
||||
type = str;
|
||||
default = "localhost";
|
||||
description = "The domain under which the dashboard runs.";
|
||||
};
|
||||
|
||||
managementServer = mkOption {
|
||||
type = str;
|
||||
description = "The address of the management server, used for the API endpoints.";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = submodule { freeformType = attrsOf (either str bool); };
|
||||
|
||||
defaultText = ''
|
||||
{
|
||||
AUTH_AUDIENCE = "netbird";
|
||||
AUTH_CLIENT_ID = "netbird";
|
||||
AUTH_SUPPORTED_SCOPES = "openid profile email";
|
||||
NETBIRD_TOKEN_SOURCE = "idToken";
|
||||
USE_AUTH0 = false;
|
||||
}
|
||||
'';
|
||||
|
||||
description = ''
|
||||
An attribute set that will be used to substitute variables when building the dashboard.
|
||||
Any values set here will be templated into the frontend and be public for anyone that can reach your website.
|
||||
The exact values sadly aren't documented anywhere.
|
||||
A starting point when searching for valid values is this [script](https://github.com/netbirdio/dashboard/blob/main/docker/init_react_envs.sh)
|
||||
The only mandatory value is 'AUTH_AUTHORITY' as we cannot set a default value here.
|
||||
'';
|
||||
};
|
||||
|
||||
finalDrv = mkOption {
|
||||
readOnly = true;
|
||||
type = package;
|
||||
description = ''
|
||||
The derivation containing the final templated dashboard.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = hasAttr "AUTH_AUTHORITY" cfg.settings;
|
||||
message = "The setting AUTH_AUTHORITY is required for the dasboard to function.";
|
||||
}
|
||||
];
|
||||
|
||||
services.netbird.server.dashboard = {
|
||||
settings =
|
||||
{
|
||||
# Due to how the backend and frontend work this secret will be templated into the backend
|
||||
# and then served statically from your website
|
||||
# This enables you to login without the normally needed indirection through the backend
|
||||
# but this also means anyone that can reach your website can
|
||||
# fetch this secret, which is why there is no real need to put it into
|
||||
# special options as its public anyway
|
||||
# As far as I know leaking this secret is just
|
||||
# an information leak as one can fetch some basic app
|
||||
# informations from the IDP
|
||||
# To actually do something one still needs to have login
|
||||
# data and this secret so this being public will not
|
||||
# suffice for anything just decreasing security
|
||||
AUTH_CLIENT_SECRET = "";
|
||||
|
||||
NETBIRD_MGMT_API_ENDPOINT = cfg.managementServer;
|
||||
NETBIRD_MGMT_GRPC_API_ENDPOINT = cfg.managementServer;
|
||||
}
|
||||
// (mapAttrs (_: mkDefault) {
|
||||
# Those values have to be easily overridable
|
||||
AUTH_AUDIENCE = "netbird"; # must be set for your devices to be able to log in
|
||||
AUTH_CLIENT_ID = "netbird";
|
||||
AUTH_SUPPORTED_SCOPES = "openid profile email";
|
||||
NETBIRD_TOKEN_SOURCE = "idToken";
|
||||
USE_AUTH0 = false;
|
||||
});
|
||||
|
||||
# The derivation containing the templated dashboard
|
||||
finalDrv =
|
||||
pkgs.runCommand "netbird-dashboard"
|
||||
{
|
||||
nativeBuildInputs = [ pkgs.gettext ];
|
||||
env = {
|
||||
ENV_STR = concatStringsSep " " [
|
||||
"$AUTH_AUDIENCE"
|
||||
"$AUTH_AUTHORITY"
|
||||
"$AUTH_CLIENT_ID"
|
||||
"$AUTH_CLIENT_SECRET"
|
||||
"$AUTH_REDIRECT_URI"
|
||||
"$AUTH_SILENT_REDIRECT_URI"
|
||||
"$AUTH_SUPPORTED_SCOPES"
|
||||
"$NETBIRD_DRAG_QUERY_PARAMS"
|
||||
"$NETBIRD_GOOGLE_ANALYTICS_ID"
|
||||
"$NETBIRD_HOTJAR_TRACK_ID"
|
||||
"$NETBIRD_MGMT_API_ENDPOINT"
|
||||
"$NETBIRD_MGMT_GRPC_API_ENDPOINT"
|
||||
"$NETBIRD_TOKEN_SOURCE"
|
||||
"$USE_AUTH0"
|
||||
];
|
||||
} // (mapAttrs (_: toStringEnv) cfg.settings);
|
||||
}
|
||||
''
|
||||
cp -R ${cfg.package} build
|
||||
|
||||
find build -type d -exec chmod 755 {} \;
|
||||
OIDC_TRUSTED_DOMAINS="build/OidcTrustedDomains.js"
|
||||
|
||||
envsubst "$ENV_STR" < "$OIDC_TRUSTED_DOMAINS.tmpl" > "$OIDC_TRUSTED_DOMAINS"
|
||||
|
||||
for f in $(grep -R -l AUTH_SUPPORTED_SCOPES build/); do
|
||||
mv "$f" "$f.copy"
|
||||
envsubst "$ENV_STR" < "$f.copy" > "$f"
|
||||
rm "$f.copy"
|
||||
done
|
||||
|
||||
cp -R build $out
|
||||
'';
|
||||
};
|
||||
|
||||
services.nginx = mkIf cfg.enableNginx {
|
||||
enable = true;
|
||||
|
||||
virtualHosts.${cfg.domain} = {
|
||||
locations = {
|
||||
"/" = {
|
||||
root = cfg.finalDrv;
|
||||
tryFiles = "$uri $uri.html $uri/ =404";
|
||||
};
|
||||
|
||||
"/404.html".extraConfig = ''
|
||||
internal;
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = ''
|
||||
error_page 404 /404.html;
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,460 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
utils,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
any
|
||||
concatMap
|
||||
getExe'
|
||||
literalExpression
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkOption
|
||||
mkPackageOption
|
||||
optional
|
||||
recursiveUpdate
|
||||
;
|
||||
|
||||
inherit (lib.types)
|
||||
bool
|
||||
enum
|
||||
listOf
|
||||
port
|
||||
str
|
||||
;
|
||||
|
||||
inherit (utils) escapeSystemdExecArgs genJqSecretsReplacementSnippet;
|
||||
|
||||
stateDir = "/var/lib/netbird-mgmt";
|
||||
|
||||
settingsFormat = pkgs.formats.json { };
|
||||
|
||||
defaultSettings = {
|
||||
Stuns = [
|
||||
{
|
||||
Proto = "udp";
|
||||
URI = "stun:${cfg.turnDomain}:3478";
|
||||
Username = "";
|
||||
Password = null;
|
||||
}
|
||||
];
|
||||
|
||||
TURNConfig = {
|
||||
Turns = [
|
||||
{
|
||||
Proto = "udp";
|
||||
URI = "turn:${cfg.turnDomain}:${builtins.toString cfg.turnPort}";
|
||||
Username = "netbird";
|
||||
Password = "netbird";
|
||||
}
|
||||
];
|
||||
|
||||
CredentialsTTL = "12h";
|
||||
Secret = "not-secure-secret";
|
||||
TimeBasedCredentials = false;
|
||||
};
|
||||
|
||||
Signal = {
|
||||
Proto = "https";
|
||||
URI = "${cfg.domain}:443";
|
||||
Username = "";
|
||||
Password = null;
|
||||
};
|
||||
|
||||
ReverseProxy = {
|
||||
TrustedHTTPProxies = [ ];
|
||||
TrustedHTTPProxiesCount = 0;
|
||||
TrustedPeers = [ "0.0.0.0/0" ];
|
||||
};
|
||||
|
||||
Datadir = "${stateDir}/data";
|
||||
DataStoreEncryptionKey = "very-insecure-key";
|
||||
StoreConfig = {
|
||||
Engine = "sqlite";
|
||||
};
|
||||
|
||||
HttpConfig = {
|
||||
Address = "127.0.0.1:${builtins.toString cfg.port}";
|
||||
IdpSignKeyRefreshEnabled = true;
|
||||
OIDCConfigEndpoint = cfg.oidcConfigEndpoint;
|
||||
};
|
||||
|
||||
IdpManagerConfig = {
|
||||
ManagerType = "none";
|
||||
ClientConfig = {
|
||||
Issuer = "";
|
||||
TokenEndpoint = "";
|
||||
ClientID = "netbird";
|
||||
ClientSecret = "";
|
||||
GrantType = "client_credentials";
|
||||
};
|
||||
|
||||
ExtraConfig = { };
|
||||
Auth0ClientCredentials = null;
|
||||
AzureClientCredentials = null;
|
||||
KeycloakClientCredentials = null;
|
||||
ZitadelClientCredentials = null;
|
||||
};
|
||||
|
||||
DeviceAuthorizationFlow = {
|
||||
Provider = "none";
|
||||
ProviderConfig = {
|
||||
Audience = "netbird";
|
||||
Domain = null;
|
||||
ClientID = "netbird";
|
||||
TokenEndpoint = null;
|
||||
DeviceAuthEndpoint = "";
|
||||
Scope = "openid profile email";
|
||||
UseIDToken = false;
|
||||
};
|
||||
};
|
||||
|
||||
PKCEAuthorizationFlow = {
|
||||
ProviderConfig = {
|
||||
Audience = "netbird";
|
||||
ClientID = "netbird";
|
||||
ClientSecret = "";
|
||||
AuthorizationEndpoint = "";
|
||||
TokenEndpoint = "";
|
||||
Scope = "openid profile email";
|
||||
RedirectURLs = [ "http://localhost:53000" ];
|
||||
UseIDToken = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
managementConfig = recursiveUpdate defaultSettings cfg.settings;
|
||||
|
||||
managementFile = settingsFormat.generate "config.json" managementConfig;
|
||||
|
||||
cfg = config.services.netbird.server.management;
|
||||
in
|
||||
|
||||
{
|
||||
options.services.netbird.server.management = {
|
||||
enable = mkEnableOption "Netbird Management Service.";
|
||||
|
||||
package = mkPackageOption pkgs "netbird" { };
|
||||
|
||||
domain = mkOption {
|
||||
type = str;
|
||||
description = "The domain under which the management API runs.";
|
||||
};
|
||||
|
||||
turnDomain = mkOption {
|
||||
type = str;
|
||||
description = "The domain of the TURN server to use.";
|
||||
};
|
||||
|
||||
turnPort = mkOption {
|
||||
type = port;
|
||||
default = 3478;
|
||||
description = ''
|
||||
The port of the TURN server to use.
|
||||
'';
|
||||
};
|
||||
|
||||
dnsDomain = mkOption {
|
||||
type = str;
|
||||
default = "netbird.selfhosted";
|
||||
description = "Domain used for peer resolution.";
|
||||
};
|
||||
|
||||
singleAccountModeDomain = mkOption {
|
||||
type = str;
|
||||
default = "netbird.selfhosted";
|
||||
description = ''
|
||||
Enables single account mode.
|
||||
This means that all the users will be under the same account grouped by the specified domain.
|
||||
If the installation has more than one account, the property is ineffective.
|
||||
'';
|
||||
};
|
||||
|
||||
disableAnonymousMetrics = mkOption {
|
||||
type = bool;
|
||||
default = true;
|
||||
description = "Disables push of anonymous usage metrics to NetBird.";
|
||||
};
|
||||
|
||||
disableSingleAccountMode = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
description = ''
|
||||
If set to true, disables single account mode.
|
||||
The `singleAccountModeDomain` property will be ignored and every new user will have a separate NetBird account.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = port;
|
||||
default = 8011;
|
||||
description = "Internal port of the management server.";
|
||||
};
|
||||
|
||||
extraOptions = mkOption {
|
||||
type = listOf str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
Additional options given to netbird-mgmt as commandline arguments.
|
||||
'';
|
||||
};
|
||||
|
||||
oidcConfigEndpoint = mkOption {
|
||||
type = str;
|
||||
description = "The oidc discovery endpoint.";
|
||||
example = "https://example.eu.auth0.com/.well-known/openid-configuration";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
inherit (settingsFormat) type;
|
||||
|
||||
defaultText = literalExpression ''
|
||||
defaultSettings = {
|
||||
Stuns = [
|
||||
{
|
||||
Proto = "udp";
|
||||
URI = "stun:''${cfg.turnDomain}:3478";
|
||||
Username = "";
|
||||
Password = null;
|
||||
}
|
||||
];
|
||||
|
||||
TURNConfig = {
|
||||
Turns = [
|
||||
{
|
||||
Proto = "udp";
|
||||
URI = "turn:''${cfg.turnDomain}:3478";
|
||||
Username = "netbird";
|
||||
Password = "netbird";
|
||||
}
|
||||
];
|
||||
|
||||
CredentialsTTL = "12h";
|
||||
Secret = "not-secure-secret";
|
||||
TimeBasedCredentials = false;
|
||||
};
|
||||
|
||||
Signal = {
|
||||
Proto = "https";
|
||||
URI = "''${cfg.domain}:443";
|
||||
Username = "";
|
||||
Password = null;
|
||||
};
|
||||
|
||||
ReverseProxy = {
|
||||
TrustedHTTPProxies = [ ];
|
||||
TrustedHTTPProxiesCount = 0;
|
||||
TrustedPeers = [ "0.0.0.0/0" ];
|
||||
};
|
||||
|
||||
Datadir = "''${stateDir}/data";
|
||||
DataStoreEncryptionKey = "genEVP6j/Yp2EeVujm0zgqXrRos29dQkpvX0hHdEUlQ=";
|
||||
StoreConfig = { Engine = "sqlite"; };
|
||||
|
||||
HttpConfig = {
|
||||
Address = "127.0.0.1:''${builtins.toString cfg.port}";
|
||||
IdpSignKeyRefreshEnabled = true;
|
||||
OIDCConfigEndpoint = cfg.oidcConfigEndpoint;
|
||||
};
|
||||
|
||||
IdpManagerConfig = {
|
||||
ManagerType = "none";
|
||||
ClientConfig = {
|
||||
Issuer = "";
|
||||
TokenEndpoint = "";
|
||||
ClientID = "netbird";
|
||||
ClientSecret = "";
|
||||
GrantType = "client_credentials";
|
||||
};
|
||||
|
||||
ExtraConfig = { };
|
||||
Auth0ClientCredentials = null;
|
||||
AzureClientCredentials = null;
|
||||
KeycloakClientCredentials = null;
|
||||
ZitadelClientCredentials = null;
|
||||
};
|
||||
|
||||
DeviceAuthorizationFlow = {
|
||||
Provider = "none";
|
||||
ProviderConfig = {
|
||||
Audience = "netbird";
|
||||
Domain = null;
|
||||
ClientID = "netbird";
|
||||
TokenEndpoint = null;
|
||||
DeviceAuthEndpoint = "";
|
||||
Scope = "openid profile email offline_access api";
|
||||
UseIDToken = false;
|
||||
};
|
||||
};
|
||||
|
||||
PKCEAuthorizationFlow = {
|
||||
ProviderConfig = {
|
||||
Audience = "netbird";
|
||||
ClientID = "netbird";
|
||||
ClientSecret = "";
|
||||
AuthorizationEndpoint = "";
|
||||
TokenEndpoint = "";
|
||||
Scope = "openid profile email offline_access api";
|
||||
RedirectURLs = "http://localhost:53000";
|
||||
UseIDToken = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
'';
|
||||
|
||||
default = { };
|
||||
|
||||
description = ''
|
||||
Configuration of the netbird management server.
|
||||
Options containing secret data should be set to an attribute set containing the attribute _secret
|
||||
- a string pointing to a file containing the value the option should be set to.
|
||||
See the example to get a better picture of this: in the resulting management.json file,
|
||||
the `DataStoreEncryptionKey` key will be set to the contents of the /run/agenix/netbird_mgmt-data_store_encryption_key file.
|
||||
'';
|
||||
|
||||
example = {
|
||||
DataStoreEncryptionKey = {
|
||||
_secret = "/run/agenix/netbird_mgmt-data_store_encryption_key";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
logLevel = mkOption {
|
||||
type = enum [
|
||||
"ERROR"
|
||||
"WARN"
|
||||
"INFO"
|
||||
"DEBUG"
|
||||
];
|
||||
default = "INFO";
|
||||
description = "Log level of the netbird services.";
|
||||
};
|
||||
|
||||
enableNginx = mkEnableOption "Nginx reverse-proxy for the netbird management service.";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
warnings =
|
||||
concatMap
|
||||
(
|
||||
{ check, name }:
|
||||
optional check "${name} is world-readable in the Nix Store, you should provide it as a _secret."
|
||||
)
|
||||
[
|
||||
{
|
||||
check = builtins.isString managementConfig.TURNConfig.Secret;
|
||||
name = "The TURNConfig.secret";
|
||||
}
|
||||
{
|
||||
check = builtins.isString managementConfig.DataStoreEncryptionKey;
|
||||
name = "The DataStoreEncryptionKey";
|
||||
}
|
||||
{
|
||||
check = any (T: (T ? Password) && builtins.isString T.Password) managementConfig.TURNConfig.Turns;
|
||||
name = "A Turn configuration's password";
|
||||
}
|
||||
];
|
||||
|
||||
systemd.services.netbird-management = {
|
||||
description = "The management server for Netbird, a wireguard VPN";
|
||||
documentation = [ "https://netbird.io/docs/" ];
|
||||
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
restartTriggers = [ managementFile ];
|
||||
|
||||
preStart = genJqSecretsReplacementSnippet managementConfig "${stateDir}/management.json";
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = escapeSystemdExecArgs (
|
||||
[
|
||||
(getExe' cfg.package "netbird-mgmt")
|
||||
"management"
|
||||
# Config file
|
||||
"--config"
|
||||
"${stateDir}/management.json"
|
||||
# Data directory
|
||||
"--datadir"
|
||||
"${stateDir}/data"
|
||||
# DNS domain
|
||||
"--dns-domain"
|
||||
cfg.dnsDomain
|
||||
# Port to listen on
|
||||
"--port"
|
||||
cfg.port
|
||||
# Log to stdout
|
||||
"--log-file"
|
||||
"console"
|
||||
# Log level
|
||||
"--log-level"
|
||||
cfg.logLevel
|
||||
#
|
||||
"--idp-sign-key-refresh-enabled"
|
||||
# Domain for internal resolution
|
||||
"--single-account-mode-domain"
|
||||
cfg.singleAccountModeDomain
|
||||
]
|
||||
++ (optional cfg.disableAnonymousMetrics "--disable-anonymous-metrics")
|
||||
++ (optional cfg.disableSingleAccountMode "--disable-single-account-mode")
|
||||
++ cfg.extraOptions
|
||||
);
|
||||
Restart = "always";
|
||||
RuntimeDirectory = "netbird-mgmt";
|
||||
StateDirectory = [
|
||||
"netbird-mgmt"
|
||||
"netbird-mgmt/data"
|
||||
];
|
||||
WorkingDirectory = stateDir;
|
||||
|
||||
# hardening
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateMounts = true;
|
||||
PrivateTmp = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectSystem = true;
|
||||
RemoveIPC = true;
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
};
|
||||
|
||||
stopIfChanged = false;
|
||||
};
|
||||
|
||||
services.nginx = mkIf cfg.enableNginx {
|
||||
enable = true;
|
||||
|
||||
virtualHosts.${cfg.domain} = {
|
||||
locations = {
|
||||
"/api".proxyPass = "http://localhost:${builtins.toString cfg.port}";
|
||||
|
||||
"/management.ManagementService/".extraConfig = ''
|
||||
# This is necessary so that grpc connections do not get closed early
|
||||
# see https://stackoverflow.com/a/67805465
|
||||
client_body_timeout 1d;
|
||||
|
||||
grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
grpc_pass grpc://localhost:${builtins.toString cfg.port};
|
||||
grpc_read_timeout 1d;
|
||||
grpc_send_timeout 1d;
|
||||
grpc_socket_keepalive on;
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
# Netbird server {#module-services-netbird-server}
|
||||
|
||||
NetBird is a VPN built on top of WireGuard® making it easy to create secure private networks for your organization or home.
|
||||
|
||||
## Quickstart {#module-services-netbird-server-quickstart}
|
||||
|
||||
To fully setup Netbird as a self-hosted server, we need both a Coturn server and an identity provider, the list of supported SSOs and their setup are available [on Netbird's documentation](https://docs.netbird.io/selfhosted/selfhosted-guide#step-3-configure-identity-provider-idp).
|
||||
|
||||
There are quite a few settings that need to be passed to Netbird for it to function, and a minimal config looks like :
|
||||
|
||||
```nix
|
||||
services.netbird.server = {
|
||||
enable = true;
|
||||
|
||||
domain = "netbird.example.selfhosted";
|
||||
|
||||
enableNginx = true;
|
||||
|
||||
coturn = {
|
||||
enable = true;
|
||||
|
||||
passwordFile = "/path/to/a/secret/password";
|
||||
};
|
||||
|
||||
management = {
|
||||
oidcConfigEndpoint = "https://sso.example.selfhosted/oauth2/openid/netbird/.well-known/openid-configuration";
|
||||
|
||||
settings = {
|
||||
TURNConfig = {
|
||||
Turns = [
|
||||
{
|
||||
Proto = "udp";
|
||||
URI = "turn:netbird.example.selfhosted:3478";
|
||||
Username = "netbird";
|
||||
Password._secret = "/path/to/a/secret/password";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
```
|
|
@ -0,0 +1,67 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkOption
|
||||
optionalAttrs
|
||||
;
|
||||
|
||||
inherit (lib.types) str;
|
||||
|
||||
cfg = config.services.netbird.server;
|
||||
in
|
||||
|
||||
{
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ thubrecht ];
|
||||
doc = ./server.md;
|
||||
};
|
||||
|
||||
# Import the separate components
|
||||
imports = [
|
||||
./coturn.nix
|
||||
./dashboard.nix
|
||||
./management.nix
|
||||
./signal.nix
|
||||
];
|
||||
|
||||
options.services.netbird.server = {
|
||||
enable = mkEnableOption "Netbird Server stack, comprising the dashboard, management API and signal service";
|
||||
|
||||
enableNginx = mkEnableOption "Nginx reverse-proxy for the netbird server services.";
|
||||
|
||||
domain = mkOption {
|
||||
type = str;
|
||||
description = "The domain under which the netbird server runs.";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.netbird.server = {
|
||||
dashboard = {
|
||||
inherit (cfg) enable domain enableNginx;
|
||||
|
||||
managementServer = "https://${cfg.domain}";
|
||||
};
|
||||
|
||||
management =
|
||||
{
|
||||
inherit (cfg) enable domain enableNginx;
|
||||
}
|
||||
// (optionalAttrs cfg.coturn.enable {
|
||||
turnDomain = cfg.domain;
|
||||
turnPort = config.services.coturn.tls-listening-port;
|
||||
});
|
||||
|
||||
signal = {
|
||||
inherit (cfg) enable domain enableNginx;
|
||||
};
|
||||
|
||||
coturn = {
|
||||
inherit (cfg) domain;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
utils,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
getExe'
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkPackageOption
|
||||
mkOption
|
||||
;
|
||||
|
||||
inherit (lib.types) enum port str;
|
||||
|
||||
inherit (utils) escapeSystemdExecArgs;
|
||||
|
||||
cfg = config.services.netbird.server.signal;
|
||||
in
|
||||
|
||||
{
|
||||
options.services.netbird.server.signal = {
|
||||
enable = mkEnableOption "Netbird's Signal Service";
|
||||
|
||||
package = mkPackageOption pkgs "netbird" { };
|
||||
|
||||
enableNginx = mkEnableOption "Nginx reverse-proxy for the netbird signal service.";
|
||||
|
||||
domain = mkOption {
|
||||
type = str;
|
||||
description = "The domain name for the signal service.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = port;
|
||||
default = 8012;
|
||||
description = "Internal port of the signal server.";
|
||||
};
|
||||
|
||||
logLevel = mkOption {
|
||||
type = enum [
|
||||
"ERROR"
|
||||
"WARN"
|
||||
"INFO"
|
||||
"DEBUG"
|
||||
];
|
||||
default = "INFO";
|
||||
description = "Log level of the netbird signal service.";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.netbird-signal = {
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = escapeSystemdExecArgs [
|
||||
(getExe' cfg.package "netbird-signal")
|
||||
"run"
|
||||
# Port to listen on
|
||||
"--port"
|
||||
cfg.port
|
||||
# Log to stdout
|
||||
"--log-file"
|
||||
"console"
|
||||
# Log level
|
||||
"--log-level"
|
||||
cfg.logLevel
|
||||
];
|
||||
|
||||
Restart = "always";
|
||||
RuntimeDirectory = "netbird-mgmt";
|
||||
StateDirectory = "netbird-mgmt";
|
||||
WorkingDirectory = "/var/lib/netbird-mgmt";
|
||||
|
||||
# hardening
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateMounts = true;
|
||||
PrivateTmp = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectSystem = true;
|
||||
RemoveIPC = true;
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
};
|
||||
|
||||
stopIfChanged = false;
|
||||
};
|
||||
|
||||
services.nginx = mkIf cfg.enableNginx {
|
||||
enable = true;
|
||||
|
||||
virtualHosts.${cfg.domain} = {
|
||||
locations."/signalexchange.SignalExchange/".extraConfig = ''
|
||||
# This is necessary so that grpc connections do not get closed early
|
||||
# see https://stackoverflow.com/a/67805465
|
||||
client_body_timeout 1d;
|
||||
|
||||
grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
grpc_pass grpc://localhost:${builtins.toString cfg.port};
|
||||
grpc_read_timeout 1d;
|
||||
grpc_send_timeout 1d;
|
||||
grpc_socket_keepalive on;
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,156 @@
|
|||
{ config, lib, pkgs, utils, ... }:
|
||||
let
|
||||
inherit (lib) mkEnableOption mkPackageOption mkOption mkIf mkDefault types optionals getExe;
|
||||
inherit (utils) escapeSystemdExecArgs;
|
||||
cfg = config.services.sunshine;
|
||||
|
||||
# ports used are offset from a single base port, see https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/advanced_usage.html#port
|
||||
generatePorts = port: offsets: map (offset: port + offset) offsets;
|
||||
defaultPort = 47989;
|
||||
|
||||
appsFormat = pkgs.formats.json { };
|
||||
settingsFormat = pkgs.formats.keyValue { };
|
||||
|
||||
appsFile = appsFormat.generate "apps.json" cfg.applications;
|
||||
configFile = settingsFormat.generate "sunshine.conf" cfg.settings;
|
||||
in
|
||||
{
|
||||
options.services.sunshine = with types; {
|
||||
enable = mkEnableOption "Sunshine, a self-hosted game stream host for Moonlight";
|
||||
package = mkPackageOption pkgs "sunshine" { };
|
||||
openFirewall = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to automatically open ports in the firewall.
|
||||
'';
|
||||
};
|
||||
capSysAdmin = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to give the Sunshine binary CAP_SYS_ADMIN, required for DRM/KMS screen capture.
|
||||
'';
|
||||
};
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
description = ''
|
||||
Settings to be rendered into the configuration file. If this is set, no configuration is possible from the web UI.
|
||||
|
||||
See https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/advanced_usage.html#configuration for syntax.
|
||||
'';
|
||||
example = ''
|
||||
{
|
||||
sunshine_name = "nixos";
|
||||
}
|
||||
'';
|
||||
type = submodule (settings: {
|
||||
freeformType = settingsFormat.type;
|
||||
options.port = mkOption {
|
||||
type = port;
|
||||
default = defaultPort;
|
||||
description = ''
|
||||
Base port -- others used are offset from this one, see https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/advanced_usage.html#port for details.
|
||||
'';
|
||||
};
|
||||
});
|
||||
};
|
||||
applications = mkOption {
|
||||
default = { };
|
||||
description = ''
|
||||
Configuration for applications to be exposed to Moonlight. If this is set, no configuration is possible from the web UI, and must be by the `settings` option.
|
||||
'';
|
||||
example = ''
|
||||
{
|
||||
env = {
|
||||
PATH = "$(PATH):$(HOME)/.local/bin";
|
||||
};
|
||||
apps = [
|
||||
{
|
||||
name = "1440p Desktop";
|
||||
prep-cmd = [
|
||||
{
|
||||
do = "''${pkgs.kdePackages.libkscreen}/bin/kscreen-doctor output.DP-4.mode.2560x1440@144";
|
||||
undo = "''${pkgs.kdePackages.libkscreen}/bin/kscreen-doctor output.DP-4.mode.3440x1440@144";
|
||||
}
|
||||
];
|
||||
exclude-global-prep-cmd = "false";
|
||||
auto-detach = "true";
|
||||
}
|
||||
];
|
||||
}
|
||||
'';
|
||||
type = submodule {
|
||||
options = {
|
||||
env = mkOption {
|
||||
default = { };
|
||||
description = ''
|
||||
Environment variables to be set for the applications.
|
||||
'';
|
||||
type = attrsOf str;
|
||||
};
|
||||
apps = mkOption {
|
||||
default = [ ];
|
||||
description = ''
|
||||
Applications to be exposed to Moonlight.
|
||||
'';
|
||||
type = listOf attrs;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.sunshine.settings.file_apps = mkIf (cfg.applications.apps != [ ]) "${appsFile}";
|
||||
|
||||
environment.systemPackages = [
|
||||
cfg.package
|
||||
];
|
||||
|
||||
networking.firewall = mkIf cfg.openFirewall {
|
||||
allowedTCPPorts = generatePorts cfg.settings.port [ (-5) 0 1 21 ];
|
||||
allowedUDPPorts = generatePorts cfg.settings.port [ 9 10 11 13 21 ];
|
||||
};
|
||||
|
||||
boot.kernelModules = [ "uinput" ];
|
||||
|
||||
services.udev.packages = [ cfg.package ];
|
||||
|
||||
services.avahi = {
|
||||
enable = mkDefault true;
|
||||
publish = {
|
||||
enable = mkDefault true;
|
||||
userServices = mkDefault true;
|
||||
};
|
||||
};
|
||||
|
||||
security.wrappers.sunshine = mkIf cfg.capSysAdmin {
|
||||
owner = "root";
|
||||
group = "root";
|
||||
capabilities = "cap_sys_admin+p";
|
||||
source = getExe cfg.package;
|
||||
};
|
||||
|
||||
systemd.user.services.sunshine = {
|
||||
description = "Self-hosted game stream host for Moonlight";
|
||||
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
partOf = [ "graphical-session.target" ];
|
||||
wants = [ "graphical-session.target" ];
|
||||
after = [ "graphical-session.target" ];
|
||||
|
||||
startLimitIntervalSec = 500;
|
||||
startLimitBurst = 5;
|
||||
|
||||
serviceConfig = {
|
||||
# only add configFile if an application or a setting other than the default port is set to allow configuration from web UI
|
||||
ExecStart = escapeSystemdExecArgs ([
|
||||
(if cfg.capSysAdmin then "${config.security.wrapperDir}/sunshine" else "${getExe cfg.package}")
|
||||
] ++ optionals (cfg.applications.apps != [ ] || (builtins.length (builtins.attrNames cfg.settings) > 1 || cfg.settings.port != defaultPort)) [ "${configFile}" ]);
|
||||
Restart = "on-failure";
|
||||
RestartSec = "5s";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,131 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.manticore;
|
||||
format = pkgs.formats.json { };
|
||||
|
||||
toSphinx = {
|
||||
mkKeyValue ? mkKeyValueDefault {} "=",
|
||||
listsAsDuplicateKeys ? true
|
||||
}: attrsOfAttrs:
|
||||
let
|
||||
# map function to string for each key val
|
||||
mapAttrsToStringsSep = sep: mapFn: attrs:
|
||||
concatStringsSep sep
|
||||
(mapAttrsToList mapFn attrs);
|
||||
mkSection = sectName: sectValues: ''
|
||||
${sectName} {
|
||||
'' + lib.generators.toKeyValue { inherit mkKeyValue listsAsDuplicateKeys; } sectValues + ''}'';
|
||||
in
|
||||
# map input to ini sections
|
||||
mapAttrsToStringsSep "\n" mkSection attrsOfAttrs;
|
||||
|
||||
configFile = pkgs.writeText "manticore.conf" (
|
||||
toSphinx {
|
||||
mkKeyValue = k: v: " ${k} = ${v}";
|
||||
} cfg.settings
|
||||
);
|
||||
|
||||
in {
|
||||
|
||||
options = {
|
||||
services.manticore = {
|
||||
|
||||
enable = mkEnableOption "Manticoresearch";
|
||||
|
||||
settings = mkOption {
|
||||
default = {
|
||||
searchd = {
|
||||
listen = [
|
||||
"127.0.0.1:9312"
|
||||
"127.0.0.1:9306:mysql"
|
||||
"127.0.0.1:9308:http"
|
||||
];
|
||||
log = "/var/log/manticore/searchd.log";
|
||||
query_log = "/var/log/manticore/query.log";
|
||||
pid_file = "/run/manticore/searchd.pid";
|
||||
data_dir = "/var/lib/manticore";
|
||||
};
|
||||
};
|
||||
description = ''
|
||||
Configuration for Manticoresearch. See
|
||||
<https://manual.manticoresearch.com/Server%20settings>
|
||||
for more information.
|
||||
'';
|
||||
type = types.submodule {
|
||||
freeformType = format.type;
|
||||
};
|
||||
example = literalExpression ''
|
||||
{
|
||||
searchd = {
|
||||
listen = [
|
||||
"127.0.0.1:9312"
|
||||
"127.0.0.1:9306:mysql"
|
||||
"127.0.0.1:9308:http"
|
||||
];
|
||||
log = "/var/log/manticore/searchd.log";
|
||||
query_log = "/var/log/manticore/query.log";
|
||||
pid_file = "/run/manticore/searchd.pid";
|
||||
data_dir = "/var/lib/manticore";
|
||||
};
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
systemd = {
|
||||
packages = [ pkgs.manticoresearch ];
|
||||
services.manticore = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = [
|
||||
""
|
||||
"${pkgs.manticoresearch}/bin/searchd --config ${configFile}"
|
||||
];
|
||||
ExecStop = [
|
||||
""
|
||||
"${pkgs.manticoresearch}/bin/searchd --config ${configFile} --stopwait"
|
||||
];
|
||||
ExecStartPre = [ "" ];
|
||||
DynamicUser = true;
|
||||
LogsDirectory = "manticore";
|
||||
RuntimeDirectory = "manticore";
|
||||
StateDirectory = "manticore";
|
||||
ReadWritePaths = "";
|
||||
CapabilityBoundingSet = "";
|
||||
RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" "AF_INET6" ];
|
||||
RestrictNamespaces = true;
|
||||
PrivateDevices = true;
|
||||
PrivateUsers = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [ "@system-service" "~@privileged" ];
|
||||
RestrictRealtime = true;
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
UMask = "0066";
|
||||
ProtectHostname = true;
|
||||
} // lib.optionalAttrs (cfg.settings.searchd.pid_file != null) {
|
||||
PIDFile = cfg.settings.searchd.pid_file;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ onny ];
|
||||
|
||||
}
|
|
@ -4,15 +4,29 @@ let
|
|||
cfg = config.services.earlyoom;
|
||||
|
||||
inherit (lib)
|
||||
mkDefault mkEnableOption mkIf mkOption types
|
||||
mkRemovedOptionModule literalExpression
|
||||
escapeShellArg concatStringsSep optional optionalString;
|
||||
|
||||
concatStringsSep
|
||||
escapeShellArg
|
||||
literalExpression
|
||||
mkDefault
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkOption
|
||||
mkPackageOption
|
||||
mkRemovedOptionModule
|
||||
optionalString
|
||||
optionals
|
||||
types;
|
||||
in
|
||||
{
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ AndersonTorres ];
|
||||
};
|
||||
|
||||
options.services.earlyoom = {
|
||||
enable = mkEnableOption "early out of memory killing";
|
||||
|
||||
package = mkPackageOption pkgs "earlyoom" { };
|
||||
|
||||
freeMemThreshold = mkOption {
|
||||
type = types.ints.between 1 100;
|
||||
default = 10;
|
||||
|
@ -138,22 +152,21 @@ in
|
|||
systemd.services.earlyoom = {
|
||||
description = "Early OOM Daemon for Linux";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = optional cfg.enableNotifications pkgs.dbus;
|
||||
path = optionals cfg.enableNotifications [ pkgs.dbus ];
|
||||
serviceConfig = {
|
||||
StandardError = "journal";
|
||||
ExecStart = concatStringsSep " " ([
|
||||
"${pkgs.earlyoom}/bin/earlyoom"
|
||||
"${lib.getExe cfg.package}"
|
||||
("-m ${toString cfg.freeMemThreshold}"
|
||||
+ optionalString (cfg.freeMemKillThreshold != null) ",${toString cfg.freeMemKillThreshold}")
|
||||
+ optionalString (cfg.freeMemKillThreshold != null) ",${toString cfg.freeMemKillThreshold}")
|
||||
("-s ${toString cfg.freeSwapThreshold}"
|
||||
+ optionalString (cfg.freeSwapKillThreshold != null) ",${toString cfg.freeSwapKillThreshold}")
|
||||
+ optionalString (cfg.freeSwapKillThreshold != null) ",${toString cfg.freeSwapKillThreshold}")
|
||||
"-r ${toString cfg.reportInterval}"
|
||||
]
|
||||
++ optional cfg.enableDebugInfo "-d"
|
||||
++ optional cfg.enableNotifications "-n"
|
||||
++ optional (cfg.killHook != null) "-N ${escapeShellArg cfg.killHook}"
|
||||
++ cfg.extraArgs
|
||||
);
|
||||
++ optionals cfg.enableDebugInfo [ "-d" ]
|
||||
++ optionals cfg.enableNotifications [ "-n" ]
|
||||
++ optionals (cfg.killHook != null) [ "-N ${escapeShellArg cfg.killHook}" ]
|
||||
++ cfg.extraArgs);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -0,0 +1,367 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) optionalString mkDefault mkIf mkOption mkEnableOption literalExpression;
|
||||
inherit (lib.types) nullOr attrsOf oneOf str int bool path package enum submodule;
|
||||
inherit (lib.strings) concatMapStringsSep removePrefix toShellVars removeSuffix hasSuffix;
|
||||
inherit (lib.attrsets) attrValues genAttrs filterAttrs mapAttrs' nameValuePair;
|
||||
inherit (builtins) isInt isString toString typeOf;
|
||||
|
||||
cfg = config.services.firefly-iii;
|
||||
|
||||
user = cfg.user;
|
||||
group = cfg.group;
|
||||
|
||||
defaultUser = "firefly-iii";
|
||||
defaultGroup = "firefly-iii";
|
||||
|
||||
artisan = "${cfg.package}/artisan";
|
||||
|
||||
env-file-values = mapAttrs' (n: v: nameValuePair (removeSuffix "_FILE" n) v)
|
||||
(filterAttrs (n: v: hasSuffix "_FILE" n) cfg.settings);
|
||||
env-nonfile-values = filterAttrs (n: v: ! hasSuffix "_FILE" n) cfg.settings;
|
||||
|
||||
envfile = pkgs.writeText "firefly-iii-env" ''
|
||||
${toShellVars env-file-values}
|
||||
${toShellVars env-nonfile-values}
|
||||
'';
|
||||
|
||||
fileenv-func = ''
|
||||
cp --no-preserve=mode ${envfile} /tmp/firefly-iii-env
|
||||
${concatMapStringsSep "\n"
|
||||
(n: "${pkgs.replace-secret}/bin/replace-secret ${n} ${n} /tmp/firefly-iii-env")
|
||||
(attrValues env-file-values)}
|
||||
set -a
|
||||
. /tmp/firefly-iii-env
|
||||
set +a
|
||||
'';
|
||||
|
||||
firefly-iii-maintenance = pkgs.writeShellScript "firefly-iii-maintenance.sh" ''
|
||||
${fileenv-func}
|
||||
|
||||
${optionalString (cfg.settings.DB_CONNECTION == "sqlite")
|
||||
"touch ${cfg.dataDir}/storage/database/database.sqlite"}
|
||||
${artisan} migrate --seed --no-interaction --force
|
||||
${artisan} firefly-iii:decrypt-all
|
||||
${artisan} firefly-iii:upgrade-database
|
||||
${artisan} firefly-iii:correct-database
|
||||
${artisan} firefly-iii:report-integrity
|
||||
${artisan} firefly-iii:laravel-passport-keys
|
||||
${artisan} cache:clear
|
||||
|
||||
mv /tmp/firefly-iii-env /run/phpfpm/firefly-iii-env
|
||||
'';
|
||||
|
||||
commonServiceConfig = {
|
||||
Type = "oneshot";
|
||||
User = user;
|
||||
Group = group;
|
||||
StateDirectory = "${removePrefix "/var/lib/" cfg.dataDir}";
|
||||
WorkingDirectory = cfg.package;
|
||||
PrivateTmp = true;
|
||||
PrivateDevices = true;
|
||||
CapabilityBoundingSet = "";
|
||||
AmbientCapabilities = "";
|
||||
ProtectSystem = "strict";
|
||||
ProtectKernelTunables = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectClock = true;
|
||||
ProtectHostname = true;
|
||||
ProtectHome = "tmpfs";
|
||||
ProtectKernelLogs = true;
|
||||
ProtectProc = "invisible";
|
||||
ProcSubset = "pid";
|
||||
PrivateNetwork = false;
|
||||
RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX";
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
"@system-service @resources"
|
||||
"~@obsolete @privileged"
|
||||
];
|
||||
RestrictSUIDSGID = true;
|
||||
RemoveIPC = true;
|
||||
NoNewPrivileges = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictNamespaces = true;
|
||||
LockPersonality = true;
|
||||
PrivateUsers = true;
|
||||
};
|
||||
|
||||
in {
|
||||
|
||||
options.services.firefly-iii = {
|
||||
|
||||
enable = mkEnableOption "Firefly III: A free and open source personal finance manager";
|
||||
|
||||
user = mkOption {
|
||||
type = str;
|
||||
default = defaultUser;
|
||||
description = "User account under which firefly-iii runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = str;
|
||||
default = if cfg.enableNginx then "nginx" else defaultGroup;
|
||||
defaultText = "If `services.firefly-iii.enableNginx` is true then `nginx` else ${defaultGroup}";
|
||||
description = ''
|
||||
Group under which firefly-iii runs. It is best to set this to the group
|
||||
of whatever webserver is being used as the frontend.
|
||||
'';
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
type = path;
|
||||
default = "/var/lib/firefly-iii";
|
||||
description = ''
|
||||
The place where firefly-iii stores its state.
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = package;
|
||||
default = pkgs.firefly-iii;
|
||||
defaultText = literalExpression "pkgs.firefly-iii";
|
||||
description = ''
|
||||
The firefly-iii package served by php-fpm and the webserver of choice.
|
||||
This option can be used to point the webserver to the correct root. It
|
||||
may also be used to set the package to a different version, say a
|
||||
development version.
|
||||
'';
|
||||
apply = firefly-iii : firefly-iii.override (prev: {
|
||||
dataDir = cfg.dataDir;
|
||||
});
|
||||
};
|
||||
|
||||
enableNginx = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable nginx or not. If enabled, an nginx virtual host will
|
||||
be created for access to firefly-iii. If not enabled, then you may use
|
||||
`''${config.services.firefly-iii.package}` as your document root in
|
||||
whichever webserver you wish to setup.
|
||||
'';
|
||||
};
|
||||
|
||||
virtualHost = mkOption {
|
||||
type = str;
|
||||
description = ''
|
||||
The hostname at which you wish firefly-iii to be served. If you have
|
||||
enabled nginx using `services.firefly-iii.enableNginx` then this will
|
||||
be used.
|
||||
'';
|
||||
};
|
||||
|
||||
poolConfig = mkOption {
|
||||
type = attrsOf (oneOf [ str int bool ]);
|
||||
default = {
|
||||
"pm" = "dynamic";
|
||||
"pm.max_children" = 32;
|
||||
"pm.start_servers" = 2;
|
||||
"pm.min_spare_servers" = 2;
|
||||
"pm.max_spare_servers" = 4;
|
||||
"pm.max_requests" = 500;
|
||||
};
|
||||
description = ''
|
||||
Options for the Firefly III PHP pool. See the documentation on <literal>php-fpm.conf</literal>
|
||||
for details on configuration directives.
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
description = ''
|
||||
Options for firefly-iii configuration. Refer to
|
||||
<https://github.com/firefly-iii/firefly-iii/blob/main/.env.example> for
|
||||
details on supported values. All <option>_FILE values supported by
|
||||
upstream are supported here.
|
||||
|
||||
APP_URL will be set by `services.firefly-iii.virtualHost`, do not
|
||||
redefine it here.
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
APP_ENV = "production";
|
||||
APP_KEY_FILE = "/var/secrets/firefly-iii-app-key.txt";
|
||||
SITE_OWNER = "mail@example.com";
|
||||
DB_CONNECTION = "mysql";
|
||||
DB_HOST = "db";
|
||||
DB_PORT = 3306;
|
||||
DB_DATABASE = "firefly";
|
||||
DB_USERNAME = "firefly";
|
||||
DB_PASSWORD_FILE = "/var/secrets/firefly-iii-mysql-password.txt;
|
||||
}
|
||||
'';
|
||||
default = {};
|
||||
type = submodule {
|
||||
freeformType = attrsOf (oneOf [str int bool]);
|
||||
options = {
|
||||
DB_CONNECTION = mkOption {
|
||||
type = enum [ "sqlite" "pgsql" "mysql" ];
|
||||
default = "sqlite";
|
||||
example = "pgsql";
|
||||
description = ''
|
||||
The type of database you wish to use. Can be one of "sqlite",
|
||||
"mysql" or "pgsql".
|
||||
'';
|
||||
};
|
||||
APP_ENV = mkOption {
|
||||
type = enum [ "local" "production" "testing" ];
|
||||
default = "local";
|
||||
example = "production";
|
||||
description = ''
|
||||
The app environment. It is recommended to keep this at "local".
|
||||
Possible values are "local", "production" and "testing"
|
||||
'';
|
||||
};
|
||||
DB_PORT = mkOption {
|
||||
type = nullOr int;
|
||||
default = if cfg.settings.DB_CONNECTION == "sqlite" then null
|
||||
else if cfg.settings.DB_CONNECTION == "mysql" then 3306
|
||||
else 5432;
|
||||
defaultText = ''
|
||||
`null` if DB_CONNECTION is "sqlite", `3306` if "mysql", `5432` if "pgsql"
|
||||
'';
|
||||
description = ''
|
||||
The port your database is listening at. sqlite does not require
|
||||
this value to be filled.
|
||||
'';
|
||||
};
|
||||
APP_KEY_FILE = mkOption {
|
||||
type = path;
|
||||
description = ''
|
||||
The path to your appkey. The file should contain a 32 character
|
||||
random app key. This may be set using `echo "base64:$(head -c 32
|
||||
/dev/urandom | base64)" > /path/to/key-file`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.firefly-iii = {
|
||||
settings = {
|
||||
APP_URL = cfg.virtualHost;
|
||||
};
|
||||
};
|
||||
|
||||
services.phpfpm.pools.firefly-iii = {
|
||||
inherit user group;
|
||||
phpPackage = cfg.package.phpPackage;
|
||||
phpOptions = ''
|
||||
log_errors = on
|
||||
'';
|
||||
settings = {
|
||||
"listen.mode" = "0660";
|
||||
"listen.owner" = user;
|
||||
"listen.group" = group;
|
||||
"clear_env" = "no";
|
||||
} // cfg.poolConfig;
|
||||
};
|
||||
|
||||
systemd.services.phpfpm-firefly-iii.serviceConfig = {
|
||||
EnvironmentFile = "/run/phpfpm/firefly-iii-env";
|
||||
ExecStartPost = "${pkgs.coreutils}/bin/rm /run/phpfpm/firefly-iii-env";
|
||||
};
|
||||
|
||||
systemd.services.firefly-iii-setup = {
|
||||
requiredBy = [ "phpfpm-firefly-iii.service" ];
|
||||
before = [ "phpfpm-firefly-iii.service" ];
|
||||
serviceConfig = {
|
||||
ExecStart = firefly-iii-maintenance;
|
||||
RuntimeDirectory = "phpfpm";
|
||||
RuntimeDirectoryPreserve = true;
|
||||
} // commonServiceConfig;
|
||||
unitConfig.JoinsNamespaceOf = "phpfpm-firefly-iii.service";
|
||||
};
|
||||
|
||||
systemd.services.firefly-iii-cron = {
|
||||
description = "Daily Firefly III cron job";
|
||||
script = ''
|
||||
${fileenv-func}
|
||||
${artisan} firefly-iii:cron
|
||||
'';
|
||||
serviceConfig = commonServiceConfig;
|
||||
};
|
||||
|
||||
systemd.timers.firefly-iii-cron = {
|
||||
description = "Trigger Firefly Cron";
|
||||
timerConfig = {
|
||||
OnCalendar = "Daily";
|
||||
RandomizedDelaySec = "1800s";
|
||||
Persistent = true;
|
||||
};
|
||||
wantedBy = [ "timers.target" ];
|
||||
};
|
||||
|
||||
services.nginx = mkIf cfg.enableNginx {
|
||||
enable = true;
|
||||
recommendedTlsSettings = mkDefault true;
|
||||
recommendedOptimisation = mkDefault true;
|
||||
recommendedGzipSettings = mkDefault true;
|
||||
virtualHosts.${cfg.virtualHost} = {
|
||||
root = "${cfg.package}/public";
|
||||
locations = {
|
||||
"/" = {
|
||||
tryFiles = "$uri $uri/ /index.php?$query_string";
|
||||
index = "index.php";
|
||||
extraConfig = ''
|
||||
sendfile off;
|
||||
'';
|
||||
};
|
||||
"~ \.php$" = {
|
||||
extraConfig = ''
|
||||
include ${config.services.nginx.package}/conf/fastcgi_params ;
|
||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
|
||||
fastcgi_pass unix:${config.services.phpfpm.pools.firefly-iii.socket};
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.tmpfiles.settings."10-firefly-iii" = genAttrs [
|
||||
"${cfg.dataDir}/storage"
|
||||
"${cfg.dataDir}/storage/app"
|
||||
"${cfg.dataDir}/storage/database"
|
||||
"${cfg.dataDir}/storage/export"
|
||||
"${cfg.dataDir}/storage/framework"
|
||||
"${cfg.dataDir}/storage/framework/cache"
|
||||
"${cfg.dataDir}/storage/framework/sessions"
|
||||
"${cfg.dataDir}/storage/framework/views"
|
||||
"${cfg.dataDir}/storage/logs"
|
||||
"${cfg.dataDir}/storage/upload"
|
||||
"${cfg.dataDir}/cache"
|
||||
] (n: {
|
||||
d = {
|
||||
group = group;
|
||||
mode = "0700";
|
||||
user = user;
|
||||
};
|
||||
}) // {
|
||||
"${cfg.dataDir}".d = {
|
||||
group = group;
|
||||
mode = "0710";
|
||||
user = user;
|
||||
};
|
||||
};
|
||||
|
||||
users = {
|
||||
users = mkIf (user == defaultUser) {
|
||||
${defaultUser} = {
|
||||
description = "Firefly-iii service user";
|
||||
inherit group;
|
||||
isSystemUser = true;
|
||||
home = cfg.dataDir;
|
||||
};
|
||||
};
|
||||
groups = mkIf (group == defaultGroup) {
|
||||
${defaultGroup} = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -168,7 +168,10 @@ in rec {
|
|||
(onFullSupported "nixpkgs.emacs")
|
||||
(onFullSupported "nixpkgs.jdk")
|
||||
(onSystems ["x86_64-linux"] "nixpkgs.mesa_i686") # i686 sanity check + useful
|
||||
["nixpkgs.tarball"]
|
||||
[
|
||||
"nixpkgs.tarball"
|
||||
"nixpkgs.release-checks"
|
||||
]
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -81,6 +81,7 @@ in rec {
|
|||
php
|
||||
postgresql
|
||||
python
|
||||
release-checks
|
||||
rsyslog
|
||||
stdenv
|
||||
subversion
|
||||
|
@ -103,6 +104,7 @@ in rec {
|
|||
[
|
||||
"nixos.channel"
|
||||
"nixpkgs.tarball"
|
||||
"nixpkgs.release-checks"
|
||||
]
|
||||
(map (onSystems [ "x86_64-linux" ]) [
|
||||
"nixos.tests.boot.biosCdrom"
|
||||
|
|
|
@ -308,6 +308,7 @@ in {
|
|||
ferm = handleTest ./ferm.nix {};
|
||||
ferretdb = handleTest ./ferretdb.nix {};
|
||||
filesystems-overlayfs = runTest ./filesystems-overlayfs.nix;
|
||||
firefly-iii = handleTest ./firefly-iii.nix {};
|
||||
firefox = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox; };
|
||||
firefox-beta = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-beta; };
|
||||
firefox-devedition = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-devedition; };
|
||||
|
@ -857,6 +858,7 @@ in {
|
|||
stunnel = handleTest ./stunnel.nix {};
|
||||
sudo = handleTest ./sudo.nix {};
|
||||
sudo-rs = handleTest ./sudo-rs.nix {};
|
||||
sunshine = handleTest ./sunshine.nix {};
|
||||
suwayomi-server = handleTest ./suwayomi-server.nix {};
|
||||
swap-file-btrfs = handleTest ./swap-file-btrfs.nix {};
|
||||
swap-partition = handleTest ./swap-partition.nix {};
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import ./make-test-python.nix ({ lib, ... }: {
|
||||
name = "earlyoom";
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ ncfavier ];
|
||||
maintainers = with lib.maintainers; [ ncfavier AndersonTorres ];
|
||||
};
|
||||
|
||||
machine = {
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
import ./make-test-python.nix ({ lib, pkgs, ... }: {
|
||||
name = "firefly-iii";
|
||||
meta.maintainers = [ lib.maintainers.savyajha ];
|
||||
|
||||
nodes.machine = { config, ... }: {
|
||||
environment.etc = {
|
||||
"firefly-iii-appkey".text = "TestTestTestTestTestTestTestTest";
|
||||
};
|
||||
services.firefly-iii = {
|
||||
enable = true;
|
||||
virtualHost = "http://localhost";
|
||||
enableNginx = true;
|
||||
settings = {
|
||||
APP_KEY_FILE = "/etc/firefly-iii-appkey";
|
||||
LOG_CHANNEL = "stdout";
|
||||
SITE_OWNER = "mail@example.com";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("phpfpm-firefly-iii.service")
|
||||
machine.wait_for_unit("nginx.service")
|
||||
machine.succeed("curl -fvvv -Ls http://localhost/ | grep 'Firefly III'")
|
||||
'';
|
||||
})
|
|
@ -0,0 +1,70 @@
|
|||
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
name = "sunshine";
|
||||
meta = {
|
||||
# test is flaky on aarch64
|
||||
broken = pkgs.stdenv.isAarch64;
|
||||
maintainers = [ lib.maintainers.devusb ];
|
||||
};
|
||||
|
||||
nodes.sunshine = { config, pkgs, ... }: {
|
||||
imports = [
|
||||
./common/x11.nix
|
||||
];
|
||||
|
||||
services.sunshine = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
settings = {
|
||||
capture = "x11";
|
||||
encoder = "software";
|
||||
output_name = 0;
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
gxmessage
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
nodes.moonlight = { config, pkgs, ... }: {
|
||||
imports = [
|
||||
./common/x11.nix
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
moonlight-qt
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
enableOCR = true;
|
||||
|
||||
testScript = ''
|
||||
# start the tests, wait for sunshine to be up
|
||||
start_all()
|
||||
sunshine.wait_for_open_port(48010,"localhost")
|
||||
|
||||
# set the admin username/password, restart sunshine
|
||||
sunshine.execute("sunshine --creds sunshine sunshine")
|
||||
sunshine.systemctl("restart sunshine","root")
|
||||
sunshine.wait_for_open_port(48010,"localhost")
|
||||
|
||||
# initiate pairing from moonlight
|
||||
moonlight.execute("moonlight pair sunshine --pin 1234 >&2 & disown")
|
||||
moonlight.wait_for_console_text("Executing request")
|
||||
|
||||
# respond to pairing request from sunshine
|
||||
sunshine.succeed("curl --insecure -u sunshine:sunshine -d '{\"pin\": \"1234\"}' https://localhost:47990/api/pin")
|
||||
|
||||
# close moonlight once pairing complete
|
||||
moonlight.send_key("kp_enter")
|
||||
|
||||
# put words on the sunshine screen for moonlight to see
|
||||
sunshine.execute("gxmessage 'hello world' -center -font 'sans 75' >&2 & disown")
|
||||
|
||||
# connect to sunshine from moonlight and look for the words
|
||||
moonlight.execute("moonlight --video-decoder software stream sunshine 'Desktop' >&2 & disown")
|
||||
moonlight.wait_for_text("hello world")
|
||||
'';
|
||||
})
|
|
@ -1,6 +1,5 @@
|
|||
{ lib, stdenv
|
||||
, fetchurl
|
||||
, gcc-unwrapped
|
||||
, dpkg
|
||||
, util-linux
|
||||
, bash
|
||||
|
@ -57,8 +56,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
postFixup = ''
|
||||
makeWrapper ${electron}/bin/electron $out/bin/${pname} \
|
||||
--add-flags $out/share/${pname}/resources/app.asar \
|
||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ gcc-unwrapped.lib ]}"
|
||||
--add-flags $out/share/${pname}/resources/app.aasar
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
{ lib, stdenv, fetchurl, dpkg, makeWrapper, electron, libsecret
|
||||
, desktop-file-utils , callPackage }:
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, dpkg
|
||||
, makeWrapper
|
||||
, electron
|
||||
, desktop-file-utils
|
||||
, callPackage
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
|
@ -33,8 +40,7 @@ stdenv.mkDerivation rec {
|
|||
cp -R opt/Standard\ Notes/resources/app.asar $out/share/standardnotes/
|
||||
|
||||
makeWrapper ${electron}/bin/electron $out/bin/standardnotes \
|
||||
--add-flags $out/share/standardnotes/app.asar \
|
||||
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libsecret stdenv.cc.cc.lib ]}
|
||||
--add-flags $out/share/standardnotes/app.asar
|
||||
|
||||
${desktop-file-utils}/bin/desktop-file-install --dir $out/share/applications \
|
||||
--set-key Exec --set-value standardnotes usr/share/applications/standard-notes.desktop
|
||||
|
|
|
@ -1,27 +1,29 @@
|
|||
# Before adding a new extension, read ./README.md
|
||||
|
||||
{ config
|
||||
, lib
|
||||
, fetchurl
|
||||
, callPackage
|
||||
, vscode-utils
|
||||
, python3Packages
|
||||
, jdk
|
||||
, llvmPackages
|
||||
, llvmPackages_14
|
||||
, protobuf
|
||||
, jq
|
||||
, moreutils
|
||||
, autoPatchelfHook
|
||||
, zlib
|
||||
, stdenv
|
||||
{
|
||||
autoPatchelfHook,
|
||||
callPackage,
|
||||
config,
|
||||
fetchurl,
|
||||
jdk,
|
||||
jq,
|
||||
lib,
|
||||
llvmPackages,
|
||||
llvmPackages_14,
|
||||
moreutils,
|
||||
protobuf,
|
||||
python3Packages,
|
||||
stdenv,
|
||||
vscode-utils,
|
||||
zlib,
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (vscode-utils) buildVscodeMarketplaceExtension;
|
||||
|
||||
baseExtensions = self: lib.mapAttrs (_n: lib.recurseIntoAttrs)
|
||||
{
|
||||
baseExtensions =
|
||||
self:
|
||||
lib.mapAttrs (_n: lib.recurseIntoAttrs) {
|
||||
"13xforever".language-x86-64-assembly = buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
name = "language-x86-64-assembly";
|
||||
|
@ -142,6 +144,23 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
adzero.vscode-sievehighlight = buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
name = "vscode-sievehighlight";
|
||||
publisher = "adzero";
|
||||
version = "1.0.6";
|
||||
hash = "sha256-8Ompv792eI2kIH+5+KPL9jAf88xsMGQewHEQwi8BhoQ=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://marketplace.visualstudio.com/items/adzero.vscode-sievehighlight/changelog";
|
||||
description = "A Visual Studio Code extension to enable syntax highlight support for Sieve mail filtering language";
|
||||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=adzero.vscode-sievehighlight";
|
||||
homepage = "https://github.com/adzero/vscode-sievehighlight";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.sebtm ];
|
||||
};
|
||||
};
|
||||
|
||||
alanz.vscode-hie-server = buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
name = "vscode-hie-server";
|
||||
|
@ -316,8 +335,7 @@ let
|
|||
};
|
||||
meta = {
|
||||
description = "An arctic, north-bluish clean and elegant Visual Studio Code theme.";
|
||||
downloadPage =
|
||||
"https://marketplace.visualstudio.com/items?itemName=arcticicestudio.nord-visual-studio-code";
|
||||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=arcticicestudio.nord-visual-studio-code";
|
||||
homepage = "https://github.com/arcticicestudio/nord-visual-studio-code";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.imgabe ];
|
||||
|
@ -363,7 +381,7 @@ let
|
|||
homepage = "https://github.com/asdine/vscode-cue";
|
||||
changelog = "https://marketplace.visualstudio.com/items/asdine.cue/changelog";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [lib.maintainers.matthewpi];
|
||||
maintainers = [ lib.maintainers.matthewpi ];
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -735,30 +753,33 @@ let
|
|||
};
|
||||
|
||||
charliermarsh.ruff = buildVscodeMarketplaceExtension {
|
||||
mktplcRef = let
|
||||
sources = {
|
||||
"x86_64-linux" = {
|
||||
arch = "linux-x64";
|
||||
hash = "sha256-2c0tH/MlDOqeyffcV8ZCy4woogBTcf1GCuPPO8JXaWc=";
|
||||
mktplcRef =
|
||||
let
|
||||
sources = {
|
||||
"x86_64-linux" = {
|
||||
arch = "linux-x64";
|
||||
hash = "sha256-2c0tH/MlDOqeyffcV8ZCy4woogBTcf1GCuPPO8JXaWc=";
|
||||
};
|
||||
"x86_64-darwin" = {
|
||||
arch = "darwin-x64";
|
||||
hash = "sha256-euvGIlO7931N56R5BWKu3F9nSEoDgf+DXk7Hgl1qSUw=";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
arch = "linux-arm64";
|
||||
hash = "sha256-dGpIHChnfrQbxRZDuoAi4imgStyyPdxdvTQ3lknMYu0=";
|
||||
};
|
||||
"aarch64-darwin" = {
|
||||
arch = "darwin-arm64";
|
||||
hash = "sha256-tElX4C0I5AmpxSHMtqOsxSAUImD1tqArB5fnvhw4LFc=";
|
||||
};
|
||||
};
|
||||
"x86_64-darwin" = {
|
||||
arch = "darwin-x64";
|
||||
hash = "sha256-euvGIlO7931N56R5BWKu3F9nSEoDgf+DXk7Hgl1qSUw=";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
arch = "linux-arm64";
|
||||
hash = "sha256-dGpIHChnfrQbxRZDuoAi4imgStyyPdxdvTQ3lknMYu0=";
|
||||
};
|
||||
"aarch64-darwin" = {
|
||||
arch = "darwin-arm64";
|
||||
hash = "sha256-tElX4C0I5AmpxSHMtqOsxSAUImD1tqArB5fnvhw4LFc=";
|
||||
};
|
||||
};
|
||||
in {
|
||||
name = "ruff";
|
||||
publisher = "charliermarsh";
|
||||
version = "2024.4.0";
|
||||
} // sources.${stdenv.system} or (throw "Unsupported system ${stdenv.system}");
|
||||
in
|
||||
{
|
||||
name = "ruff";
|
||||
publisher = "charliermarsh";
|
||||
version = "2024.4.0";
|
||||
}
|
||||
// sources.${stdenv.system} or (throw "Unsupported system ${stdenv.system}");
|
||||
meta = {
|
||||
license = lib.licenses.mit;
|
||||
changelog = "https://marketplace.visualstudio.com/items/charliermarsh.ruff/changelog";
|
||||
|
@ -917,7 +938,9 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
contextmapper.context-mapper-vscode-extension = callPackage ./contextmapper.context-mapper-vscode-extension { };
|
||||
contextmapper.context-mapper-vscode-extension =
|
||||
callPackage ./contextmapper.context-mapper-vscode-extension
|
||||
{ };
|
||||
|
||||
continue.continue = buildVscodeMarketplaceExtension {
|
||||
mktplcRef =
|
||||
|
@ -945,13 +968,10 @@ let
|
|||
name = "continue";
|
||||
publisher = "Continue";
|
||||
version = "0.8.22";
|
||||
} // sources.${stdenv.system};
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
];
|
||||
buildInputs = [
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
}
|
||||
// sources.${stdenv.system};
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
buildInputs = [ stdenv.cc.cc.lib ];
|
||||
postInstall = ''
|
||||
cd "$out/$installPrefix"
|
||||
substituteInPlace "out/extension.js" \
|
||||
|
@ -963,7 +983,12 @@ let
|
|||
homepage = "https://github.com/continuedev/continue";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = [ lib.maintainers.raroh73 ];
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
"aarch64-linux"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1130,34 +1155,35 @@ let
|
|||
};
|
||||
|
||||
devsense.phptools-vscode = buildVscodeMarketplaceExtension {
|
||||
mktplcRef = let
|
||||
sources = {
|
||||
"x86_64-linux" = {
|
||||
arch = "linux-x64";
|
||||
hash = "sha256-8i5nRlzd+LnpEh9trWECxfiC1W4S0ekBab5vo18OlsA=";
|
||||
mktplcRef =
|
||||
let
|
||||
sources = {
|
||||
"x86_64-linux" = {
|
||||
arch = "linux-x64";
|
||||
hash = "sha256-8i5nRlzd+LnpEh9trWECxfiC1W4S0ekBab5vo18OlsA=";
|
||||
};
|
||||
"x86_64-darwin" = {
|
||||
arch = "darwin-x64";
|
||||
sha256 = "14crw56277rdwhigabb3nsndkfcs3yzzf7gw85jvryxviq32chgy";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
arch = "linux-arm64";
|
||||
sha256 = "1j1xlvbg3nrfmdd9zm6kywwicdwdkrq0si86lcndaii8m7sj5pfp";
|
||||
};
|
||||
"aarch64-darwin" = {
|
||||
arch = "darwin-arm64";
|
||||
sha256 = "0nlks6iqxkx1xlicsa8lrb1319rgznlxkv2gg7wkwgzph97ik8bi";
|
||||
};
|
||||
};
|
||||
"x86_64-darwin" = {
|
||||
arch = "darwin-x64";
|
||||
sha256 = "14crw56277rdwhigabb3nsndkfcs3yzzf7gw85jvryxviq32chgy";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
arch = "linux-arm64";
|
||||
sha256 = "1j1xlvbg3nrfmdd9zm6kywwicdwdkrq0si86lcndaii8m7sj5pfp";
|
||||
};
|
||||
"aarch64-darwin" = {
|
||||
arch = "darwin-arm64";
|
||||
sha256 = "0nlks6iqxkx1xlicsa8lrb1319rgznlxkv2gg7wkwgzph97ik8bi";
|
||||
};
|
||||
};
|
||||
in {
|
||||
name = "phptools-vscode";
|
||||
publisher = "devsense";
|
||||
version = "1.41.14332";
|
||||
} // sources.${stdenv.system};
|
||||
in
|
||||
{
|
||||
name = "phptools-vscode";
|
||||
publisher = "devsense";
|
||||
version = "1.41.14332";
|
||||
}
|
||||
// sources.${stdenv.system};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
];
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
|
||||
buildInputs = [
|
||||
zlib
|
||||
|
@ -1175,7 +1201,12 @@ let
|
|||
homepage = "https://github.com/DEVSENSE/phptools-docs";
|
||||
license = lib.licenses.unfree;
|
||||
maintainers = [ lib.maintainers.drupol ];
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
"aarch64-linux"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1203,7 +1234,9 @@ let
|
|||
version = "0.0.4";
|
||||
sha256 = "0sa04srhqmngmw71slnrapi2xay0arj42j4gkan8i11n7bfi1xpf";
|
||||
};
|
||||
meta = { license = lib.licenses.mit; };
|
||||
meta = {
|
||||
license = lib.licenses.mit;
|
||||
};
|
||||
};
|
||||
|
||||
dhall.vscode-dhall-lsp-server = buildVscodeMarketplaceExtension {
|
||||
|
@ -1213,7 +1246,9 @@ let
|
|||
version = "0.0.4";
|
||||
sha256 = "1zin7s827bpf9yvzpxpr5n6mv0b5rhh3civsqzmj52mdq365d2js";
|
||||
};
|
||||
meta = { license = lib.licenses.mit; };
|
||||
meta = {
|
||||
license = lib.licenses.mit;
|
||||
};
|
||||
};
|
||||
|
||||
dhedgecock.radical-vscode = buildVscodeMarketplaceExtension {
|
||||
|
@ -1240,7 +1275,9 @@ let
|
|||
version = "0.0.8";
|
||||
hash = "sha256-BQPiSxiPPjdNPtIJI8L+558DVKxngPAI9sscpcJSJUI=";
|
||||
};
|
||||
meta = { license = lib.licenses.asl20; };
|
||||
meta = {
|
||||
license = lib.licenses.asl20;
|
||||
};
|
||||
};
|
||||
|
||||
divyanshuagrawal.competitive-programming-helper = buildVscodeMarketplaceExtension {
|
||||
|
@ -1794,8 +1831,7 @@ let
|
|||
};
|
||||
meta = {
|
||||
description = "GitHub theme for VS Code";
|
||||
downloadPage =
|
||||
"https://marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme";
|
||||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme";
|
||||
homepage = "https://github.com/primer/github-vscode-theme";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.hugolgst ];
|
||||
|
@ -1830,7 +1866,9 @@ let
|
|||
version = "0.78.1";
|
||||
hash = "sha256-T9oW6o4ItZfR8E1qrcH3nhMvVB6ihi4kpiDz7YGHOcI=";
|
||||
};
|
||||
meta = { license = lib.licenses.mit; };
|
||||
meta = {
|
||||
license = lib.licenses.mit;
|
||||
};
|
||||
};
|
||||
|
||||
gitlab.gitlab-workflow = buildVscodeMarketplaceExtension {
|
||||
|
@ -2439,9 +2477,15 @@ let
|
|||
hash = "sha256-IueXiN+077tiecAsVCzgYksWYTs00mZv6XJVMtRJ/PQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ jq moreutils ];
|
||||
nativeBuildInputs = [
|
||||
jq
|
||||
moreutils
|
||||
];
|
||||
|
||||
buildInputs = [ cfn-lint pydot ];
|
||||
buildInputs = [
|
||||
cfn-lint
|
||||
pydot
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
cd "$out/$installPrefix"
|
||||
|
@ -4179,7 +4223,11 @@ let
|
|||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=uiua-lang.uiua-vscode";
|
||||
homepage = "https://github.com/uiua-lang/uiua-vscode";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ tomasajt wackbyte defelo ];
|
||||
maintainers = with lib.maintainers; [
|
||||
tomasajt
|
||||
wackbyte
|
||||
defelo
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -4249,7 +4297,10 @@ let
|
|||
sha256 = "1nlrijjwc35n1xgb5lgnr4yvlgfcxd0vdj93ip8lv2xi8x1ni5f6";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ jq moreutils ];
|
||||
nativeBuildInputs = [
|
||||
jq
|
||||
moreutils
|
||||
];
|
||||
|
||||
buildInputs = [ jdk ];
|
||||
|
||||
|
@ -4693,7 +4744,10 @@ let
|
|||
version = "0.5.4";
|
||||
sha256 = "08dfl5h1k6s542qw5qx2czm1wb37ck9w2vpjz44kp2az352nmksb";
|
||||
};
|
||||
nativeBuildInputs = [ jq moreutils ];
|
||||
nativeBuildInputs = [
|
||||
jq
|
||||
moreutils
|
||||
];
|
||||
postInstall = ''
|
||||
cd "$out/$installPrefix"
|
||||
jq '.contributes.configuration.properties.protoc.properties.path.default = "${protobuf}/bin/protoc"' package.json | sponge package.json
|
||||
|
|
|
@ -46,13 +46,13 @@ let
|
|||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "cemu";
|
||||
version = "2.0-74";
|
||||
version = "2.0-78";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cemu-project";
|
||||
repo = "Cemu";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-taV2HEKRUQ7k5BpgA3nwVzX8qkTN02O9kqswjdCHod0=";
|
||||
hash = "sha256-ivdqO44+8sDgOshUDFc+4eTgzcEDSiPPIawyktYpob4=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
{ lib, stdenv, fetchurl }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mednafen-server";
|
||||
version = "0.5.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://mednafen.github.io/releases/files/mednafen-server-${version}.tar.xz";
|
||||
sha256 = "0xm7dj5nwnrsv69r72rcnlw03jm0l8rmrg3s05gjfvxyqmlb36dq";
|
||||
};
|
||||
|
||||
postInstall = "install -m 644 -Dt $out/share/mednafen-server standard.conf";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Netplay server for Mednafen";
|
||||
mainProgram = "mednafen-server";
|
||||
homepage = "https://mednafen.github.io/";
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ AndersonTorres ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
, pkg-config
|
||||
, mednafen
|
||||
, gtk3
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mednaffe";
|
||||
version = "0.9.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AmatCoder";
|
||||
repo = "mednaffe";
|
||||
rev = version;
|
||||
sha256 = "sha256-zvSAt6CMcgdoPpTTA5sPlQaWUw9LUMsR2Xg9jM2UaWY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkg-config wrapGAppsHook ];
|
||||
|
||||
buildInputs = [ gtk3 mednafen ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix PATH ':' "${mednafen}/bin"
|
||||
)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "GTK-based frontend for mednafen emulator";
|
||||
mainProgram = "mednaffe";
|
||||
homepage = "https://github.com/AmatCoder/mednaffe";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ sheenobu yana AndersonTorres ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
|
@ -77,14 +77,14 @@ let
|
|||
urllib3
|
||||
];
|
||||
in mkDerivation rec {
|
||||
version = "3.34.5";
|
||||
version = "3.34.6";
|
||||
pname = "qgis-ltr-unwrapped";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "qgis";
|
||||
repo = "QGIS";
|
||||
rev = "final-${lib.replaceStrings [ "." ] [ "_" ] version}";
|
||||
hash = "sha256-TRSS1YclGUfBjNz+Lo8U8YlN4kdJ9JLcwd7qpgwRbG0=";
|
||||
hash = "sha256-eWd8oIINWVN5Dt6s4bc1RtQbytFd0foPgIcd/N2hsMw=";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
|
|
|
@ -78,14 +78,14 @@ let
|
|||
urllib3
|
||||
];
|
||||
in mkDerivation rec {
|
||||
version = "3.36.1";
|
||||
version = "3.36.2";
|
||||
pname = "qgis-unwrapped";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "qgis";
|
||||
repo = "QGIS";
|
||||
rev = "final-${lib.replaceStrings [ "." ] [ "_" ] version}";
|
||||
hash = "sha256-/0wVPcQoliJFgY8Kn506gUHfY+kDTdLgzbp/0KLSAkI=";
|
||||
hash = "sha256-/8mpzl/6UpjrMVjae2nqpS2DBRCq86rE+B3INzoRz8g=";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
|
|
|
@ -15,21 +15,27 @@
|
|||
, qhull
|
||||
, cmake
|
||||
, cgal
|
||||
, boost179
|
||||
, boost
|
||||
, mpfr
|
||||
, xercesc
|
||||
, tbb
|
||||
, embree
|
||||
, vcg
|
||||
, libigl
|
||||
, corto
|
||||
, openctm
|
||||
, structuresynth
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "meshlab";
|
||||
version = "2022.02";
|
||||
version = "2023.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cnr-isti-vclab";
|
||||
repo = "meshlab";
|
||||
rev = "MeshLab-${version}";
|
||||
sha256 = "sha256-jcc3PfsiIeYyipteZgzd0NwZgFFgR/mMBiaInzhOcDY=";
|
||||
fetchSubmodules = true; # for vcglib
|
||||
sha256 = "sha256-AdUAWS741RQclYaSE3Tz1/I0YSinNAnfSaqef+Tib8Y=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -46,38 +52,38 @@ mkDerivation rec {
|
|||
levmar
|
||||
qhull
|
||||
cgal
|
||||
boost179
|
||||
boost
|
||||
mpfr
|
||||
xercesc
|
||||
tbb
|
||||
embree
|
||||
vcg
|
||||
libigl
|
||||
corto
|
||||
openctm
|
||||
structuresynth
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
preConfigure = ''
|
||||
substituteAll ${./meshlab.desktop} scripts/Linux/resources/meshlab.desktop
|
||||
cmakeDir=$PWD/src
|
||||
mkdir ../build
|
||||
cd ../build
|
||||
substituteAll ${./meshlab.desktop} resources/linux/meshlab.desktop
|
||||
substituteInPlace src/external/libigl.cmake \
|
||||
--replace-fail '$'{MESHLAB_EXTERNAL_DOWNLOAD_DIR}/libigl-2.4.0 ${libigl}
|
||||
substituteInPlace src/external/nexus.cmake \
|
||||
--replace-fail '$'{NEXUS_DIR}/src/corto ${corto.src}
|
||||
substituteInPlace src/external/levmar.cmake \
|
||||
--replace-fail '$'{LEVMAR_LINK} ${levmar.src} \
|
||||
--replace-warn "MD5 ''${LEVMAR_MD5}" ""
|
||||
substituteInPlace src/external/ssynth.cmake \
|
||||
--replace-fail '$'{SSYNTH_LINK} ${structuresynth.src} \
|
||||
--replace-warn "MD5 ''${SSYNTH_MD5}" ""
|
||||
substituteInPlace src/common_gui/CMakeLists.txt \
|
||||
--replace-warn "MESHLAB_LIB_INSTALL_DIR" "CMAKE_INSTALL_LIBDIR"
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DALLOW_BUNDLED_EIGEN=OFF"
|
||||
"-DALLOW_BUNDLED_GLEW=OFF"
|
||||
"-DALLOW_BUNDLED_LIB3DS=OFF"
|
||||
"-DALLOW_BUNDLED_MUPARSER=OFF"
|
||||
"-DALLOW_BUNDLED_QHULL=OFF"
|
||||
# disable when available in nixpkgs
|
||||
"-DALLOW_BUNDLED_OPENCTM=ON"
|
||||
"-DALLOW_BUNDLED_SSYNTH=ON"
|
||||
"-DALLOW_BUNDLED_BOOST=OFF"
|
||||
# some plugins are disabled unless these are on
|
||||
"-DALLOW_BUNDLED_NEWUOA=ON"
|
||||
"-DALLOW_BUNDLED_LEVMAR=ON"
|
||||
];
|
||||
|
||||
CXXFLAGS = [
|
||||
# GCC 13: error: 'int16_t' has not been declared in 'std'
|
||||
"-include cstdint"
|
||||
"-DVCGDIR=${vcg.src}"
|
||||
];
|
||||
|
||||
postFixup = ''
|
||||
|
|
|
@ -0,0 +1,107 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, libGLU
|
||||
, qtbase
|
||||
, qtscript
|
||||
, qtxmlpatterns
|
||||
, lib3ds
|
||||
, bzip2
|
||||
, muparser
|
||||
, eigen
|
||||
, glew
|
||||
, gmp
|
||||
, levmar
|
||||
, qhull
|
||||
, cmake
|
||||
, cgal
|
||||
, boost
|
||||
, mpfr
|
||||
, xercesc
|
||||
, tbb
|
||||
, embree
|
||||
, vcg
|
||||
, libigl
|
||||
, corto
|
||||
, openctm
|
||||
, structuresynth
|
||||
, wrapQtAppsHook
|
||||
, python3Packages
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "pymeshlab";
|
||||
version = "2023.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cnr-isti-vclab";
|
||||
repo = "pymeshlab";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-IOlRdXoUPOJt67g3HqsLchV5aL+JUEks2y1Sy+wpwsg=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
libGLU
|
||||
qtbase
|
||||
qtscript
|
||||
qtxmlpatterns
|
||||
lib3ds
|
||||
bzip2
|
||||
muparser
|
||||
eigen
|
||||
glew
|
||||
gmp
|
||||
levmar
|
||||
qhull
|
||||
cgal
|
||||
boost
|
||||
mpfr
|
||||
xercesc
|
||||
tbb
|
||||
embree
|
||||
vcg
|
||||
libigl
|
||||
corto
|
||||
structuresynth
|
||||
openctm
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
wrapQtAppsHook
|
||||
python3Packages.pybind11
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
python3Packages.numpy
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
substituteInPlace src/meshlab/src/external/libigl.cmake \
|
||||
--replace-fail '$'{MESHLAB_EXTERNAL_DOWNLOAD_DIR}/libigl-2.4.0 ${libigl}
|
||||
substituteInPlace src/meshlab/src/external/nexus.cmake \
|
||||
--replace-fail '$'{NEXUS_DIR}/src/corto ${corto.src}
|
||||
substituteInPlace src/meshlab/src/external/levmar.cmake \
|
||||
--replace-fail '$'{LEVMAR_LINK} ${levmar.src} \
|
||||
--replace-warn "MD5 ''${LEVMAR_MD5}" ""
|
||||
substituteInPlace src/meshlab/src/external/ssynth.cmake \
|
||||
--replace-fail '$'{SSYNTH_LINK} ${structuresynth.src} \
|
||||
--replace-warn "MD5 ''${SSYNTH_MD5}" ""
|
||||
export cmakeFlags="cmakeFlags
|
||||
-DCMAKE_INSTALL_PREFIX=$out/${python3Packages.python.sitePackages}/pymeshlab
|
||||
"
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DVCGDIR=${vcg.src}"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "The open source mesh processing python library";
|
||||
homepage = "https://github.com/cnr-isti-vclab/PyMeshLab";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ nim65s ];
|
||||
platforms = with lib.platforms; linux;
|
||||
};
|
||||
})
|
|
@ -10,15 +10,15 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "brscan5";
|
||||
version = "1.3.0-0";
|
||||
version = "1.3.1-0";
|
||||
src = {
|
||||
"i686-linux" = fetchurl {
|
||||
url = "https://download.brother.com/welcome/dlf104034/${pname}-${version}.i386.deb";
|
||||
sha256 = "sha256-LpbPUo8iD5CcwUoIOa1UYHQXMrZZJ7PjZpcuyXhXjzk=";
|
||||
hash = "sha256-BgS64vwsKESJBDz9H2MDwcGiresROSNFP1b+7+zlE5c=";
|
||||
};
|
||||
"x86_64-linux" = fetchurl {
|
||||
url = "https://download.brother.com/welcome/dlf104033/${pname}-${version}.amd64.deb";
|
||||
sha256 = "sha256-ntVe/e6/cdz3+LSpGilMFZecxfv74pd7ksh85SzEdKc=";
|
||||
hash = "sha256-0UMbXMBlyiZI90WG5FWEP2mIZEBsxXd11dtgtyuSDnY=";
|
||||
};
|
||||
}."${system}" or (throw "Unsupported system: ${system}");
|
||||
|
||||
|
@ -33,9 +33,12 @@ stdenv.mkDerivation rec {
|
|||
|
||||
postPatch =
|
||||
let
|
||||
# Download .deb for both amd64 and i386, then unpack like unpackPhase
|
||||
# to get the offset, run:
|
||||
# strings -n 10 --radix=d opt/brother/scanner/brscan5/libsane-brother5.so.1.0.7 | grep "/opt/brother/scanner/brscan5/models"
|
||||
patchOffsetBytes =
|
||||
if system == "x86_64-linux" then 86528
|
||||
else if system == "i686-linux" then 79140
|
||||
if system == "x86_64-linux" then 86592
|
||||
else if system == "i686-linux" then 79236
|
||||
else throw "Unsupported system: ${system}";
|
||||
in
|
||||
''
|
||||
|
|
|
@ -12,12 +12,12 @@ let
|
|||
if extension == "zip" then fetchzip args else fetchurl args;
|
||||
|
||||
pname = "1password-cli";
|
||||
version = "2.26.1";
|
||||
version = "2.27.0";
|
||||
sources = rec {
|
||||
aarch64-linux = fetch "linux_arm64" "sha256-dV3VDPjiA9xKbL4tmDJ6T4B8NmPHBB2aKj3HWNGifr4=" "zip";
|
||||
i686-linux = fetch "linux_386" "sha256-61zjjg2+UU3cMP+kcn1zXopTdRR2v/Wom3Vtz0/KnUQ=" "zip";
|
||||
x86_64-linux = fetch "linux_amd64" "sha256-2Cq0tbdFpvFYSGRmdPclCw4jqfIKPoixv/gZKkBqgH0=" "zip";
|
||||
aarch64-darwin = fetch "apple_universal" "sha256-NOCRGKF32tAh5HwwYgm+f3el3l1djqvIHNdpR5NsoM8=" "pkg";
|
||||
aarch64-linux = fetch "linux_arm64" "sha256-yutS8xSTRABt12+mEyU99R4eCHvuAwWdO40SZlUrtdc=" "zip";
|
||||
i686-linux = fetch "linux_386" "sha256-juP//g9quhd7GRq5TNm3qAq+rOegGJ9u9F+fmGbfmbw=" "zip";
|
||||
x86_64-linux = fetch "linux_amd64" "sha256-cFQ3lsHBV9fDoNK5ujTummIXA4591meP43KbiyWcbQk=" "zip";
|
||||
aarch64-darwin = fetch "apple_universal" "sha256-fUwiEJxn4JdsViBQU2Odrw+Focp0ngH/RmfmW2Uu0Bo=" "pkg";
|
||||
x86_64-darwin = aarch64-darwin;
|
||||
};
|
||||
platforms = builtins.attrNames sources;
|
||||
|
|
|
@ -75,7 +75,8 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
'';
|
||||
homepage = "https://albertlauncher.github.io";
|
||||
changelog = "https://github.com/albertlauncher/albert/blob/${finalAttrs.src.rev}/CHANGELOG.md";
|
||||
license = licenses.gpl3Plus;
|
||||
# See: https://github.com/NixOS/nixpkgs/issues/279226
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ ericsagnes synthetica ];
|
||||
mainProgram = "albert";
|
||||
platforms = platforms.linux;
|
||||
|
|
|
@ -99,11 +99,11 @@ in
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "blender";
|
||||
version = "4.1.0";
|
||||
version = "4.1.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.blender.org/source/${finalAttrs.pname}-${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-3AAtguPDQMk4VcZoRzDQGAG2aaKbHMa3XuuZC6aecj8=";
|
||||
hash = "sha256-T7s69k0/hN9ccQN0hFQibBiFwawu1Tc9DOoegOgsCEg=";
|
||||
};
|
||||
|
||||
patches = [ ./draco.patch ] ++ lib.optional stdenv.isDarwin ./darwin.patch;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, buildPythonApplication, fetchPypi, requests, yt-dlp, pytestCheckHook }:
|
||||
{ lib, buildPythonApplication, fetchPypi, fetchpatch, requests, yt-dlp, pytestCheckHook }:
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "gallery-dl";
|
||||
|
@ -11,6 +11,14 @@ buildPythonApplication rec {
|
|||
sha256 = "sha256-PgbfppyJCpgFupBQng8MUPihbDmit4C+xWnSzCJyu5k=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# catch general Exceptions. Remove with the next release.
|
||||
(fetchpatch {
|
||||
url = "https://github.com/mikf/gallery-dl/commit/5227bb6b1d62ecef5b281592b0d001e7f9c101e3.patch";
|
||||
hash = "sha256-rVsd764siP/07XBPVDnpxMm/4kLiH3fp9+NtpHHH23U=";
|
||||
})
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
requests
|
||||
yt-dlp
|
||||
|
|
|
@ -60,8 +60,7 @@ in {
|
|||
makeWrapper ${electron_27}/bin/electron $out/bin/${pname} \
|
||||
--set "LOCAL_GIT_DIRECTORY" ${git} \
|
||||
--add-flags $out/share/${pname}/resources/app \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
|
||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc.lib ]}"
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
|
|
@ -96,7 +96,7 @@ buildPythonApplication rec {
|
|||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://wiki.gnome.org/Projects/Orca";
|
||||
homepage = "https://orca.gnome.org/";
|
||||
description = "Screen reader";
|
||||
mainProgram = "orca";
|
||||
longDescription = ''
|
||||
|
|
|
@ -21,12 +21,15 @@ buildPythonPackage rec {
|
|||
"typer"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
build-system = [
|
||||
poetry-core
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pythonRelaxDepsHook
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dependencies = [
|
||||
colorama
|
||||
openai
|
||||
pyperclip
|
||||
|
@ -44,9 +47,9 @@ buildPythonPackage rec {
|
|||
|
||||
meta = with lib; {
|
||||
description = "Describe your shell commands in natural language";
|
||||
mainProgram = "shell-genie";
|
||||
homepage = "https://github.com/dylanjcastillo/shell-genie";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ onny ];
|
||||
mainProgram = "shell-genie";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "ttyper";
|
||||
version = "1.4.1";
|
||||
version = "1.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "max-niederman";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-IvAx65b2rGsMdDUhRxTx8cyqnG7oxC+MseCFIJil1e0=";
|
||||
hash = "sha256-L6xdJ659ZWKNg9CGQs+5TQIKoIAZ5KHdFSk7NCp9a2Q=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-o3J2bEAV5NnWKFadJdSGTqUS8K2qpBKPQz6xAbfLtg4=";
|
||||
cargoHash = "sha256-iOeyn4oXk6y/NqZeBwkStBjt3hVVw4s2L5Lm58tq1BY=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Terminal-based typing test";
|
||||
|
|
|
@ -75,11 +75,11 @@ This would allow someone to upgrade between those NixOS releases in a supported
|
|||
|
||||
## K3s upkeep for nixpkgs maintainers
|
||||
|
||||
* A `nixos-stable` release triggers the need of re-setting K3s versions in `nixos-unstable` branch to a single K3s version. After every `nixos-stable` release, K3s maintainers should remove all K3s versions in `nixos-unstable` branch but the latest. While `nixos-stable` keeps the multiple K3s versions necessary for a smooth upgrade to `nixos-unstable`.
|
||||
* After every nixos release, K3s maintainers should remove from `nixos-unstable` all K3s versions that exist in `nixos-stable` except the latest version (to allow decoupling system upgrade from k3s upgrade).
|
||||
|
||||
* Whenever adding a new major/minor K3s version to nixpkgs:
|
||||
- update `k3s` alias to the latest version.
|
||||
- add a NixOS release note scheduling the removal of all K3s packages but the latest
|
||||
- add a NixOS release note scheduling the removal of deprecated K3s packages
|
||||
- include migration information from both Kubernetes and K3s projects
|
||||
|
||||
* For version patch upgrades, use the K3s update script.
|
||||
|
@ -111,4 +111,4 @@ This would allow someone to upgrade between those NixOS releases in a supported
|
|||
|
||||
- Read the nix build logs to check for anything unusual. (Obvious but underrated.)
|
||||
|
||||
* Thank you for reading the documentation and your continued contribution.
|
||||
* Thanks for reading the documentation and your continued contribution.
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "kubefirst";
|
||||
version = "2.4.3";
|
||||
version = "2.4.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kubefirst";
|
||||
repo = "kubefirst";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-wxIXXCB7+s3RfDjSxwlp0BBTZMb/9GFZ7cYm7L471U8=";
|
||||
hash = "sha256-CkssgMr/4VGNQHyvaPnXBOf6HdExnhB7MjpJ3yQ9kfI=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-ZcZl4knlyKAwTsiyZvlkN5e2ox30B5aNzutI/2UEE9U=";
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "kubelogin";
|
||||
version = "0.1.1";
|
||||
version = "0.1.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Azure";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-JBP2lE1/46VB/oKgDlNTQ8RFpgIlQE0If5vND7dzo7A=";
|
||||
sha256 = "sha256-mQSQrcLzEZqNpXNuZFCVk3FRcfkrtvN19VhwqyrmwIU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-EwL/aiq2jyojM1r7wNZkA07TswHy6MLUUPQJFnaDG4A=";
|
||||
vendorHash = "sha256-Xh4htBknBW59xdJVYw7A7BT2GB5WW8SnV05is7dWAS8=";
|
||||
|
||||
ldflags = [
|
||||
"-X main.version=${version}"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
(callPackage ./generic.nix { }) {
|
||||
channel = "edge";
|
||||
version = "24.4.2";
|
||||
sha256 = "0apwhbcnghy7b9kwalbhcgvgcrwv6s55gzlgax55qaa5lxm6r6yz";
|
||||
version = "24.4.4";
|
||||
sha256 = "07p4cgl4myv7kv9pxvxrvsqnl3vkd9ay5hngx5g6xds2sc8va306";
|
||||
vendorHash = "sha256-bLTummNoDfGMYvtfSLxICgCFZEymPJcRWkQyWOSzKR8=";
|
||||
}
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
, AppKit
|
||||
, CoreServices
|
||||
, desktopToDarwinBundle
|
||||
, libnotify
|
||||
, useKeytar ? true
|
||||
}:
|
||||
|
||||
|
@ -79,11 +78,6 @@ stdenv.mkDerivation (finalAttrs: builtins.removeAttrs pinData [ "hashes" ] // {
|
|||
'';
|
||||
|
||||
installPhase =
|
||||
let
|
||||
libPath = lib.makeLibraryPath [
|
||||
libnotify
|
||||
];
|
||||
in
|
||||
''
|
||||
runHook preInstall
|
||||
|
||||
|
@ -111,7 +105,6 @@ stdenv.mkDerivation (finalAttrs: builtins.removeAttrs pinData [ "hashes" ] // {
|
|||
# LD_PRELOAD workaround for sqlcipher not found: https://github.com/matrix-org/seshat/issues/102
|
||||
makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \
|
||||
--set LD_PRELOAD ${sqlcipher}/lib/libsqlcipher.so \
|
||||
--set LD_LIBRARY_PATH "${libPath}" \
|
||||
--add-flags "$out/share/element/electron" \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
, libXtst
|
||||
, zlib
|
||||
, electron
|
||||
, pipewire
|
||||
}:
|
||||
|
||||
buildNpmPackage rec {
|
||||
|
@ -72,7 +71,6 @@ buildNpmPackage rec {
|
|||
|
||||
makeWrapper ${lib.getExe electron} $out/bin/jitsi-meet-electron \
|
||||
--add-flags $out/share/jitsi-meet-electron/resources/app.asar \
|
||||
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ pipewire ]} \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
|
||||
--inherit-argv0
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
callPackage ./generic.nix { } rec {
|
||||
pname = "signal-desktop-beta";
|
||||
dir = "Signal Beta";
|
||||
version = "7.4.0-beta.2";
|
||||
version = "7.6.0-beta.3";
|
||||
url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop-beta/signal-desktop-beta_${version}_amd64.deb";
|
||||
hash = "sha256-oBkZ9BaKbmosTkC/OZFjt6PmU/9XqclyzbllwYPj3Q4=";
|
||||
hash = "sha256-BbXogNB2BxFQTpvHw0JVOaCV2PQHEQbafSavVcBd/Fg=";
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
callPackage ./generic.nix { } rec {
|
||||
pname = "signal-desktop";
|
||||
dir = "Signal";
|
||||
version = "7.4.0";
|
||||
version = "7.5.1";
|
||||
url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||
hash = "sha256-9a8Y8ncatynKspC/q0YxUWJj+nENr1ArwCZA9Ng8Mxk=";
|
||||
hash = "sha256-afKR+P2YPkv4OMIr8LzWeAMZWr0zaJ1R0BQD87gQuSk=";
|
||||
}
|
||||
|
|
|
@ -9,9 +9,6 @@
|
|||
, fetchYarnDeps
|
||||
, fixup-yarn-lock
|
||||
, electron
|
||||
, libnotify
|
||||
, libpulseaudio
|
||||
, pipewire
|
||||
, alsa-utils
|
||||
, which
|
||||
, testers
|
||||
|
@ -72,11 +69,10 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
done
|
||||
popd
|
||||
|
||||
# Linux needs 'aplay' for notification sounds, 'libpulse' for meeting sound, 'libpipewire' for screen sharing and 'libnotify' for notifications
|
||||
# Linux needs 'aplay' for notification sounds
|
||||
makeWrapper '${electron}/bin/electron' "$out/bin/teams-for-linux" \
|
||||
${lib.optionalString stdenv.isLinux ''
|
||||
--prefix PATH : ${lib.makeBinPath [ alsa-utils which ]} \
|
||||
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libpulseaudio pipewire libnotify ]} \
|
||||
''} \
|
||||
--add-flags "$out/share/teams-for-linux/app.asar" \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
|
||||
|
|
|
@ -3,9 +3,6 @@
|
|||
, fetchFromGitHub
|
||||
, copyDesktopItems
|
||||
, python3
|
||||
, pipewire
|
||||
, libpulseaudio
|
||||
, libnotify
|
||||
, xdg-utils
|
||||
, electron_29
|
||||
, makeDesktopItem
|
||||
|
@ -42,11 +39,6 @@ buildNpmPackage rec {
|
|||
# override installPhase so we can copy the only folders that matter
|
||||
installPhase =
|
||||
let
|
||||
libPath = lib.makeLibraryPath [
|
||||
libpulseaudio
|
||||
pipewire
|
||||
libnotify
|
||||
];
|
||||
binPath = lib.makeBinPath [ xdg-utils ];
|
||||
in
|
||||
''
|
||||
|
@ -62,7 +54,6 @@ buildNpmPackage rec {
|
|||
|
||||
# Add xdg-utils to path via suffix, per PR #181171
|
||||
makeWrapper '${lib.getExe electron_29}' $out/bin/webcord \
|
||||
--prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/webcord \
|
||||
--suffix PATH : "${binPath}" \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
|
||||
--add-flags $out/lib/node_modules/webcord/
|
||||
|
|
|
@ -26,19 +26,19 @@ let
|
|||
pname = "wire-desktop";
|
||||
|
||||
version = let
|
||||
x86_64-darwin = "3.32.4589";
|
||||
x86_64-darwin = "3.35.4861";
|
||||
in {
|
||||
inherit x86_64-darwin;
|
||||
aarch64-darwin = x86_64-darwin;
|
||||
x86_64-linux = "3.32.3079";
|
||||
x86_64-linux = "3.35.3348";
|
||||
}.${system} or throwSystem;
|
||||
|
||||
hash = let
|
||||
x86_64-darwin = "sha256-PDAZCnkgzlausdtwycK+PHfp+zmL33VnX6RzCsgBTZ4=";
|
||||
x86_64-darwin = "sha256-QPxslMEz1jOH2LceFOdCyVDtpya1SfJ8GWMIAIhie4U=";
|
||||
in {
|
||||
inherit x86_64-darwin;
|
||||
aarch64-darwin = x86_64-darwin;
|
||||
x86_64-linux = "sha256-+4aRis141ctI50BtBwipoVtPoMGRs82ENqZ+y2ZlL58=";
|
||||
x86_64-linux = "sha256-KtDUuAzD53mFJ0+yywp0Q2/hx9MGsOhFjRLWsZAd+h0=";
|
||||
}.${system} or throwSystem;
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -10,14 +10,14 @@
|
|||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "maestral-qt";
|
||||
version = "1.8.0";
|
||||
version = "1.9.2";
|
||||
disabled = python3.pythonOlder "3.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SamSchott";
|
||||
repo = "maestral-qt";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-Ys7XrvV4qzq4Q9llua2WgU013Ui0+x+uMwLNIv6xxCw=";
|
||||
hash = "sha256-dgiVSwCTNDncbPJ+f0grjtq822TvtG0PhC9gDOKhwRI=";
|
||||
};
|
||||
|
||||
format = "pyproject";
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
let
|
||||
pname = "synology-drive-client";
|
||||
baseUrl = "https://global.synologydownload.com/download/Utility/SynologyDriveClient";
|
||||
version = "3.4.0-15724";
|
||||
version = "3.5.0-16084";
|
||||
buildNumber = with lib; last (splitString "-" version);
|
||||
meta = with lib; {
|
||||
description = "Desktop application to synchronize files and folders between the computer and the Synology Drive server.";
|
||||
|
@ -10,7 +10,7 @@ let
|
|||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ jcouyang MoritzBoehme ];
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" ];
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
||||
mainProgram = "synology-drive";
|
||||
};
|
||||
passthru.updateScript = writeScript "update-synology-drive-client" ''
|
||||
|
@ -30,7 +30,7 @@ let
|
|||
|
||||
src = fetchurl {
|
||||
url = "${baseUrl}/${version}/Ubuntu/Installer/synology-drive-client-${buildNumber}.x86_64.deb";
|
||||
sha256 = "sha256-Zf6JMghXy8ODbR4MhVSPmD4QDu003MTc7YNfbiRVRoY=";
|
||||
sha256 = "sha256-Spl6DC+wf+JaXjwH2ecraySo1VtA+EiI3/TWw9UOSA8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook dpkg ];
|
||||
|
@ -60,7 +60,7 @@ let
|
|||
|
||||
src = fetchurl {
|
||||
url = "${baseUrl}/${version}/Mac/Installer/synology-drive-client-${buildNumber}.dmg";
|
||||
sha256 = "sha256-65mZeRYHGl+n9TeTx7bxRrGPjcZiV9UlyfcCZ3GwOhE=";
|
||||
sha256 = "sha256-NDYxUhWtAVUtpCf1WemqShZCFHGgLGwrkX6HldxOlH0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cpio xar undmg ];
|
||||
|
|
|
@ -38,8 +38,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
postFixup = ''
|
||||
makeWrapper ${electron}/bin/electron $out/bin/${pname} \
|
||||
--add-flags $out/share/${pname}/resources/app.asar \
|
||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc ]}"
|
||||
--add-flags $out/share/${pname}/resources/app.asar
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -24,13 +24,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "stellarium";
|
||||
version = "23.4";
|
||||
version = "24.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Stellarium";
|
||||
repo = "stellarium";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-rDqDs6sFaZQbqJcCRhY5w8sFM2mYHHvw0Ud2Niimg4Y=";
|
||||
hash = "sha256-t3eFmiG9X2cmnjc/PQwZ2bw1SCHaNRA83wiT1cPbKJc=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
|
|||
owner = "nest";
|
||||
repo = "nest-simulator";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-KoeehD0HNG6Uafv6ICf8d4gjggJ7+/8RBJCpttf7AGk=";
|
||||
hash = "sha256-EwhpsfRmBLJnPiH6hXQXgG9jSNoC2oqq5lZ6t038VpI=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -39,14 +39,14 @@ let
|
|||
in
|
||||
buildGoModule rec {
|
||||
pname = "forgejo";
|
||||
version = "1.21.11-0";
|
||||
version = "1.21.11-1";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "codeberg.org";
|
||||
owner = "forgejo";
|
||||
repo = "forgejo";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Cp+dN4nTIboin42NJR/YUkVXbBC7uufH8EE7NgIVFzY=";
|
||||
hash = "sha256-7oYsoZpZcNIUw3iXSi1Q5So2yYgKnT5U7GHQ4NVqVdc=";
|
||||
# Forgejo has multiple different version strings that need to be provided
|
||||
# via ldflags. main.ForgejoVersion for example is a combination of a
|
||||
# hardcoded gitea compatibility version string (in the Makefile) and
|
||||
|
|
|
@ -18,11 +18,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "subtitleedit";
|
||||
version = "4.0.4";
|
||||
version = "4.0.5";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/SubtitleEdit/subtitleedit/releases/download/${version}/SE${lib.replaceStrings [ "." ] [ "" ] version}.zip";
|
||||
hash = "sha256-9z9igHU/23KHOd1TM3Wd7y5kl19cg3D9AQ2MjH5av20=";
|
||||
hash = "sha256-qYDLUqC5adzpmlQIq/EKmrkN8D8/EHZmP8QUGAaYf+s=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,17 +1,24 @@
|
|||
{ lib, buildPythonApplication, fetchFromGitHub, python-dotenv, pyyaml }:
|
||||
{ lib, buildPythonApplication, fetchFromGitHub, python-dotenv, pyyaml, setuptools, pipBuildHook, pypaBuildHook }:
|
||||
|
||||
buildPythonApplication rec {
|
||||
version = "1.0.6";
|
||||
version = "1.1.0";
|
||||
pname = "podman-compose";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
repo = "podman-compose";
|
||||
owner = "containers";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-TsNM5xORqwWge+UCijKptwbAcIz1uZFN9BuIOl28vIU=";
|
||||
sha256 = "sha256-uNgzdLrnDIABtt0L2pvsil14esRzl0XcWohgf7Oksr8=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ pyyaml python-dotenv ];
|
||||
|
||||
build-system = [
|
||||
setuptools
|
||||
];
|
||||
|
||||
dependencies = [ python-dotenv pyyaml ];
|
||||
propagatedBuildInputs = [ pypaBuildHook ];
|
||||
|
||||
meta = {
|
||||
description = "An implementation of docker-compose with podman backend";
|
||||
|
|
|
@ -74,13 +74,13 @@ buildGoModule rec {
|
|||
};
|
||||
|
||||
patches = [
|
||||
# we intentionally don't build and install the helper so we shouldn't display messages to users about it
|
||||
./rm-podman-mac-helper-msg.patch
|
||||
] ++ lib.optionals stdenv.isLinux [
|
||||
(substituteAll {
|
||||
src = ./hardcode-paths.patch;
|
||||
inherit crun runc gvisor youki conmon;
|
||||
})
|
||||
|
||||
# we intentionally don't build and install the helper so we shouldn't display messages to users about it
|
||||
./rm-podman-mac-helper-msg.patch
|
||||
];
|
||||
|
||||
vendorHash = null;
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
telegram-desktop.overrideAttrs (old: rec {
|
||||
pname = "64gram";
|
||||
version = "1.1.17";
|
||||
version = "1.1.18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "TDesktop-x64";
|
||||
|
@ -15,7 +15,7 @@ telegram-desktop.overrideAttrs (old: rec {
|
|||
rev = "v${version}";
|
||||
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-QWHC1NAAKpH9zU7cplCW2rNYckY87bpU7MEZ1ytSi58=";
|
||||
hash = "sha256-sURnKOcg+pwU1Nw6yqtoPaRD1kpg93/VNh7UYi2IIwU=";
|
||||
};
|
||||
|
||||
passthru.updateScript = nix-update-script {};
|
||||
|
|
|
@ -3,15 +3,15 @@
|
|||
, buildGoModule
|
||||
}: buildGoModule rec {
|
||||
pname = "betula";
|
||||
version = "1.1.0";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~bouncepaw";
|
||||
repo = "betula";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-MH6YeWG94YVBgx5Es3oMJ9A/hAPPBXpAcIdCJV3HX78=";
|
||||
hash = "sha256-oxwOGpf305VDlY3Mwl0dRJRRhe0yolaMMlpNspZdKQk=";
|
||||
};
|
||||
vendorHash = "sha256-wiMIhoSO7nignNWY16OpDYZCguRbcEwwO/HggKSC5jM=";
|
||||
vendorHash = "sha256-DjL2h6YKCJOWgmR/Gb0Eja38yJ4DymqW/SzmPG3+q9w=";
|
||||
|
||||
CGO_ENABLED = 1;
|
||||
# These tests use internet, so are failing in Nix build.
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
jre,
|
||||
wrapGAppsHook,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "biglybt";
|
||||
version = "3.5.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/BiglySoftware/BiglyBT/releases/download/v${version}/GitHub_BiglyBT_unix.tar.gz";
|
||||
hash = "sha256-ToTCIjunj/ABi3wVSmeddLGBdQlv+CfK2jGRjixJd0w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook ];
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
|
||||
sed -e 's/AUTOUPDATE_SCRIPT=1/AUTOUPDATE_SCRIPT=0/g' \
|
||||
-i biglybt || die
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -d $out/{share/{biglybt,applications,icons/hicolor/scalable/apps},bin}
|
||||
|
||||
cp -r ./* $out/share/biglybt/
|
||||
|
||||
ln -s $out/share/biglybt/biglybt.desktop $out/share/applications/
|
||||
|
||||
ln -s $out/share/biglybt/biglybt.svg $out/share/icons/hicolor/scalable/apps/
|
||||
|
||||
wrapProgram $out/share/biglybt/biglybt \
|
||||
--prefix PATH : ${lib.makeBinPath [ jre ]}
|
||||
|
||||
ln -s $out/share/biglybt/biglybt $out/bin/
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"--version-regex"
|
||||
"^(v[0-9.]+)$"
|
||||
];
|
||||
};
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/BiglySoftware/BiglyBT/releases/tag/v${version}";
|
||||
description = "A BitTorrent client based on the Azureus that supports I2P darknet for privacy";
|
||||
downloadPage = "https://github.com/BiglySoftware/BiglyBT";
|
||||
homepage = "https://www.biglybt.com/";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
platforms = lib.platforms.unix;
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
mainProgram = "biglybt";
|
||||
maintainers = with lib.maintainers; [ raspher ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "corto";
|
||||
version = "0-unstable-2024-04-05";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cnr-isti-vclab";
|
||||
repo = "corto";
|
||||
rev = "d880519c490c88a39d12c31a914b6a687a7019c3";
|
||||
hash = "sha256-0OUijrf+0ZNv3oYko2r8Kp9zgtg8b9RPL7DXHf15Ryc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Mesh compression library, designed for rendering and speed";
|
||||
homepage = "https://github.com/cnr-isti-vclab/corto";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ nim65s ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
{ lib
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
, installShellFiles
|
||||
, stdenv
|
||||
, pkg-config
|
||||
, openssl
|
||||
, pandoc
|
||||
, darwin
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "dogedns";
|
||||
version = "0.2.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Dj-Codeman";
|
||||
repo = "doge";
|
||||
rev = "6dd0383f31c096bfe2b6918c36b6e2c48414e753";
|
||||
hash = "sha256-cvqDSTHFf/le2jItGTSkAGURj64WRvOmMRI+vFH0/50=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-v9AuX7FZfy18yu4P9ovHsL5AQIYhPa8NEsMziEeHCJ8=";
|
||||
|
||||
patches = [
|
||||
# remove date info to make the build reproducible
|
||||
# remove commit hash to avoid dependency on git and the need to keep `.git`
|
||||
./remove-date-info.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ installShellFiles pandoc ]
|
||||
++ lib.optionals stdenv.isLinux [ pkg-config ];
|
||||
buildInputs = lib.optionals stdenv.isLinux [ openssl ]
|
||||
++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
|
||||
|
||||
postInstall = ''
|
||||
installShellCompletion completions/doge.{bash,fish,zsh}
|
||||
installManPage ./target/man/*.1
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Reviving A command-line DNS client";
|
||||
homepage = "https://github.com/Dj-Codeman/doge";
|
||||
license = licenses.eupl12;
|
||||
mainProgram = "doge";
|
||||
maintainers = with maintainers; [ aktaboot ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
--- a/build.rs
|
||||
+++ b/build.rs
|
||||
@@ -34,7 +34,7 @@ fn main() -> io::Result<()> {
|
||||
format!("{}\nv{} \\1;31m(beta debug build!)\\0m\n\\1;4;34m{}\\0m", tagline, version_string(), url)
|
||||
}
|
||||
else if is_development_version() {
|
||||
- format!("{}\nv{} [{}] built on {} \\1;31m(beta-release!)\\0m\n\\1;4;34m{}\\0m", tagline, version_string(), git_hash(), build_date(), url)
|
||||
+ format!("{}\nv{} [nixpkgs] \\1;31m(beta-release!)\\0m\n\\1;4;34m{}\\0m", tagline, version_string(), url)
|
||||
}
|
||||
else {
|
||||
format!("{}\nv{}\n\\1;4;34m{}\\0m", tagline, version_string(), url)
|
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
installShellFiles,
|
||||
pandoc,
|
||||
stdenv,
|
||||
nixosTests,
|
||||
# Boolean flags
|
||||
withManpage ? true,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "earlyoom";
|
||||
version = "1.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rfjakob";
|
||||
repo = "earlyoom";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-jgNoYOGor2i3ngDuU3It238n5ky+AppzlRKdkwXb2AI=";
|
||||
};
|
||||
|
||||
outputs = [ "out" ] ++ lib.optionals withManpage [ "man" ];
|
||||
|
||||
patches = [ ./0000-fix-dbus-path.patch ];
|
||||
|
||||
nativeBuildInputs = lib.optionals withManpage [
|
||||
installShellFiles
|
||||
pandoc
|
||||
];
|
||||
|
||||
makeFlags = [
|
||||
"VERSION=${finalAttrs.version}"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -D earlyoom $out/bin/earlyoom
|
||||
'' + lib.optionalString withManpage ''
|
||||
installManPage earlyoom.1
|
||||
'' + ''
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
inherit (nixosTests) earlyoom;
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/rfjakob/earlyoom";
|
||||
description = "Early OOM Daemon for Linux";
|
||||
longDescription = ''
|
||||
earlyoom checks the amount of available memory and free swap up to 10
|
||||
times a second (less often if there is a lot of free memory). By default
|
||||
if both are below 10%, it will kill the largest process (highest
|
||||
oom_score). The percentage value is configurable via command line
|
||||
arguments.
|
||||
'';
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "earlyoom";
|
||||
maintainers = with lib.maintainers; [ AndersonTorres ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
|
@ -6,16 +6,16 @@
|
|||
}:
|
||||
buildGoModule rec {
|
||||
pname = "eigenlayer";
|
||||
version = "0.7.2";
|
||||
version = "0.7.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Layr-Labs";
|
||||
repo = "eigenlayer-cli";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-vGXu6xQUeXLUkmLqJEXaVNXhxXZSmVlnQicBZAfj768=";
|
||||
hash = "sha256-HsDuDe2ANxL+cTJ3mm1enLoKRewZ9Ey/YajpsLO66JA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-9DbyfUKJjzqbZcX7j/df6fdtgZt3RY1kq2H2RK+5Vfk=";
|
||||
vendorHash = "sha256-aclRbQtGg6yQMJtaO1WjtHLXU7cE1HX1ZDckRIEtw6o=";
|
||||
|
||||
ldflags = ["-s" "-w"];
|
||||
subPackages = ["cmd/eigenlayer"];
|
||||
|
|
|
@ -17,16 +17,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "eza";
|
||||
version = "0.18.10";
|
||||
version = "0.18.11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "eza-community";
|
||||
repo = "eza";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-qXyuibsgEF/wv2736r3EMpoXjyDFI3QFjVRsg9cI0u0=";
|
||||
hash = "sha256-jh1YmY3G3oL8HfgojGtrJLvgLT+gyTX0fsv/11UDIJ0=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-9xtJJDP3f4aRPTgnpor0nSp5ehbX7Qt9U3LN9kkDWrI=";
|
||||
cargoHash = "sha256-4ziEG7P7igCkN6UnVqaWXgqfW+XssUP4Rn867ELXYmU=";
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ];
|
||||
buildInputs = [ zlib ]
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
, openssl
|
||||
, pkg-config
|
||||
, protobuf
|
||||
, python3
|
||||
, qrencode
|
||||
, qt6
|
||||
, readline
|
||||
|
@ -34,6 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
python3
|
||||
qt6.wrapQtAppsHook
|
||||
];
|
||||
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, buildNpmPackage
|
||||
, php83
|
||||
, nixosTests
|
||||
, dataDir ? "/var/lib/firefly-iii"
|
||||
}:
|
||||
|
||||
let
|
||||
pname = "firefly-iii";
|
||||
version = "6.1.13";
|
||||
phpPackage = php83;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "firefly-iii";
|
||||
repo = "firefly-iii";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-85zI8uCyyoCflzxDkvba6FWa9B3kh179DJfQ2Um6MGM=";
|
||||
};
|
||||
|
||||
assets = buildNpmPackage {
|
||||
pname = "${pname}-assets";
|
||||
inherit version src;
|
||||
npmDepsHash = "sha256-wuPUE6XuzzgKjpxZVgwh2wGut15M61WSBFG+YIZwOFM=";
|
||||
dontNpmBuild = true;
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
npm run build
|
||||
cp -r ./public $out/
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
in
|
||||
|
||||
phpPackage.buildComposerProject (finalAttrs: {
|
||||
inherit pname src version;
|
||||
|
||||
vendorHash = "sha256-CVGKyyLp5hjjpEulDNEYfljU4OgPBaFcYQQAUf6GeGs=";
|
||||
|
||||
passthru = {
|
||||
inherit phpPackage;
|
||||
tests = nixosTests.firefly-iii;
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
mv $out/share/php/${pname}/* $out/
|
||||
rm -R $out/share $out/storage $out/bootstrap/cache $out/public
|
||||
cp -a ${assets} $out/public
|
||||
ln -s ${dataDir}/storage $out/storage
|
||||
ln -s ${dataDir}/cache $out/bootstrap/cache
|
||||
'';
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/firefly-iii/firefly-iii/releases/tag/v${version}";
|
||||
description = "Firefly III: a personal finances manager";
|
||||
homepage = "https://github.com/firefly-iii/firefly-iii";
|
||||
license = lib.licenses.agpl3Only;
|
||||
maintainers = [ lib.maintainers.savyajha ];
|
||||
};
|
||||
})
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
let
|
||||
version = "2.3.1";
|
||||
in
|
||||
buildGoModule {
|
||||
name = "fork-cleaner";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "caarlos0";
|
||||
repo = "fork-cleaner";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-JNmpcDwmxR+s4regOWz8FAJllBNRfOCmVwkDs7tlChA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-QuIaXXkch5PCpX8P755X8j7MeNnbewWo7NB+Vue1/Pk=";
|
||||
|
||||
# allowGoRefence adds the flag `-trimpath` which is also denoted by, fork-cleaner goreleaser config
|
||||
# <https://github.com/caarlos0/fork-cleaner/blob/645345bf97d751614270de4ade698ddbc53509c1/goreleaser.yml#L38>
|
||||
allowGoReference = true;
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
"-X main.version=${version}"
|
||||
"-X main.builtBy=nixpkgs"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Quickly clean up unused forks on your GitHub account";
|
||||
homepage = "https://github.com/caarlos0/fork-cleaner";
|
||||
changelog = "https://github.com/caarlos0/fork-cleaner/releases/tag/${version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ isabelroses ];
|
||||
mainProgram = "fork-cleaner";
|
||||
};
|
||||
}
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "gatus";
|
||||
version = "5.9.0";
|
||||
version = "5.10.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "TwiN";
|
||||
repo = "gatus";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-obrdEnNxLdWtbGL57D/nTClaOdzJlLDU3+K9VdR8XI4=";
|
||||
hash = "sha256-gZSK3ebBBJGHRdylCl18AYifGknYbOz7+xaCJjU9ZlY=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-VICVo7XYeHs/43knHA4CMSgHloyYSjOFe1TUb4u+egE=";
|
||||
vendorHash = "sha256-sZ6IPYitNnnw7+UQVAWFEe9/ObDhAiou1GzDDqnGXb8=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
|
|
@ -12,16 +12,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "gitu";
|
||||
version = "0.16.0";
|
||||
version = "0.17.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "altsem";
|
||||
repo = "gitu";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-ePyMyKCI8fHKfoNCMYyYeCPkyYF5KyMYaPrB1NtovCs=";
|
||||
hash = "sha256-9OY6zBW7UA4lTH+NI61xuil5p2ChQESXrG2zTxdJblE=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-1komuFSucXYdgeAFWeeuMmZYxb6Mzku7hdltDwKAa7A=";
|
||||
cargoHash = "sha256-gVmoKneAtC5dJh5Z+3aXwxCixrPZTRcxQRpoSh4S1e4=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "glider";
|
||||
version = "0.16.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nadoo";
|
||||
repo = "glider";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-nM6jKFqyaxZbn0wyEt0xy9uTu9JyLRfGTNsGPTQOXQw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-PGIBBop/waZDeQvW7iSi/AzLye/4t7nNXjX8zJsS2eo=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
substituteInPlace systemd/glider@.service \
|
||||
--replace-fail "/usr/bin/glider" "$out/bin/glider"
|
||||
install -Dm444 -t "$out/lib/systemd/system/" systemd/glider@.service
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/nadoo/glider";
|
||||
description = "Forward proxy with multiple protocols support";
|
||||
license = licenses.gpl3Only;
|
||||
mainProgram = "glider";
|
||||
maintainers = with maintainers; [ oluceps ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -47,6 +47,6 @@ buildGoModule {
|
|||
homepage = "https://github.com/google/gvisor";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ andrew-d gpl ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -16,14 +16,14 @@
|
|||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "home-manager";
|
||||
version = "unstable-2024-04-10";
|
||||
version = "unstable-2024-04-16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
name = "home-manager-source";
|
||||
owner = "nix-community";
|
||||
repo = "home-manager";
|
||||
rev = "31357486b0ef6f4e161e002b6893eeb4fafc3ca9";
|
||||
hash = "sha256-2APpO3ZW4idlgtlb8hB04u/rmIcKA8O7pYqxF66xbNY=";
|
||||
rev = "fa8c16e2452bf092ac76f09ee1fb1e9f7d0796e7";
|
||||
hash = "sha256-LmaabaQZdx52MPGKPRt9Opoc9Gd9RbwvCdysUUYQoXI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -5,14 +5,14 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "kcl-cli";
|
||||
version = "0.8.5";
|
||||
version = "0.8.6";
|
||||
src = fetchFromGitHub {
|
||||
owner = "kcl-lang";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-ZjEMgQukhBGY3LWqsGmLj3lKfLtNNaQugQs0cSLMb80=";
|
||||
hash = "sha256-A98Y5ktXFwn1XrFTwL8l04VW5zPNcMLtZCUf+niXx6c=";
|
||||
};
|
||||
vendorHash = "sha256-jmqKMB85HxAlwH7FVjHrLCZQYuAJrguRfzIz1yMypjw=";
|
||||
vendorHash = "sha256-zFTcwyK5HT1cwfHJB3n5Eh2JE3xuXqAluU3McA+FurQ=";
|
||||
ldflags = [
|
||||
"-X=kcl-lang.io/cli/pkg/version.version=${version}"
|
||||
];
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "libigl";
|
||||
version = "2.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libigl";
|
||||
repo = "libigl";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-OpjkQGRiuc7kNlwgCeM4dcotTb5J+6LUn4IOe9bFbW4=";
|
||||
};
|
||||
|
||||
# We could also properly use CMake, but we would have to heavily patch it
|
||||
# to avoid configure-time downloads of many things.
|
||||
installPhase = ''
|
||||
mkdir -p $out/include
|
||||
cp -r include/igl $out/include
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Simple C++ geometry processing library";
|
||||
homepage = "https://github.com/libigl/libigl";
|
||||
license = licenses.mpl20;
|
||||
maintainers = with maintainers; [ nim65s ];
|
||||
};
|
||||
})
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "mednafen-server";
|
||||
version = "0.5.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://mednafen.github.io/releases/files/mednafen-server-${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-uJmxaMW+bydfAXq8XDOioMoBOLUsi5OT2Tpbbotsp3Y=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
postInstall = ''
|
||||
install -m 644 -Dt $out/share/mednafen-server standard.conf
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Netplay server for Mednafen";
|
||||
mainProgram = "mednafen-server";
|
||||
homepage = "https://mednafen.github.io/";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = with lib.maintainers; [ AndersonTorres ];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
})
|
|
@ -1,33 +1,39 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, SDL2
|
||||
, SDL2_net
|
||||
, alsa-lib
|
||||
, flac
|
||||
, freeglut
|
||||
, libGL
|
||||
, libGLU
|
||||
, libX11
|
||||
, libcdio
|
||||
, libjack2
|
||||
, libsamplerate
|
||||
, libsndfile
|
||||
, pkg-config
|
||||
, zlib
|
||||
, libiconv
|
||||
{
|
||||
lib,
|
||||
SDL2,
|
||||
SDL2_net,
|
||||
alsa-lib,
|
||||
fetchurl,
|
||||
flac,
|
||||
freeglut,
|
||||
libGL,
|
||||
libGLU,
|
||||
libX11,
|
||||
libcdio,
|
||||
libiconv,
|
||||
libjack2,
|
||||
libsamplerate,
|
||||
libsndfile,
|
||||
pkg-config,
|
||||
stdenv,
|
||||
zlib,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "mednafen";
|
||||
version = "1.29.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://mednafen.github.io/releases/files/${pname}-${version}.tar.xz";
|
||||
url = "https://mednafen.github.io/releases/files/mednafen-${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-2j+88Ch3+b4PAov6XRy1npU6QEm5D+fjk4ijOG2fNi4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
outputs = [ "out" "doc" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
SDL2
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
SDL2
|
||||
|
@ -48,16 +54,21 @@ stdenv.mkDerivation rec {
|
|||
libiconv
|
||||
];
|
||||
|
||||
hardeningDisable = [ "pic" "format" ];
|
||||
hardeningDisable = [
|
||||
"format"
|
||||
"pic"
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/doc
|
||||
mv Documentation $out/share/doc/mednafen
|
||||
mkdir -p $doc/share/doc
|
||||
mv Documentation $doc/share/doc/mednafen
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
homepage = "https://mednafen.github.io/";
|
||||
description = "A portable, CLI-driven, SDL+OpenGL-based, multi-system emulator";
|
||||
longDescription = ''
|
||||
|
@ -91,9 +102,9 @@ stdenv.mkDerivation rec {
|
|||
- Sega Saturn (experimental, x86_64 only)
|
||||
- Sony PlayStation
|
||||
'';
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ AndersonTorres ];
|
||||
platforms = platforms.unix;
|
||||
license = lib.licenses.gpl2Plus;
|
||||
mainProgram = "mednafen";
|
||||
maintainers = with lib.maintainers; [ AndersonTorres ];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
}
|
||||
})
|
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
lib,
|
||||
autoreconfHook,
|
||||
fetchFromGitHub,
|
||||
gtk3,
|
||||
mednafen,
|
||||
pkg-config,
|
||||
stdenv,
|
||||
wrapGAppsHook,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "mednaffe";
|
||||
version = "0.9.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AmatCoder";
|
||||
repo = "mednaffe";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-ZizW0EeY/Cc68m87cnbLAkx3G/ULyFT5b6Ku2ObzFRU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
pkg-config
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
mednafen
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix PATH ':' "${mednafen}/bin"
|
||||
)
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "GTK-based frontend for mednafen emulator";
|
||||
mainProgram = "mednaffe";
|
||||
homepage = "https://github.com/AmatCoder/mednaffe";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [ AndersonTorres ];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
})
|
|
@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
|||
|
||||
[[package]]
|
||||
name = "ahash"
|
||||
version = "0.8.9"
|
||||
version = "0.8.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f"
|
||||
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
|
@ -31,9 +31,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "allocator-api2"
|
||||
version = "0.2.16"
|
||||
version = "0.2.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
|
||||
checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
|
||||
|
||||
[[package]]
|
||||
name = "android-tzdata"
|
||||
|
@ -52,9 +52,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "anstream"
|
||||
version = "0.6.12"
|
||||
version = "0.6.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540"
|
||||
checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
|
||||
dependencies = [
|
||||
"anstyle",
|
||||
"anstyle-parse",
|
||||
|
@ -100,21 +100,22 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.80"
|
||||
version = "1.0.82"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1"
|
||||
checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519"
|
||||
|
||||
[[package]]
|
||||
name = "async-tungstenite"
|
||||
version = "0.23.0"
|
||||
version = "0.25.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a1e9efbe14612da0a19fb983059a0b621e9cf6225d7018ecab4f9988215540dc"
|
||||
checksum = "2cca750b12e02c389c1694d35c16539f88b8bbaa5945934fdc1b41a776688589"
|
||||
dependencies = [
|
||||
"futures-io",
|
||||
"futures-util",
|
||||
"log",
|
||||
"pin-project-lite",
|
||||
"rustls-native-certs",
|
||||
"rustls-pki-types",
|
||||
"tokio",
|
||||
"tokio-rustls",
|
||||
"tungstenite",
|
||||
|
@ -134,15 +135,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.1.0"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
|
||||
|
||||
[[package]]
|
||||
name = "backtrace"
|
||||
version = "0.3.69"
|
||||
version = "0.3.71"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
|
||||
checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
|
||||
dependencies = [
|
||||
"addr2line",
|
||||
"cc",
|
||||
|
@ -155,9 +156,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.21.7"
|
||||
version = "0.22.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
|
||||
checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
|
@ -167,9 +168,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.4.2"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
|
||||
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
|
@ -182,9 +183,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.15.3"
|
||||
version = "3.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b"
|
||||
checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
|
@ -194,9 +195,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
|||
|
||||
[[package]]
|
||||
name = "bytes"
|
||||
version = "1.5.0"
|
||||
version = "1.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
|
||||
checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
|
||||
|
||||
[[package]]
|
||||
name = "cassowary"
|
||||
|
@ -215,9 +216,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.88"
|
||||
version = "1.0.94"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc"
|
||||
checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
|
@ -227,21 +228,22 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.34"
|
||||
version = "0.4.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b"
|
||||
checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
|
||||
dependencies = [
|
||||
"android-tzdata",
|
||||
"iana-time-zone",
|
||||
"num-traits",
|
||||
"windows-targets 0.52.3",
|
||||
"serde",
|
||||
"windows-targets 0.52.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.5.1"
|
||||
version = "4.5.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da"
|
||||
checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
|
@ -249,9 +251,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap_builder"
|
||||
version = "4.5.1"
|
||||
version = "4.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb"
|
||||
checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
|
@ -262,23 +264,23 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap_complete"
|
||||
version = "4.5.1"
|
||||
version = "4.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "885e4d7d5af40bfb99ae6f9433e292feac98d452dcb3ec3d25dfe7552b77da8c"
|
||||
checksum = "dd79504325bf38b10165b02e89b4347300f855f273c4cb30c4a3209e6583275e"
|
||||
dependencies = [
|
||||
"clap",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap_derive"
|
||||
version = "4.5.0"
|
||||
version = "4.5.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47"
|
||||
checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
|
||||
dependencies = [
|
||||
"heck",
|
||||
"heck 0.5.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.51",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -347,7 +349,7 @@ version = "0.27.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
|
||||
dependencies = [
|
||||
"bitflags 2.4.2",
|
||||
"bitflags 2.5.0",
|
||||
"crossterm_winapi",
|
||||
"libc",
|
||||
"mio",
|
||||
|
@ -400,9 +402,9 @@ checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591"
|
|||
|
||||
[[package]]
|
||||
name = "either"
|
||||
version = "1.10.0"
|
||||
version = "1.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
|
||||
checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2"
|
||||
|
||||
[[package]]
|
||||
name = "errno"
|
||||
|
@ -496,7 +498,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.51",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -541,9 +543,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.12"
|
||||
version = "0.2.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
|
||||
checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
|
@ -573,10 +575,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
||||
|
||||
[[package]]
|
||||
name = "http"
|
||||
version = "0.2.11"
|
||||
name = "heck"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
|
||||
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
||||
|
||||
[[package]]
|
||||
name = "http"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"fnv",
|
||||
|
@ -624,9 +632,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "indoc"
|
||||
version = "2.0.4"
|
||||
version = "2.0.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
|
||||
checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
|
||||
|
||||
[[package]]
|
||||
name = "itertools"
|
||||
|
@ -639,15 +647,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.10"
|
||||
version = "1.0.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
|
||||
checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.68"
|
||||
version = "0.3.69"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
|
||||
checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
|
||||
dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
@ -676,9 +684,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.20"
|
||||
version = "0.4.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
||||
checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
|
||||
|
||||
[[package]]
|
||||
name = "lru"
|
||||
|
@ -691,9 +699,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.7.1"
|
||||
version = "2.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
|
||||
checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
|
||||
|
||||
[[package]]
|
||||
name = "miniz_oxide"
|
||||
|
@ -706,9 +714,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.8.10"
|
||||
version = "0.8.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
|
||||
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
|
@ -718,7 +726,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "mqttui"
|
||||
version = "0.20.0"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
|
@ -735,6 +743,8 @@ dependencies = [
|
|||
"rustls",
|
||||
"rustls-native-certs",
|
||||
"rustls-pemfile",
|
||||
"rustls-pki-types",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tui-tree-widget",
|
||||
"url",
|
||||
|
@ -817,9 +827,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.13"
|
||||
version = "0.2.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
|
||||
checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
|
||||
|
||||
[[package]]
|
||||
name = "pin-utils"
|
||||
|
@ -835,18 +845,18 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
|||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.78"
|
||||
version = "1.0.81"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
|
||||
checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.35"
|
||||
version = "1.0.36"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
|
||||
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
@ -883,11 +893,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ratatui"
|
||||
version = "0.26.1"
|
||||
version = "0.26.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bcb12f8fbf6c62614b0d56eb352af54f6a22410c3b079eb53ee93c7b97dd31d8"
|
||||
checksum = "a564a852040e82671dc50a37d88f3aa83bbc690dfc6844cfe7a2591620206a80"
|
||||
dependencies = [
|
||||
"bitflags 2.4.2",
|
||||
"bitflags 2.5.0",
|
||||
"cassowary",
|
||||
"compact_str",
|
||||
"crossterm",
|
||||
|
@ -935,9 +945,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rmp"
|
||||
version = "0.8.12"
|
||||
version = "0.8.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20"
|
||||
checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"num-traits",
|
||||
|
@ -946,12 +956,14 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rmpv"
|
||||
version = "1.0.1"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2e0e0214a4a2b444ecce41a4025792fc31f77c7bb89c46d253953ea8c65701ec"
|
||||
checksum = "e540282f11751956c82bc5529a7fb71b871b998fbf9cf06c2419b22e1b4350df"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
"rmp",
|
||||
"serde",
|
||||
"serde_bytes",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -962,9 +974,9 @@ checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316"
|
|||
|
||||
[[package]]
|
||||
name = "rumqttc"
|
||||
version = "0.23.0"
|
||||
version = "0.24.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8d8941c6791801b667d52bfe9ff4fc7c968d4f3f9ae8ae7abdaaa1c966feafc8"
|
||||
checksum = "e1568e15fab2d546f940ed3a21f48bbbd1c494c90c99c4481339364a497f94a9"
|
||||
dependencies = [
|
||||
"async-tungstenite",
|
||||
"bytes",
|
||||
|
@ -998,11 +1010,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "0.38.31"
|
||||
version = "0.38.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
|
||||
checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
|
||||
dependencies = [
|
||||
"bitflags 2.4.2",
|
||||
"bitflags 2.5.0",
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys",
|
||||
|
@ -1011,52 +1023,63 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rustls"
|
||||
version = "0.21.10"
|
||||
version = "0.22.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
|
||||
checksum = "99008d7ad0bbbea527ec27bddbc0e432c5b87d8175178cee68d2eec9c4a1813c"
|
||||
dependencies = [
|
||||
"log",
|
||||
"ring",
|
||||
"rustls-pki-types",
|
||||
"rustls-webpki",
|
||||
"sct",
|
||||
"subtle",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-native-certs"
|
||||
version = "0.6.3"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
|
||||
checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792"
|
||||
dependencies = [
|
||||
"openssl-probe",
|
||||
"rustls-pemfile",
|
||||
"rustls-pki-types",
|
||||
"schannel",
|
||||
"security-framework",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-pemfile"
|
||||
version = "1.0.4"
|
||||
version = "2.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
|
||||
checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"rustls-pki-types",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-webpki"
|
||||
version = "0.101.7"
|
||||
name = "rustls-pki-types"
|
||||
version = "1.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
|
||||
checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247"
|
||||
|
||||
[[package]]
|
||||
name = "rustls-webpki"
|
||||
version = "0.102.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610"
|
||||
dependencies = [
|
||||
"ring",
|
||||
"rustls-pki-types",
|
||||
"untrusted",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustversion"
|
||||
version = "1.0.14"
|
||||
version = "1.0.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
|
||||
checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47"
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
|
@ -1079,21 +1102,11 @@ version = "1.2.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||
|
||||
[[package]]
|
||||
name = "sct"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
|
||||
dependencies = [
|
||||
"ring",
|
||||
"untrusted",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "2.9.2"
|
||||
version = "2.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
|
||||
checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"core-foundation",
|
||||
|
@ -1104,9 +1117,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "security-framework-sys"
|
||||
version = "2.9.1"
|
||||
version = "2.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
|
||||
checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
|
@ -1120,29 +1133,38 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.197"
|
||||
version = "1.0.198"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
|
||||
checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.197"
|
||||
name = "serde_bytes"
|
||||
version = "0.11.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
|
||||
checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.198"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.51",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.114"
|
||||
version = "1.0.116"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
|
||||
checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
|
@ -1201,9 +1223,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.13.1"
|
||||
version = "1.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
|
||||
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
|
@ -1226,12 +1248,12 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "stability"
|
||||
version = "0.1.1"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ebd1b177894da2a2d9120208c3386066af06a488255caabc5de8ddca22dbc3ce"
|
||||
checksum = "2ff9eaf853dec4c8802325d8b6d3dffa86cc707fd7a1a4cdbf416e13b061787a"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1242,48 +1264,43 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|||
|
||||
[[package]]
|
||||
name = "strsim"
|
||||
version = "0.11.0"
|
||||
version = "0.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
|
||||
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||
|
||||
[[package]]
|
||||
name = "strum"
|
||||
version = "0.26.1"
|
||||
version = "0.26.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "723b93e8addf9aa965ebe2d11da6d7540fa2283fcea14b3371ff055f7ba13f5f"
|
||||
checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
|
||||
dependencies = [
|
||||
"strum_macros",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "strum_macros"
|
||||
version = "0.26.1"
|
||||
version = "0.26.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a3417fc93d76740d974a01654a09777cb500428cc874ca9f45edfe0c4d4cd18"
|
||||
checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
|
||||
dependencies = [
|
||||
"heck",
|
||||
"heck 0.4.1",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"rustversion",
|
||||
"syn 2.0.51",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.109"
|
||||
name = "subtle"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.51"
|
||||
version = "2.0.59"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ab617d94515e94ae53b8406c628598680aa0c9587474ecbe58188f7b345d66c"
|
||||
checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -1302,22 +1319,22 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.57"
|
||||
version = "1.0.58"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b"
|
||||
checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.57"
|
||||
version = "1.0.58"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81"
|
||||
checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.51",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1337,9 +1354,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.36.0"
|
||||
version = "1.37.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
|
||||
checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"bytes",
|
||||
|
@ -1359,16 +1376,17 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.51",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-rustls"
|
||||
version = "0.24.1"
|
||||
version = "0.25.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
|
||||
checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
|
||||
dependencies = [
|
||||
"rustls",
|
||||
"rustls-pki-types",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
|
@ -1391,7 +1409,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.51",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1415,9 +1433,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tungstenite"
|
||||
version = "0.20.1"
|
||||
version = "0.21.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9"
|
||||
checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"bytes",
|
||||
|
@ -1427,6 +1445,7 @@ dependencies = [
|
|||
"log",
|
||||
"rand",
|
||||
"rustls",
|
||||
"rustls-pki-types",
|
||||
"sha1",
|
||||
"thiserror",
|
||||
"url",
|
||||
|
@ -1515,9 +1534,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.91"
|
||||
version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
|
||||
checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"wasm-bindgen-macro",
|
||||
|
@ -1525,24 +1544,24 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-backend"
|
||||
version = "0.2.91"
|
||||
version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
|
||||
checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"log",
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.51",
|
||||
"syn",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.91"
|
||||
version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
|
||||
checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
|
@ -1550,22 +1569,22 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.91"
|
||||
version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
|
||||
checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.51",
|
||||
"syn",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.91"
|
||||
version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
|
||||
checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
|
@ -1595,7 +1614,7 @@ version = "0.52.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.3",
|
||||
"windows-targets 0.52.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1613,7 +1632,7 @@ version = "0.52.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.3",
|
||||
"windows-targets 0.52.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1633,17 +1652,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.52.3"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d380ba1dc7187569a8a9e91ed34b8ccfc33123bbacb8c0aed2d1ad7f3ef2dc5f"
|
||||
checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm 0.52.3",
|
||||
"windows_aarch64_msvc 0.52.3",
|
||||
"windows_i686_gnu 0.52.3",
|
||||
"windows_i686_msvc 0.52.3",
|
||||
"windows_x86_64_gnu 0.52.3",
|
||||
"windows_x86_64_gnullvm 0.52.3",
|
||||
"windows_x86_64_msvc 0.52.3",
|
||||
"windows_aarch64_gnullvm 0.52.5",
|
||||
"windows_aarch64_msvc 0.52.5",
|
||||
"windows_i686_gnu 0.52.5",
|
||||
"windows_i686_gnullvm",
|
||||
"windows_i686_msvc 0.52.5",
|
||||
"windows_x86_64_gnu 0.52.5",
|
||||
"windows_x86_64_gnullvm 0.52.5",
|
||||
"windows_x86_64_msvc 0.52.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1654,9 +1674,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
|
|||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.52.3"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68e5dcfb9413f53afd9c8f86e56a7b4d86d9a2fa26090ea2dc9e40fba56c6ec6"
|
||||
checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
|
@ -1666,9 +1686,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
|
|||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.52.3"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8dab469ebbc45798319e69eebf92308e541ce46760b49b18c6b3fe5e8965b30f"
|
||||
checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
|
@ -1678,9 +1698,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
|
|||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.52.3"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2a4e9b6a7cac734a8b4138a4e1044eac3404d8326b6c0f939276560687a033fb"
|
||||
checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnullvm"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
|
@ -1690,9 +1716,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
|
|||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.52.3"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "28b0ec9c422ca95ff34a78755cfa6ad4a51371da2a5ace67500cf7ca5f232c58"
|
||||
checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
|
@ -1702,9 +1728,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
|
|||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.52.3"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "704131571ba93e89d7cd43482277d6632589b18ecf4468f591fbae0a8b101614"
|
||||
checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
|
@ -1714,9 +1740,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
|
|||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.52.3"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42079295511643151e98d61c38c0acc444e52dd42ab456f7ccfd5152e8ecf21c"
|
||||
checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
|
@ -1726,19 +1752,19 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
|
|||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.52.3"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6"
|
||||
checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
|
||||
|
||||
[[package]]
|
||||
name = "ws_stream_tungstenite"
|
||||
version = "0.11.0"
|
||||
version = "0.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e283cc794a890f5bdc01e358ad7c34535025f79ba83c1b5c7e01e5d6c60b336d"
|
||||
checksum = "a198f414f083fb19fcc1bffcb0fa0cf46d33ccfa229adf248cac12c180e91609"
|
||||
dependencies = [
|
||||
"async-tungstenite",
|
||||
"async_io_stream",
|
||||
"bitflags 2.4.2",
|
||||
"bitflags 2.5.0",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-sink",
|
||||
|
@ -1767,5 +1793,11 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.51",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zeroize"
|
||||
version = "1.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rustPlatform
|
||||
, darwin
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
rustPlatform,
|
||||
darwin,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "mqttui";
|
||||
version = "0.20.0";
|
||||
version = "0.21.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "EdJoPaTo";
|
||||
repo = "mqttui";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-NfRPuZFZMZl1ulEGD5oQkS25oJdBVyLiN3QCQWrDej8=";
|
||||
hash = "sha256-aIvT1js+xY1rauZYVCkl71JLfIDjIEGy3W8WdIaTyxY=";
|
||||
};
|
||||
|
||||
cargoLock = {
|
||||
|
@ -34,7 +35,10 @@ rustPlatform.buildRustPackage rec {
|
|||
homepage = "https://github.com/EdJoPaTo/mqttui";
|
||||
changelog = "https://github.com/EdJoPaTo/mqttui/blob/v${version}/CHANGELOG.md";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ fab sikmir ];
|
||||
maintainers = with maintainers; [
|
||||
fab
|
||||
sikmir
|
||||
];
|
||||
mainProgram = "mqttui";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildNpmPackage rec {
|
||||
pname = "mystmd";
|
||||
version = "1.1.53";
|
||||
version = "1.1.55";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "executablebooks";
|
||||
repo = "mystmd";
|
||||
rev = "mystmd@${version}";
|
||||
hash = "sha256-neJKlUk0NHdAh7y92Iyv2kouASPzv1PIl79+D0mgckI=";
|
||||
hash = "sha256-aIqIcNXlzpvW90WJs9tJajXvnEQB0IiNCu8B62cwElo=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-bXvOzx89MR7KL9wsqzB1uorjGGjh++mw17Ni65LLz28=";
|
||||
npmDepsHash = "sha256-QIGqx1Peogmdo1KLHkzUKqvAuA6jCJRfxeQ1X7p6vTM=";
|
||||
|
||||
dontNpmInstall = true;
|
||||
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
lib,
|
||||
buildNpmPackage,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "netbird-dashboard";
|
||||
version = "2.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "netbirdio";
|
||||
repo = "dashboard";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4aZ7WGLhjpTHOggJ+sRdln0YOG3jf7TKT9/bH/n3LmQ=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-ts3UuThIMf+wwSr3DpZ+k1i9RnHi/ltvhD/7lomVxQk=";
|
||||
npmFlags = [ "--legacy-peer-deps" ];
|
||||
|
||||
installPhase = ''
|
||||
cp -R out $out
|
||||
'';
|
||||
|
||||
env = {
|
||||
CYPRESS_INSTALL_BINARY = 0;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "NetBird Management Service Web UI Panel";
|
||||
homepage = "https://github.com/netbirdio/dashboard";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ thubrecht ];
|
||||
};
|
||||
}
|
|
@ -2138,7 +2138,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "niri"
|
||||
version = "0.1.4"
|
||||
version = "0.1.5"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"arrayvec",
|
||||
|
@ -2183,7 +2183,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "niri-config"
|
||||
version = "0.1.4"
|
||||
version = "0.1.5"
|
||||
dependencies = [
|
||||
"bitflags 2.5.0",
|
||||
"csscolorparser",
|
||||
|
@ -2198,15 +2198,16 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "niri-ipc"
|
||||
version = "0.1.4"
|
||||
version = "0.1.5"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "niri-visual-tests"
|
||||
version = "0.1.4"
|
||||
version = "0.1.5"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"gtk4",
|
||||
|
@ -3115,7 +3116,7 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
|
|||
[[package]]
|
||||
name = "smithay"
|
||||
version = "0.3.0"
|
||||
source = "git+https://github.com/Smithay/smithay.git#e5f006818df7ebb92d206985f45e713ba1e9c1c9"
|
||||
source = "git+https://github.com/Smithay/smithay.git#c5e9a697e41f50dc56b918d9ef1e3d2e52c84ac0"
|
||||
dependencies = [
|
||||
"appendlist",
|
||||
"bitflags 2.5.0",
|
||||
|
@ -3187,7 +3188,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "smithay-drm-extras"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/Smithay/smithay.git#e5f006818df7ebb92d206985f45e713ba1e9c1c9"
|
||||
source = "git+https://github.com/Smithay/smithay.git#c5e9a697e41f50dc56b918d9ef1e3d2e52c84ac0"
|
||||
dependencies = [
|
||||
"drm",
|
||||
"edid-rs",
|
||||
|
|
|
@ -20,19 +20,19 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "niri";
|
||||
version = "0.1.4";
|
||||
version = "0.1.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "YaLTeR";
|
||||
repo = "niri";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-lkGIQIMWfg71UOkT/TST8O6hD0IfslENj6oFPevUGl4=";
|
||||
hash = "sha256-YuYowUw5ecPa78bhT72zY2b99wn68mO3vVkop8hnb8M=";
|
||||
};
|
||||
|
||||
cargoLock = {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"smithay-0.3.0" = "sha256-bWan2DCyMvEC8ZQPwM+XpuOGkOZ/RdDV+LmRCN8UAuc=";
|
||||
"smithay-0.3.0" = "sha256-1ANERwRG7Uwe1gSm6zQnEMQlpRrGSFP8mp6JItzjz0k=";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "nwg-hello";
|
||||
version = "0.1.9";
|
||||
version = "0.1.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nwg-piotr";
|
||||
repo = "nwg-hello";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-Z5Pwn/uJERWfHELXK+1SJ2vh//ZV9gqblD/GqnznJII=";
|
||||
hash = "sha256-naYouinDYgdGwySVxdEOZpNTK0vwnIyUKTkPgYaneew=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -6,14 +6,14 @@
|
|||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "offat";
|
||||
version = "0.17.0";
|
||||
version = "0.17.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "OWASP";
|
||||
repo = "OFFAT";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-tSLlMgvKIDlzHL71gH1OznKI5jEyUoJUy9d9Z8tNXjk=";
|
||||
hash = "sha256-tyQoTc/cfzYxK+vLg9TvZdbKRX3B4tL1Do/wDMArJSA=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/src";
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
{ lib, buildGoModule, fetchFromGitHub, installShellFiles }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "omnictl";
|
||||
version = "0.32.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "siderolabs";
|
||||
repo = "omni";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-db/bYwMPrOZvD/YPtFaRK80yaYdsE70YPh0xQe0uVi4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-uwzVUdA51eT9fi2Wr0ilNPMpXx430UIYYWXQa1hpzRM=";
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
GOWORK = "off";
|
||||
|
||||
subPackages = [ "cmd/omnictl" ];
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
postInstall = ''
|
||||
installShellCompletion --cmd omnictl \
|
||||
--bash <($out/bin/omnictl completion bash) \
|
||||
--fish <($out/bin/omnictl completion fish) \
|
||||
--zsh <($out/bin/omnictl completion zsh)
|
||||
'';
|
||||
|
||||
doCheck = false; # no tests
|
||||
|
||||
meta = with lib; {
|
||||
description = "A CLI for the Sidero Omni Kubernetes management platform";
|
||||
mainProgram = "omnictl";
|
||||
homepage = "https://omni.siderolabs.com/";
|
||||
license = licenses.bsl11;
|
||||
maintainers = with maintainers; [ raylas ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
pkg-config,
|
||||
freeglut,
|
||||
gtk2,
|
||||
libGLU,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "openctm";
|
||||
version = "1.0.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.sourceforge.net/project/openctm/OpenCTM-${finalAttrs.version}/OpenCTM-${finalAttrs.version}-src.tar.bz2";
|
||||
hash = "sha256-So0mCNlzZPfuxWt8Y3xWuTCK6YKGs+kNu3QTyQ6UPx0=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
"bin"
|
||||
"dev"
|
||||
"man"
|
||||
"out"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [
|
||||
freeglut
|
||||
gtk2
|
||||
libGLU
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace tools/tinyxml/Makefile.linux \
|
||||
--replace-warn "-Wno-format" "-Wno-format -Wno-format-security"
|
||||
substituteInPlace tools/Makefile.linux \
|
||||
--replace-warn "-lglut" "-lglut -lGL -lGLU"
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"BINDIR=$(bin)/bin/"
|
||||
"INCDIR=$(dev)/include/"
|
||||
"LIBDIR=$(out)/lib/"
|
||||
"MAN1DIR=$(man)/share/man//man1"
|
||||
];
|
||||
|
||||
makefile = if stdenv.isDarwin then "Makefile.macosx" else "Makefile.linux";
|
||||
|
||||
preInstall = "mkdir -p $bin/bin $dev/include $out/lib $man/share/man/man1";
|
||||
|
||||
meta = with lib; {
|
||||
description = "File format, software library and a tool set for compression of 3D triangle meshes";
|
||||
homepage = "https://sourceforge.net/projects/openctm/";
|
||||
license = licenses.zlib;
|
||||
maintainers = with maintainers; [ nim65s ];
|
||||
};
|
||||
})
|
|
@ -5,14 +5,14 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "oterm";
|
||||
version = "0.2.5";
|
||||
version = "0.2.6";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ggozad";
|
||||
repo = "oterm";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-s+TqDrgy7sR0sli8BGKlF546TW1+vzF0k3IkAQV6TpM=";
|
||||
hash = "sha256-I/0U4lYqYZ6QCmWbDYhSOTCQ8o09W2cdd8kW7iN9iHU=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
unzip,
|
||||
}:
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "poppins";
|
||||
version = "4.003";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "itfoundry";
|
||||
repo = "poppins";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-7+RQHYxNFqOw2EeS2hgrbK/VbUAiPorUtkyRb5MFh5w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [unzip];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
unzip products/Poppins-4.003-GoogleFonts-TTF.zip
|
||||
unzip products/PoppinsLatin-5.001-Latin-TTF.zip
|
||||
install -Dm644 *.ttf -t $out/share/fonts/truetype
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "A Devanagari + Latin family for Google Fonts";
|
||||
homepage = "https://github.com/itfoundry/Poppins/";
|
||||
license = lib.licenses.ofl;
|
||||
maintainers = with lib.maintainers; [nyawox];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
|
@ -10,16 +10,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "proto";
|
||||
version = "0.34.3";
|
||||
version = "0.34.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "moonrepo";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4stIazXr7+P6gF98NTWQoVW52ov9tQ1DQjPPuN7ssLU=";
|
||||
hash = "sha256-sh4EeK9LGY1t7BDWV31pOjp6CYhOIRR/wCb6LAv68ok=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-lijDw55F7QBPqA17CPoee5unW/++LXo3Gbn24C7FLi8=";
|
||||
cargoHash = "sha256-PU6r6Iwv00TLhAZSt9hERWvCgpC27Cuf3rrsjN1gO5k=";
|
||||
|
||||
buildInputs = lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.SystemConfiguration
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
pixman,
|
||||
fcft,
|
||||
pkg-config,
|
||||
wayland-protocols,
|
||||
wayland-scanner,
|
||||
wayland
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "sandbar";
|
||||
version = "0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kolunmi";
|
||||
repo = "sandbar";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-uG+/e75s/OQtEotR+8aXTEjW6p3oJM8btuRNgUVmIiQ=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [
|
||||
wayland-scanner
|
||||
wayland-protocols
|
||||
wayland
|
||||
pixman
|
||||
fcft
|
||||
];
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/kolunmi/sandbar";
|
||||
description = "DWM-like bar for the river wayland compositor";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ fccapria ];
|
||||
platforms = platforms.all;
|
||||
badPlatforms = platforms.darwin;
|
||||
mainProgram = "sandbar";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,32 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, rustPlatform
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec{
|
||||
pname = "shadow-tls";
|
||||
version = "0.2.25";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ihciah";
|
||||
repo = "shadow-tls";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-T+GPIrcME6Wq5sdfIt4t426/3ew5sUQMykYeZ6zw1ko=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-w+DQeiQAtVsTw1VJhntX1FXymgS0fxsXiUmd6OjVWLQ=";
|
||||
|
||||
RUSTC_BOOTSTRAP = 1;
|
||||
|
||||
# network required
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/ihciah/shadow-tls";
|
||||
description = "A proxy to expose real tls handshake to the firewall";
|
||||
license = licenses.mit;
|
||||
mainProgram = "shadow-tls";
|
||||
maintainers = with maintainers; [ oluceps ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue