Merge master into haskell-updates
This commit is contained in:
@@ -6644,6 +6644,14 @@
|
|||||||
github = "ErinvanderVeen";
|
github = "ErinvanderVeen";
|
||||||
githubId = 10973664;
|
githubId = 10973664;
|
||||||
};
|
};
|
||||||
|
erooke = {
|
||||||
|
email = "ethan@roo.ke";
|
||||||
|
name = "Ethan Rooke";
|
||||||
|
keys = [ { fingerprint = "B66B EB9F 6111 E44B 7588 8240 B287 4A77 049A 5923"; } ];
|
||||||
|
github = "erooke";
|
||||||
|
githubId = 46689793;
|
||||||
|
matrix = "@ethan:roo.ke";
|
||||||
|
};
|
||||||
erosennin = {
|
erosennin = {
|
||||||
email = "ag@sologoc.com";
|
email = "ag@sologoc.com";
|
||||||
github = "erosennin";
|
github = "erosennin";
|
||||||
@@ -11279,6 +11287,13 @@
|
|||||||
github = "keenanweaver";
|
github = "keenanweaver";
|
||||||
githubId = 37268985;
|
githubId = 37268985;
|
||||||
};
|
};
|
||||||
|
keksgesicht = {
|
||||||
|
name = "Jan Braun";
|
||||||
|
email = "git@keksgesicht.de";
|
||||||
|
github = "Keksgesicht";
|
||||||
|
githubId = 32649612;
|
||||||
|
keys = [ { fingerprint = "65DF D21C 22A9 E4CD FD1A 0804 C3D7 16E7 29B3 C86A"; } ];
|
||||||
|
};
|
||||||
keldu = {
|
keldu = {
|
||||||
email = "mail@keldu.de";
|
email = "mail@keldu.de";
|
||||||
github = "keldu";
|
github = "keldu";
|
||||||
@@ -23120,6 +23135,12 @@
|
|||||||
githubId = 7677567;
|
githubId = 7677567;
|
||||||
name = "Victor SENE";
|
name = "Victor SENE";
|
||||||
};
|
};
|
||||||
|
vtimofeenko = {
|
||||||
|
email = "nixpkgs.maintain@vtimofeenko.com";
|
||||||
|
github = "VTimofeenko";
|
||||||
|
githubId = 9886026;
|
||||||
|
name = "Vladimir Timofeenko";
|
||||||
|
};
|
||||||
vtuan10 = {
|
vtuan10 = {
|
||||||
email = "mail@tuan-vo.de";
|
email = "mail@tuan-vo.de";
|
||||||
github = "vtuan10";
|
github = "vtuan10";
|
||||||
|
|||||||
@@ -448,7 +448,9 @@
|
|||||||
before changing the package to `pkgs.stalwart-mail` in
|
before changing the package to `pkgs.stalwart-mail` in
|
||||||
[`services.stalwart-mail.package`](#opt-services.stalwart-mail.package).
|
[`services.stalwart-mail.package`](#opt-services.stalwart-mail.package).
|
||||||
|
|
||||||
- The `nomad_1_5` package was dropped, as [it has reached end-of-life upstream](https://support.hashicorp.com/hc/en-us/articles/360021185113-Support-Period-and-End-of-Life-EOL-Policy). Evaluating it will throw an error.
|
- The `nomad_1_5` and `nomad_1_6` package were dropped, as [they have reached end-of-life upstream](https://support.hashicorp.com/hc/en-us/articles/360021185113-Support-Period-and-End-of-Life-EOL-Policy). Evaluating them will throw an error.
|
||||||
|
|
||||||
|
- The default `nomad` package has been updated to 1.8.x. For more information, see [breaking changes for Nomad 1.8](https://developer.hashicorp.com/nomad/docs/upgrade/upgrade-specific#nomad-1-8-0)
|
||||||
|
|
||||||
- `androidndkPkgs` has been updated to `androidndkPkgs_26`.
|
- `androidndkPkgs` has been updated to `androidndkPkgs_26`.
|
||||||
|
|
||||||
@@ -727,6 +729,8 @@
|
|||||||
|
|
||||||
- `lib.misc.mapAttrsFlatten` is now formally deprecated and will be removed in future releases; use the identical [`lib.attrsets.mapAttrsToList`](https://nixos.org/manual/nixpkgs/unstable#function-library-lib.attrsets.mapAttrsToList) instead.
|
- `lib.misc.mapAttrsFlatten` is now formally deprecated and will be removed in future releases; use the identical [`lib.attrsets.mapAttrsToList`](https://nixos.org/manual/nixpkgs/unstable#function-library-lib.attrsets.mapAttrsToList) instead.
|
||||||
|
|
||||||
|
- `virtualisation.docker.liveRestore` has been renamed to `virtualisation.docker.daemon.settings."live-restore"` and turned off by default for state versions of at least 24.11.
|
||||||
|
|
||||||
- Tailscale's `authKeyFile` can now have its corresponding parameters set through `config.services.tailscale.authKeyParameters`, allowing for non-ephemeral unsupervised deployment and more.
|
- Tailscale's `authKeyFile` can now have its corresponding parameters set through `config.services.tailscale.authKeyParameters`, allowing for non-ephemeral unsupervised deployment and more.
|
||||||
See [Registering new nodes using OAuth credentials](https://tailscale.com/kb/1215/oauth-clients#registering-new-nodes-using-oauth-credentials) for the supported options.
|
See [Registering new nodes using OAuth credentials](https://tailscale.com/kb/1215/oauth-clients#registering-new-nodes-using-oauth-credentials) for the supported options.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.hardware.tuxedo-drivers;
|
||||||
|
tuxedo-drivers = config.boot.kernelPackages.tuxedo-drivers;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(lib.mkRenamedOptionModule
|
||||||
|
[
|
||||||
|
"hardware"
|
||||||
|
"tuxedo-keyboard"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"hardware"
|
||||||
|
"tuxedo-drivers"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
|
options.hardware.tuxedo-drivers = {
|
||||||
|
enable = lib.mkEnableOption ''
|
||||||
|
The tuxedo-drivers driver enables access to the following on TUXEDO notebooks:
|
||||||
|
- Driver for Fn-keys
|
||||||
|
- SysFS control of brightness/color/mode for most TUXEDO keyboards
|
||||||
|
- Hardware I/O driver for TUXEDO Control Center
|
||||||
|
|
||||||
|
For more inforation it is best to check at the source code description: <https://gitlab.com/tuxedocomputers/development/packages/tuxedo-drivers>
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
boot.kernelModules = [ "tuxedo_keyboard" ];
|
||||||
|
boot.extraModulePackages = [ tuxedo-drivers ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
let
|
|
||||||
cfg = config.hardware.tuxedo-keyboard;
|
|
||||||
tuxedo-keyboard = config.boot.kernelPackages.tuxedo-keyboard;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.hardware.tuxedo-keyboard = {
|
|
||||||
enable = lib.mkEnableOption ''
|
|
||||||
the tuxedo-keyboard driver.
|
|
||||||
|
|
||||||
To configure the driver, pass the options to the {option}`boot.kernelParams` configuration.
|
|
||||||
There are several parameters you can change. It's best to check at the source code description which options are supported.
|
|
||||||
You can find all the supported parameters at: <https://github.com/tuxedocomputers/tuxedo-keyboard#kernelparam>
|
|
||||||
|
|
||||||
In order to use the `custom` lighting with the maximumg brightness and a color of `0xff0a0a` one would put pass {option}`boot.kernelParams` like this:
|
|
||||||
|
|
||||||
```
|
|
||||||
boot.kernelParams = [
|
|
||||||
"tuxedo_keyboard.mode=0"
|
|
||||||
"tuxedo_keyboard.brightness=255"
|
|
||||||
"tuxedo_keyboard.color_left=0xff0a0a"
|
|
||||||
];
|
|
||||||
```
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable
|
|
||||||
{
|
|
||||||
boot.kernelModules = ["tuxedo_keyboard"];
|
|
||||||
boot.extraModulePackages = [ tuxedo-keyboard ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
./hardware/sensor/iio.nix
|
./hardware/sensor/iio.nix
|
||||||
./hardware/steam-hardware.nix
|
./hardware/steam-hardware.nix
|
||||||
./hardware/system-76.nix
|
./hardware/system-76.nix
|
||||||
./hardware/tuxedo-keyboard.nix
|
./hardware/tuxedo-drivers.nix
|
||||||
./hardware/ubertooth.nix
|
./hardware/ubertooth.nix
|
||||||
./hardware/uinput.nix
|
./hardware/uinput.nix
|
||||||
./hardware/uni-sync.nix
|
./hardware/uni-sync.nix
|
||||||
@@ -1479,6 +1479,7 @@
|
|||||||
./services/web-apps/ocis.nix
|
./services/web-apps/ocis.nix
|
||||||
./services/web-apps/onlyoffice.nix
|
./services/web-apps/onlyoffice.nix
|
||||||
./services/web-apps/openvscode-server.nix
|
./services/web-apps/openvscode-server.nix
|
||||||
|
./services/web-apps/mediagoblin.nix
|
||||||
./services/web-apps/mobilizon.nix
|
./services/web-apps/mobilizon.nix
|
||||||
./services/web-apps/openwebrx.nix
|
./services/web-apps/openwebrx.nix
|
||||||
./services/web-apps/outline.nix
|
./services/web-apps/outline.nix
|
||||||
|
|||||||
@@ -29,8 +29,6 @@ with lib;
|
|||||||
|
|
||||||
programs.command-not-found.enable = mkDefault false;
|
programs.command-not-found.enable = mkDefault false;
|
||||||
|
|
||||||
programs.ssh.setXAuthLocation = mkDefault false;
|
|
||||||
|
|
||||||
services.logrotate.enable = mkDefault false;
|
services.logrotate.enable = mkDefault false;
|
||||||
|
|
||||||
services.udisks2.enable = mkDefault false;
|
services.udisks2.enable = mkDefault false;
|
||||||
|
|||||||
@@ -1,65 +1,188 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
let cfg = config.services.victoriametrics; in
|
|
||||||
{
|
{
|
||||||
options.services.victoriametrics = with lib; {
|
config,
|
||||||
enable = mkEnableOption "VictoriaMetrics, a time series database, long-term remote storage for Prometheus";
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.services.victoriametrics;
|
||||||
|
settingsFormat = pkgs.formats.yaml { };
|
||||||
|
|
||||||
|
startCLIList =
|
||||||
|
[
|
||||||
|
"${cfg.package}/bin/victoria-metrics"
|
||||||
|
"-storageDataPath=/var/lib/${cfg.stateDir}"
|
||||||
|
"-httpListenAddr=${cfg.listenAddress}"
|
||||||
|
|
||||||
|
]
|
||||||
|
++ lib.optionals (cfg.retentionPeriod != null) [ "-retentionPeriod=${cfg.retentionPeriod}" ]
|
||||||
|
++ cfg.extraOptions;
|
||||||
|
prometheusConfigYml = checkedConfig (
|
||||||
|
settingsFormat.generate "prometheusConfig.yaml" cfg.prometheusConfig
|
||||||
|
);
|
||||||
|
|
||||||
|
checkedConfig =
|
||||||
|
file:
|
||||||
|
pkgs.runCommand "checked-config" { nativeBuildInputs = [ cfg.package ]; } ''
|
||||||
|
ln -s ${file} $out
|
||||||
|
${lib.escapeShellArgs startCLIList} -promscrape.config=${file} -dryRun
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.victoriametrics = {
|
||||||
|
enable = mkEnableOption "VictoriaMetrics is a fast, cost-effective and scalable monitoring solution and time series database.";
|
||||||
package = mkPackageOption pkgs "victoriametrics" { };
|
package = mkPackageOption pkgs "victoriametrics" { };
|
||||||
|
|
||||||
listenAddress = mkOption {
|
listenAddress = mkOption {
|
||||||
default = ":8428";
|
default = ":8428";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''
|
description = ''
|
||||||
The listen address for the http interface.
|
TCP address to listen for incoming http requests.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
retentionPeriod = mkOption {
|
|
||||||
type = types.int;
|
stateDir = mkOption {
|
||||||
default = 1;
|
type = types.str;
|
||||||
|
default = "victoriametrics";
|
||||||
description = ''
|
description = ''
|
||||||
Retention period in months.
|
Directory below `/var/lib` to store VictoriaMetrics metrics data.
|
||||||
|
This directory will be created automatically using systemd's StateDirectory mechanism.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
retentionPeriod = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
example = "15d";
|
||||||
|
description = ''
|
||||||
|
How long to retain samples in storage.
|
||||||
|
The minimum retentionPeriod is 24h or 1d. See also -retentionFilter
|
||||||
|
The following optional suffixes are supported: s (second), h (hour), d (day), w (week), y (year).
|
||||||
|
If suffix isn't set, then the duration is counted in months (default 1)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
prometheusConfig = lib.mkOption {
|
||||||
|
type = lib.types.submodule { freeformType = settingsFormat.type; };
|
||||||
|
default = { };
|
||||||
|
example = literalExpression ''
|
||||||
|
{
|
||||||
|
scrape_configs = [
|
||||||
|
{
|
||||||
|
job_name = "postgres-exporter";
|
||||||
|
metrics_path = "/metrics";
|
||||||
|
static_configs = [
|
||||||
|
{
|
||||||
|
targets = ["1.2.3.4:9187"];
|
||||||
|
labels.type = "database";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
job_name = "node-exporter";
|
||||||
|
metrics_path = "/metrics";
|
||||||
|
static_configs = [
|
||||||
|
{
|
||||||
|
targets = ["1.2.3.4:9100"];
|
||||||
|
labels.type = "node";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
targets = ["5.6.7.8:9100"];
|
||||||
|
labels.type = "node";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Config for prometheus style metrics.
|
||||||
|
See the docs: <https://docs.victoriametrics.com/vmagent/#how-to-collect-metrics-in-prometheus-format>
|
||||||
|
for more information.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
extraOptions = mkOption {
|
extraOptions = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [ ];
|
||||||
|
example = literalExpression ''
|
||||||
|
[
|
||||||
|
"-httpAuth.username=username"
|
||||||
|
"-httpAuth.password=file:///abs/path/to/file"
|
||||||
|
"-loggerLevel=WARN"
|
||||||
|
]
|
||||||
|
'';
|
||||||
description = ''
|
description = ''
|
||||||
Extra options to pass to VictoriaMetrics. See the README:
|
Extra options to pass to VictoriaMetrics. See the docs:
|
||||||
<https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/README.md>
|
<https://docs.victoriametrics.com/single-server-victoriametrics/#list-of-command-line-flags>
|
||||||
or {command}`victoriametrics -help` for more
|
or {command}`victoriametrics -help` for more information.
|
||||||
information.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
systemd.services.victoriametrics = {
|
systemd.services.victoriametrics = {
|
||||||
description = "VictoriaMetrics time series database";
|
description = "VictoriaMetrics time series database";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
startLimitBurst = 5;
|
startLimitBurst = 5;
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Restart = "on-failure";
|
ExecStart = lib.escapeShellArgs (
|
||||||
RestartSec = 1;
|
startCLIList
|
||||||
StateDirectory = "victoriametrics";
|
++ lib.optionals (cfg.prometheusConfig != null) [ "-promscrape.config=${prometheusConfigYml}" ]
|
||||||
|
);
|
||||||
|
|
||||||
DynamicUser = true;
|
DynamicUser = true;
|
||||||
ExecStart = ''
|
RestartSec = 1;
|
||||||
${cfg.package}/bin/victoria-metrics \
|
Restart = "on-failure";
|
||||||
-storageDataPath=/var/lib/victoriametrics \
|
RuntimeDirectory = "victoriametrics";
|
||||||
-httpListenAddr ${cfg.listenAddress} \
|
RuntimeDirectoryMode = "0700";
|
||||||
-retentionPeriod ${toString cfg.retentionPeriod} \
|
StateDirectory = cfg.stateDir;
|
||||||
${lib.escapeShellArgs cfg.extraOptions}
|
StateDirectoryMode = "0700";
|
||||||
'';
|
|
||||||
# victoriametrics 1.59 with ~7GB of data seems to eventually panic when merging files and then
|
# Increase the limit to avoid errors like 'too many open files' when merging small parts
|
||||||
# begins restart-looping forever. Set LimitNOFILE= to a large number to work around this issue.
|
|
||||||
#
|
|
||||||
# panic: FATAL: unrecoverable error when merging small parts in the partition "/var/lib/victoriametrics/data/small/2021_08":
|
|
||||||
# cannot open source part for merging: cannot open values file in stream mode:
|
|
||||||
# cannot open file "/var/lib/victoriametrics/data/small/2021_08/[...]/values.bin":
|
|
||||||
# open /var/lib/victoriametrics/data/small/2021_08/[...]/values.bin: too many open files
|
|
||||||
LimitNOFILE = 1048576;
|
LimitNOFILE = 1048576;
|
||||||
|
|
||||||
|
# Hardening
|
||||||
|
DeviceAllow = [ "/dev/null rw" ];
|
||||||
|
DevicePolicy = "strict";
|
||||||
|
LockPersonality = true;
|
||||||
|
MemoryDenyWriteExecute = true;
|
||||||
|
NoNewPrivileges = true;
|
||||||
|
PrivateDevices = true;
|
||||||
|
PrivateTmp = true;
|
||||||
|
PrivateUsers = true;
|
||||||
|
ProtectClock = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
ProtectHome = true;
|
||||||
|
ProtectHostname = true;
|
||||||
|
ProtectKernelLogs = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectProc = "invisible";
|
||||||
|
ProtectSystem = "full";
|
||||||
|
RemoveIPC = true;
|
||||||
|
RestrictAddressFamilies = [
|
||||||
|
"AF_INET"
|
||||||
|
"AF_INET6"
|
||||||
|
"AF_UNIX"
|
||||||
|
];
|
||||||
|
RestrictNamespaces = true;
|
||||||
|
RestrictRealtime = true;
|
||||||
|
RestrictSUIDSGID = true;
|
||||||
|
SystemCallArchitectures = "native";
|
||||||
|
SystemCallFilter = [
|
||||||
|
"@system-service"
|
||||||
|
"~@privileged"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
|
|
||||||
postStart =
|
postStart =
|
||||||
let
|
let
|
||||||
bindAddr = (lib.optionalString (lib.hasPrefix ":" cfg.listenAddress) "127.0.0.1") + cfg.listenAddress;
|
bindAddr =
|
||||||
|
(lib.optionalString (lib.hasPrefix ":" cfg.listenAddress) "127.0.0.1") + cfg.listenAddress;
|
||||||
in
|
in
|
||||||
lib.mkBefore ''
|
lib.mkBefore ''
|
||||||
until ${lib.getBin pkgs.curl}/bin/curl -s -o /dev/null http://${bindAddr}/ping; do
|
until ${lib.getBin pkgs.curl}/bin/curl -s -o /dev/null http://${bindAddr}/ping; do
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ in {
|
|||||||
{
|
{
|
||||||
# JACK intentionally not checked, as PW-on-JACK setups are a thing that some people may want
|
# JACK intentionally not checked, as PW-on-JACK setups are a thing that some people may want
|
||||||
assertion = (cfg.alsa.enable || cfg.pulse.enable) -> cfg.audio.enable;
|
assertion = (cfg.alsa.enable || cfg.pulse.enable) -> cfg.audio.enable;
|
||||||
message = "Using PipeWire's ALSA/PulseAudio compatibility layers requires running PipeWire as the sound server. Set `services.pipewire.audio.enable` to true.";
|
message = "Using PipeWire's ALSA/PulseAudio compatibility layers requires running PipeWire as the sound server. Either set `services.pipewire.audio.enable` to true to enable audio support, or set both `services.pipewire.pulse.enable` and `services.pipewire.alsa.enable` to false to use pipewire exclusively for the compositor.";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
assertion = length
|
assertion = length
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ in
|
|||||||
|
|
||||||
config = lib.mkIf cfg.enable (lib.mkMerge [
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
{
|
{
|
||||||
hardware.tuxedo-keyboard.enable = true;
|
hardware.tuxedo-drivers.enable = true;
|
||||||
|
|
||||||
systemd = {
|
systemd = {
|
||||||
services.tailord = {
|
services.tailord = {
|
||||||
|
|||||||
@@ -0,0 +1,377 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.mediagoblin;
|
||||||
|
|
||||||
|
mkSubSectionKeyValue =
|
||||||
|
depth: k: v:
|
||||||
|
if lib.isAttrs v then
|
||||||
|
let
|
||||||
|
inherit (lib.strings) replicate;
|
||||||
|
in
|
||||||
|
"${replicate depth "["}${k}${replicate depth "]"}\n"
|
||||||
|
+ lib.generators.toINIWithGlobalSection {
|
||||||
|
mkKeyValue = mkSubSectionKeyValue (depth + 1);
|
||||||
|
} { globalSection = v; }
|
||||||
|
else
|
||||||
|
lib.generators.mkKeyValueDefault {
|
||||||
|
mkValueString = v: if lib.isString v then ''"${v}"'' else lib.generators.mkValueStringDefault { } v;
|
||||||
|
} " = " k v;
|
||||||
|
|
||||||
|
iniFormat = pkgs.formats.ini { };
|
||||||
|
|
||||||
|
# we need to build our own GI_TYPELIB_PATH because celery and paster need this information, too and cannot easily be re-wrapped
|
||||||
|
GI_TYPELIB_PATH =
|
||||||
|
let
|
||||||
|
needsGst =
|
||||||
|
(cfg.settings.mediagoblin.plugins ? "mediagoblin.media_types.audio")
|
||||||
|
|| (cfg.settings.mediagoblin.plugins ? "mediagoblin.media_types.video");
|
||||||
|
in
|
||||||
|
lib.makeSearchPathOutput "out" "lib/girepository-1.0" (
|
||||||
|
with pkgs.gst_all_1;
|
||||||
|
[
|
||||||
|
pkgs.glib
|
||||||
|
gst-plugins-base
|
||||||
|
gstreamer
|
||||||
|
]
|
||||||
|
# audio and video share most dependencies, so we can just take audio
|
||||||
|
++ lib.optionals needsGst cfg.package.optional-dependencies.audio
|
||||||
|
);
|
||||||
|
|
||||||
|
finalPackage = cfg.package.python.buildEnv.override {
|
||||||
|
extraLibs =
|
||||||
|
with cfg.package.python.pkgs;
|
||||||
|
[
|
||||||
|
(toPythonModule cfg.package)
|
||||||
|
]
|
||||||
|
++ cfg.pluginPackages
|
||||||
|
# not documented in extras...
|
||||||
|
++ lib.optional (lib.hasPrefix "postgresql://" cfg.settings.mediagoblin.sql_engine) psycopg2
|
||||||
|
++ (
|
||||||
|
let
|
||||||
|
inherit (cfg.settings.mediagoblin) plugins;
|
||||||
|
in
|
||||||
|
with cfg.package.optional-dependencies;
|
||||||
|
lib.optionals (plugins ? "mediagoblin.media_types.audio") audio
|
||||||
|
++ lib.optionals (plugins ? "mediagoblin.media_types.video") video
|
||||||
|
++ lib.optionals (plugins ? "mediagoblin.media_types.raw_image") raw_image
|
||||||
|
++ lib.optionals (plugins ? "mediagoblin.media_types.ascii") ascii
|
||||||
|
++ lib.optionals (plugins ? "mediagoblin.plugins.ldap") ldap
|
||||||
|
);
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
services.mediagoblin = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to enable MediaGoblin.
|
||||||
|
|
||||||
|
After the initial deployment, make sure to add an admin account:
|
||||||
|
```
|
||||||
|
mediagoblin-gmg adduser --username admin --email admin@example.com
|
||||||
|
mediagoblin-gmg makeadmin admin
|
||||||
|
```
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
domain = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
example = "mediagoblin.example.com";
|
||||||
|
description = "Domain under which mediagoblin will be served.";
|
||||||
|
};
|
||||||
|
|
||||||
|
createDatabaseLocally = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
description = "Whether to configure a local postgres database and connect to it.";
|
||||||
|
};
|
||||||
|
|
||||||
|
package = lib.mkPackageOption pkgs "mediagoblin" { };
|
||||||
|
|
||||||
|
pluginPackages = lib.mkOption {
|
||||||
|
type = with lib.types; listOf package;
|
||||||
|
default = [ ];
|
||||||
|
description = "Plugins to add to the environment of MediaGoblin. They still need to be enabled in the config.";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = lib.mkOption {
|
||||||
|
description = "Settings which are written into `mediagoblin.ini`.";
|
||||||
|
default = { };
|
||||||
|
type = lib.types.submodule {
|
||||||
|
freeformType = lib.types.anything;
|
||||||
|
|
||||||
|
options = {
|
||||||
|
mediagoblin = {
|
||||||
|
allow_registration = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to enable user self registration. This is generally not recommend due to spammers.
|
||||||
|
See [upstream FAQ](https://docs.mediagoblin.org/en/stable/siteadmin/production-deployments.html#should-i-keep-open-registration-enabled).
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
email_debug_mode = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
description = ''
|
||||||
|
Disable email debug mode to start sending outgoing mails.
|
||||||
|
This requires configuring SMTP settings,
|
||||||
|
see the [upstream docs](https://docs.mediagoblin.org/en/stable/siteadmin/configuration.html#enabling-email-notifications)
|
||||||
|
for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
email_sender_address = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
example = "noreply@example.org";
|
||||||
|
description = "Email address which notices are sent from.";
|
||||||
|
};
|
||||||
|
|
||||||
|
sql_engine = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "sqlite:///var/lib/mediagoblin/mediagoblin.db";
|
||||||
|
example = "postgresql:///mediagoblin";
|
||||||
|
description = "Database to use.";
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins = lib.mkOption {
|
||||||
|
defaultText = ''
|
||||||
|
{
|
||||||
|
"mediagoblin.plugins.geolocation" = { };
|
||||||
|
"mediagoblin.plugins.processing_info" = { };
|
||||||
|
"mediagoblin.plugins.basic_auth" = { };
|
||||||
|
"mediagoblin.media_types.image" = { };
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Plugins to enable. See [upstream docs](https://docs.mediagoblin.org/en/stable/siteadmin/plugins.html) for details.
|
||||||
|
Extra dependencies are automatically enabled.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
paste = {
|
||||||
|
port = lib.mkOption {
|
||||||
|
type = lib.types.port;
|
||||||
|
default = 6543;
|
||||||
|
description = "Port under which paste will listen.";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = lib.mkOption {
|
||||||
|
description = "Settings which are written into `paste.ini`.";
|
||||||
|
default = { };
|
||||||
|
type = lib.types.submodule {
|
||||||
|
freeformType = iniFormat.type;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = [
|
||||||
|
(pkgs.writeShellScriptBin "mediagoblin-gmg" ''
|
||||||
|
sudo=exec
|
||||||
|
if [[ "$USER" != mediagoblin ]]; then
|
||||||
|
sudo='exec /run/wrappers/bin/sudo -u mediagoblin'
|
||||||
|
fi
|
||||||
|
$sudo sh -c "cd /var/lib/mediagoblin; env GI_TYPELIB_PATH=${GI_TYPELIB_PATH} ${lib.getExe' finalPackage "gmg"} $@"
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
|
||||||
|
services = {
|
||||||
|
mediagoblin.settings.mediagoblin = {
|
||||||
|
plugins = {
|
||||||
|
"mediagoblin.media_types.image" = { };
|
||||||
|
"mediagoblin.plugins.basic_auth" = { };
|
||||||
|
"mediagoblin.plugins.geolocation" = { };
|
||||||
|
"mediagoblin.plugins.processing_info" = { };
|
||||||
|
};
|
||||||
|
sql_engine = lib.mkIf cfg.createDatabaseLocally "postgresql:///mediagoblin";
|
||||||
|
};
|
||||||
|
|
||||||
|
nginx = {
|
||||||
|
enable = true;
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
virtualHosts = {
|
||||||
|
# see https://git.sr.ht/~mediagoblin/mediagoblin/tree/bf61d38df21748aadb480c53fdd928647285e35f/item/nginx.conf.template
|
||||||
|
"${cfg.domain}" = {
|
||||||
|
forceSSL = true;
|
||||||
|
extraConfig = ''
|
||||||
|
# https://git.sr.ht/~mediagoblin/mediagoblin/tree/bf61d38df21748aadb480c53fdd928647285e35f/item/Dockerfile.nginx.in#L5
|
||||||
|
client_max_body_size 100M;
|
||||||
|
|
||||||
|
more_set_headers X-Content-Type-Options nosniff;
|
||||||
|
'';
|
||||||
|
locations = {
|
||||||
|
"/".proxyPass = "http://127.0.0.1:${toString cfg.paste.port}";
|
||||||
|
"/mgoblin_static/".alias = "${finalPackage}/${finalPackage.python.sitePackages}/mediagoblin/static/";
|
||||||
|
"/mgoblin_media/".alias = "/var/lib/mediagoblin/user_dev/media/public/";
|
||||||
|
"/theme_static/".alias = "/var/lib/mediagoblin/user_dev/theme_static/";
|
||||||
|
"/plugin_static/".alias = "/var/lib/mediagoblin/user_dev/plugin_static/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
postgresql = lib.mkIf cfg.createDatabaseLocally {
|
||||||
|
enable = true;
|
||||||
|
ensureDatabases = [ "mediagoblin" ];
|
||||||
|
ensureUsers = [
|
||||||
|
{
|
||||||
|
name = "mediagoblin";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
rabbitmq.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services =
|
||||||
|
let
|
||||||
|
serviceDefaults = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path =
|
||||||
|
lib.optionals (cfg.settings.mediagoblin.plugins ? "mediagoblin.media_types.stl") [ pkgs.blender ]
|
||||||
|
++ lib.optionals (cfg.settings.mediagoblin.plugins ? "mediagoblin.media_types.pdf") (
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
poppler_utils
|
||||||
|
unoconv
|
||||||
|
]
|
||||||
|
);
|
||||||
|
serviceConfig = {
|
||||||
|
AmbientCapabilities = "";
|
||||||
|
CapabilityBoundingSet = [ "" ];
|
||||||
|
DevicePolicy = "closed";
|
||||||
|
Group = "mediagoblin";
|
||||||
|
LockPersonality = true;
|
||||||
|
MemoryDenyWriteExecute = true;
|
||||||
|
NoNewPrivileges = true;
|
||||||
|
PrivateDevices = true;
|
||||||
|
PrivateTmp = true;
|
||||||
|
ProcSubset = "pid";
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
ProtectHome = true;
|
||||||
|
ProtectHostname = true;
|
||||||
|
ProtectKernelLogs = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectProc = "invisible";
|
||||||
|
ProtectSystem = "strict";
|
||||||
|
RestrictAddressFamilies = [
|
||||||
|
"AF_INET"
|
||||||
|
"AF_INET6"
|
||||||
|
"AF_UNIX"
|
||||||
|
];
|
||||||
|
RemoveIPC = true;
|
||||||
|
StateDirectory = "mediagoblin";
|
||||||
|
StateDirectoryMode = "0750";
|
||||||
|
User = "mediagoblin";
|
||||||
|
WorkingDirectory = "/var/lib/mediagoblin/";
|
||||||
|
RestrictNamespaces = true;
|
||||||
|
RestrictRealtime = true;
|
||||||
|
RestrictSUIDSGID = true;
|
||||||
|
SystemCallArchitectures = "native";
|
||||||
|
SystemCallFilter = [
|
||||||
|
"@system-service"
|
||||||
|
"~@privileged"
|
||||||
|
"@chown"
|
||||||
|
];
|
||||||
|
UMask = "0027";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
generatedPasteConfig = iniFormat.generate "paste.ini" cfg.paste.settings;
|
||||||
|
pasteConfig = pkgs.runCommand "paste-combined.ini" { nativeBuildInputs = [ pkgs.crudini ]; } ''
|
||||||
|
cp ${cfg.package.src}/paste.ini $out
|
||||||
|
chmod +w $out
|
||||||
|
crudini --merge $out < ${generatedPasteConfig}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
mediagoblin-celeryd = lib.recursiveUpdate serviceDefaults {
|
||||||
|
# we cannot change DEFAULT.data_dir inside mediagoblin.ini because of an annoying bug
|
||||||
|
# https://todo.sr.ht/~mediagoblin/mediagoblin/57
|
||||||
|
preStart = ''
|
||||||
|
cp --remove-destination ${
|
||||||
|
pkgs.writeText "mediagoblin.ini" (
|
||||||
|
lib.generators.toINI { } (lib.filterAttrsRecursive (n: v: n != "plugins") cfg.settings)
|
||||||
|
+ "\n"
|
||||||
|
+ lib.generators.toINI { mkKeyValue = mkSubSectionKeyValue 2; } {
|
||||||
|
inherit (cfg.settings.mediagoblin) plugins;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
} /var/lib/mediagoblin/mediagoblin.ini
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Environment = [
|
||||||
|
"CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery"
|
||||||
|
"GI_TYPELIB_PATH=${GI_TYPELIB_PATH}"
|
||||||
|
"MEDIAGOBLIN_CONFIG=/var/lib/mediagoblin/mediagoblin.ini"
|
||||||
|
"PASTE_CONFIG=${pasteConfig}"
|
||||||
|
];
|
||||||
|
ExecStart = "${lib.getExe' finalPackage "celery"} worker --loglevel=INFO";
|
||||||
|
};
|
||||||
|
unitConfig.Description = "MediaGoblin Celery";
|
||||||
|
};
|
||||||
|
|
||||||
|
mediagoblin-paster = lib.recursiveUpdate serviceDefaults {
|
||||||
|
after = [
|
||||||
|
"mediagoblin-celeryd.service"
|
||||||
|
"postgresql.service"
|
||||||
|
];
|
||||||
|
requires = [
|
||||||
|
"mediagoblin-celeryd.service"
|
||||||
|
"postgresql.service"
|
||||||
|
];
|
||||||
|
preStart = ''
|
||||||
|
cp --remove-destination ${pasteConfig} /var/lib/mediagoblin/paste.ini
|
||||||
|
${lib.getExe' finalPackage "gmg"} dbupdate
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Environment = [
|
||||||
|
"CELERY_ALWAYS_EAGER=false"
|
||||||
|
"GI_TYPELIB_PATH=${GI_TYPELIB_PATH}"
|
||||||
|
];
|
||||||
|
ExecStart = "${lib.getExe' finalPackage "paster"} serve /var/lib/mediagoblin/paste.ini";
|
||||||
|
};
|
||||||
|
unitConfig.Description = "Mediagoblin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.tmpfiles.settings."mediagoblin"."/var/lib/mediagoblin/user_dev".d = {
|
||||||
|
group = "mediagoblin";
|
||||||
|
mode = "2750";
|
||||||
|
user = "mediagoblin";
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
groups.mediagoblin = { };
|
||||||
|
users = {
|
||||||
|
mediagoblin = {
|
||||||
|
group = "mediagoblin";
|
||||||
|
home = "/var/lib/mediagoblin";
|
||||||
|
isSystemUser = true;
|
||||||
|
};
|
||||||
|
nginx.extraGroups = [ "mediagoblin" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -205,10 +205,14 @@ in
|
|||||||
|
|
||||||
system.build.installBootLoader = mkOption {
|
system.build.installBootLoader = mkOption {
|
||||||
internal = true;
|
internal = true;
|
||||||
# "; true" => make the `$out` argument from switch-to-configuration.pl
|
default = pkgs.writeShellScript "no-bootloader" ''
|
||||||
# go to `true` instead of `echo`, hiding the useless path
|
echo 'Warning: do not know how to make this configuration bootable; please enable a boot loader.' 1>&2
|
||||||
# from the log.
|
'';
|
||||||
default = "echo 'Warning: do not know how to make this configuration bootable; please enable a boot loader.' 1>&2; true";
|
defaultText = lib.literalExpression ''
|
||||||
|
pkgs.writeShellScript "no-bootloader" '''
|
||||||
|
echo 'Warning: do not know how to make this configuration bootable; please enable a boot loader.' 1>&2
|
||||||
|
'''
|
||||||
|
'';
|
||||||
description = ''
|
description = ''
|
||||||
A program that writes a bootloader installation script to the path passed in the first command line argument.
|
A program that writes a bootloader installation script to the path passed in the first command line argument.
|
||||||
|
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ in
|
|||||||
|
|
||||||
package = mkPackageOption pkgs "systemd" {};
|
package = mkPackageOption pkgs "systemd" {};
|
||||||
|
|
||||||
enableStrictShellChecks = mkEnableOption "running shellcheck on the generated scripts for systemd units.";
|
enableStrictShellChecks = mkEnableOption "" // { description = "Whether to run shellcheck on the generated scripts for systemd units."; };
|
||||||
|
|
||||||
units = mkOption {
|
units = mkOption {
|
||||||
description = "Definition of systemd units; see {manpage}`systemd.unit(5)`.";
|
description = "Definition of systemd units; see {manpage}`systemd.unit(5)`.";
|
||||||
|
|||||||
@@ -231,13 +231,13 @@ in
|
|||||||
if [[ ! $IN_NIXOS_SYSTEMD_STAGE1 ]] && [[ "${config.system.build.etc}/etc" != "$(readlink -f /run/current-system/etc)" ]]; then
|
if [[ ! $IN_NIXOS_SYSTEMD_STAGE1 ]] && [[ "${config.system.build.etc}/etc" != "$(readlink -f /run/current-system/etc)" ]]; then
|
||||||
echo "remounting /etc..."
|
echo "remounting /etc..."
|
||||||
|
|
||||||
tmpMetadataMount=$(mktemp --directory)
|
tmpMetadataMount=$(mktemp --directory -t nixos-etc-metadata.XXXXXXXXXX)
|
||||||
mount --type erofs ${config.system.build.etcMetadataImage} $tmpMetadataMount
|
mount --type erofs ${config.system.build.etcMetadataImage} $tmpMetadataMount
|
||||||
|
|
||||||
# Mount the new /etc overlay to a temporary private mount.
|
# Mount the new /etc overlay to a temporary private mount.
|
||||||
# This needs the indirection via a private bind mount because you
|
# This needs the indirection via a private bind mount because you
|
||||||
# cannot move shared mounts.
|
# cannot move shared mounts.
|
||||||
tmpEtcMount=$(mktemp --directory)
|
tmpEtcMount=$(mktemp --directory -t nixos-etc.XXXXXXXXXX)
|
||||||
mount --bind --make-private $tmpEtcMount $tmpEtcMount
|
mount --bind --make-private $tmpEtcMount $tmpEtcMount
|
||||||
mount --type overlay overlay \
|
mount --type overlay overlay \
|
||||||
--options lowerdir=$tmpMetadataMount::${config.system.build.etcBasedir},${etcOverlayOptions} \
|
--options lowerdir=$tmpMetadataMount::${config.system.build.etcBasedir},${etcOverlayOptions} \
|
||||||
@@ -276,6 +276,22 @@ in
|
|||||||
|
|
||||||
# Unmount the top /etc mount to atomically reveal the new mount.
|
# Unmount the top /etc mount to atomically reveal the new mount.
|
||||||
umount --lazy --recursive /etc
|
umount --lazy --recursive /etc
|
||||||
|
|
||||||
|
# Unmount the temporary mount
|
||||||
|
umount --lazy "$tmpEtcMount"
|
||||||
|
rmdir "$tmpEtcMount"
|
||||||
|
|
||||||
|
# Unmount old metadata mounts
|
||||||
|
# For some reason, `findmnt /tmp --submounts` does not show the nested
|
||||||
|
# mounts. So we'll just find all mounts of type erofs and filter on the
|
||||||
|
# name of the mountpoint.
|
||||||
|
findmnt --type erofs --list --kernel --output TARGET | while read -r mountPoint; do
|
||||||
|
if [[ "$mountPoint" =~ ^/tmp/nixos-etc-metadata\..{10}$ &&
|
||||||
|
"$mountPoint" != "$tmpMetadataMount" ]]; then
|
||||||
|
umount --lazy $mountPoint
|
||||||
|
rmdir "$mountPoint"
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
'' else ''
|
'' else ''
|
||||||
# Set up the statically computed bits of /etc.
|
# Set up the statically computed bits of /etc.
|
||||||
|
|||||||
@@ -52,10 +52,26 @@ in
|
|||||||
|
|
||||||
daemon.settings =
|
daemon.settings =
|
||||||
mkOption {
|
mkOption {
|
||||||
type = settingsFormat.type;
|
type = types.submodule {
|
||||||
|
freeformType = settingsFormat.type;
|
||||||
|
options = {
|
||||||
|
live-restore = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
# Prior to NixOS 24.11, this was set to true by default, while upstream defaulted to false.
|
||||||
|
# Keep the option unset to follow upstream defaults
|
||||||
|
default = versionOlder config.system.stateVersion "24.11";
|
||||||
|
defaultText = literalExpression "lib.versionOlder config.system.stateVersion \"24.11\"";
|
||||||
|
description = ''
|
||||||
|
Allow dockerd to be restarted without affecting running container.
|
||||||
|
This option is incompatible with docker swarm.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
default = { };
|
default = { };
|
||||||
example = {
|
example = {
|
||||||
ipv6 = true;
|
ipv6 = true;
|
||||||
|
"live-restore" = true;
|
||||||
"fixed-cidr-v6" = "fd00::/80";
|
"fixed-cidr-v6" = "fd00::/80";
|
||||||
};
|
};
|
||||||
description = ''
|
description = ''
|
||||||
@@ -75,16 +91,6 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
liveRestore =
|
|
||||||
mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
description = ''
|
|
||||||
Allow dockerd to be restarted without affecting running container.
|
|
||||||
This option is incompatible with docker swarm.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
storageDriver =
|
storageDriver =
|
||||||
mkOption {
|
mkOption {
|
||||||
type = types.nullOr (types.enum ["aufs" "btrfs" "devicemapper" "overlay" "overlay2" "zfs"]);
|
type = types.nullOr (types.enum ["aufs" "btrfs" "devicemapper" "overlay" "overlay2" "zfs"]);
|
||||||
@@ -167,6 +173,11 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
(mkRemovedOptionModule ["virtualisation" "docker" "socketActivation"] "This option was removed and socket activation is now always active")
|
||||||
|
(mkAliasOptionModule ["virtualisation" "docker" "liveRestore"] ["virtualisation" "docker" "daemon" "settings" "live-restore"])
|
||||||
|
];
|
||||||
|
|
||||||
###### implementation
|
###### implementation
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [{
|
config = mkIf cfg.enable (mkMerge [{
|
||||||
@@ -253,7 +264,6 @@ in
|
|||||||
hosts = [ "fd://" ];
|
hosts = [ "fd://" ];
|
||||||
log-driver = mkDefault cfg.logDriver;
|
log-driver = mkDefault cfg.logDriver;
|
||||||
storage-driver = mkIf (cfg.storageDriver != null) (mkDefault cfg.storageDriver);
|
storage-driver = mkIf (cfg.storageDriver != null) (mkDefault cfg.storageDriver);
|
||||||
live-restore = mkDefault cfg.liveRestore;
|
|
||||||
runtimes = mkIf cfg.enableNvidia {
|
runtimes = mkIf cfg.enableNvidia {
|
||||||
nvidia = {
|
nvidia = {
|
||||||
# Use the legacy nvidia-container-runtime wrapper to allow
|
# Use the legacy nvidia-container-runtime wrapper to allow
|
||||||
@@ -266,9 +276,4 @@ in
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
|
||||||
imports = [
|
|
||||||
(mkRemovedOptionModule ["virtualisation" "docker" "socketActivation"] "This option was removed and socket activation is now always active")
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,50 +1,62 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib) getExe' literalExpression mkEnableOption mkIf mkOption mkRenamedOptionModule optionals optionalString types;
|
||||||
cfg = config.virtualisation.vmware.guest;
|
cfg = config.virtualisation.vmware.guest;
|
||||||
open-vm-tools = if cfg.headless then pkgs.open-vm-tools-headless else pkgs.open-vm-tools;
|
|
||||||
xf86inputvmmouse = pkgs.xorg.xf86inputvmmouse;
|
xf86inputvmmouse = pkgs.xorg.xf86inputvmmouse;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(lib.mkRenamedOptionModule [ "services" "vmwareGuest" ] [ "virtualisation" "vmware" "guest" ])
|
(mkRenamedOptionModule [ "services" "vmwareGuest" ] [ "virtualisation" "vmware" "guest" ])
|
||||||
];
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
maintainers = [ lib.maintainers.kjeremy ];
|
||||||
|
};
|
||||||
|
|
||||||
options.virtualisation.vmware.guest = {
|
options.virtualisation.vmware.guest = {
|
||||||
enable = lib.mkEnableOption "VMWare Guest Support";
|
enable = mkEnableOption "VMWare Guest Support";
|
||||||
headless = lib.mkOption {
|
headless = mkOption {
|
||||||
type = lib.types.bool;
|
type = types.bool;
|
||||||
default = !config.services.xserver.enable;
|
default = !config.services.xserver.enable;
|
||||||
defaultText = "!config.services.xserver.enable";
|
defaultText = literalExpression "!config.services.xserver.enable";
|
||||||
description = "Whether to disable X11-related features.";
|
description = "Whether to disable X11-related features.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = if cfg.headless then pkgs.open-vm-tools-headless else pkgs.open-vm-tools;
|
||||||
|
defaultText = literalExpression "if config.virtualisation.vmware.headless then pkgs.open-vm-tools-headless else pkgs.open-vm-tools;";
|
||||||
|
example = literalExpression "pkgs.open-vm-tools";
|
||||||
|
description = "Package providing open-vm-tools.";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
assertions = [ {
|
assertions = [ {
|
||||||
assertion = pkgs.stdenv.hostPlatform.isx86 || pkgs.stdenv.hostPlatform.isAarch64;
|
assertion = pkgs.stdenv.hostPlatform.isx86 || pkgs.stdenv.hostPlatform.isAarch64;
|
||||||
message = "VMWare guest is not currently supported on ${pkgs.stdenv.hostPlatform.system}";
|
message = "VMWare guest is not currently supported on ${pkgs.stdenv.hostPlatform.system}";
|
||||||
} ];
|
} ];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "mptspi" ];
|
boot.initrd.availableKernelModules = [ "mptspi" ];
|
||||||
boot.initrd.kernelModules = lib.optionals pkgs.stdenv.hostPlatform.isx86 [ "vmw_pvscsi" ];
|
boot.initrd.kernelModules = optionals pkgs.stdenv.hostPlatform.isx86 [ "vmw_pvscsi" ];
|
||||||
|
|
||||||
environment.systemPackages = [ open-vm-tools ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.services.vmware =
|
systemd.services.vmware =
|
||||||
{ description = "VMWare Guest Service";
|
{ description = "VMWare Guest Service";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "display-manager.service" ];
|
after = [ "display-manager.service" ];
|
||||||
unitConfig.ConditionVirtualization = "vmware";
|
unitConfig.ConditionVirtualization = "vmware";
|
||||||
serviceConfig.ExecStart = "${open-vm-tools}/bin/vmtoolsd";
|
serviceConfig.ExecStart = getExe' cfg.package "vmtoolsd";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Mount the vmblock for drag-and-drop and copy-and-paste.
|
# Mount the vmblock for drag-and-drop and copy-and-paste.
|
||||||
systemd.mounts = lib.mkIf (!cfg.headless) [
|
systemd.mounts = mkIf (!cfg.headless) [
|
||||||
{
|
{
|
||||||
description = "VMware vmblock fuse mount";
|
description = "VMware vmblock fuse mount";
|
||||||
documentation = [ "https://github.com/vmware/open-vm-tools/blob/master/open-vm-tools/vmblock-fuse/design.txt" ];
|
documentation = [ "https://github.com/vmware/open-vm-tools/blob/master/open-vm-tools/vmblock-fuse/design.txt" ];
|
||||||
unitConfig.ConditionVirtualization = "vmware";
|
unitConfig.ConditionVirtualization = "vmware";
|
||||||
what = "${open-vm-tools}/bin/vmware-vmblock-fuse";
|
what = getExe' cfg.package "vmware-vmblock-fuse";
|
||||||
where = "/run/vmblock-fuse";
|
where = "/run/vmblock-fuse";
|
||||||
type = "fuse";
|
type = "fuse";
|
||||||
options = "subtype=vmware-vmblock,default_permissions,allow_other";
|
options = "subtype=vmware-vmblock,default_permissions,allow_other";
|
||||||
@@ -52,19 +64,19 @@ in
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
security.wrappers.vmware-user-suid-wrapper = lib.mkIf (!cfg.headless) {
|
security.wrappers.vmware-user-suid-wrapper = mkIf (!cfg.headless) {
|
||||||
setuid = true;
|
setuid = true;
|
||||||
owner = "root";
|
owner = "root";
|
||||||
group = "root";
|
group = "root";
|
||||||
source = "${open-vm-tools}/bin/vmware-user-suid-wrapper";
|
source = getExe' cfg.package "vmware-user-suid-wrapper";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.etc.vmware-tools.source = "${open-vm-tools}/etc/vmware-tools/*";
|
environment.etc.vmware-tools.source = "${cfg.package}/etc/vmware-tools/*";
|
||||||
|
|
||||||
services.xserver = lib.mkIf (!cfg.headless) {
|
services.xserver = mkIf (!cfg.headless) {
|
||||||
modules = lib.optionals pkgs.stdenv.hostPlatform.isx86 [ xf86inputvmmouse ];
|
modules = optionals pkgs.stdenv.hostPlatform.isx86 [ xf86inputvmmouse ];
|
||||||
|
|
||||||
config = lib.optionalString (pkgs.stdenv.hostPlatform.isx86) ''
|
config = optionalString (pkgs.stdenv.hostPlatform.isx86) ''
|
||||||
Section "InputClass"
|
Section "InputClass"
|
||||||
Identifier "VMMouse"
|
Identifier "VMMouse"
|
||||||
MatchDevicePath "/dev/input/event*"
|
MatchDevicePath "/dev/input/event*"
|
||||||
@@ -74,10 +86,10 @@ in
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
displayManager.sessionCommands = ''
|
displayManager.sessionCommands = ''
|
||||||
${open-vm-tools}/bin/vmware-user-suid-wrapper
|
${getExe' cfg.package "vmware-user-suid-wrapper"}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
services.udev.packages = [ open-vm-tools ];
|
services.udev.packages = [ cfg.package ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,9 +27,14 @@
|
|||||||
specialisation.new-generation.configuration = {
|
specialisation.new-generation.configuration = {
|
||||||
environment.etc."newgen".text = "newgen";
|
environment.etc."newgen".text = "newgen";
|
||||||
};
|
};
|
||||||
|
specialisation.newer-generation.configuration = {
|
||||||
|
environment.etc."newergen".text = "newergen";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = /* python */ ''
|
||||||
|
newergen = machine.succeed("realpath /run/current-system/specialisation/newer-generation/bin/switch-to-configuration").rstrip()
|
||||||
|
|
||||||
with subtest("/run/etc-metadata/ is mounted"):
|
with subtest("/run/etc-metadata/ is mounted"):
|
||||||
print(machine.succeed("mountpoint /run/etc-metadata"))
|
print(machine.succeed("mountpoint /run/etc-metadata"))
|
||||||
|
|
||||||
@@ -79,5 +84,13 @@
|
|||||||
print(machine.succeed("ls /etc/mountpoint"))
|
print(machine.succeed("ls /etc/mountpoint"))
|
||||||
print(machine.succeed("stat /etc/mountpoint/extra-file"))
|
print(machine.succeed("stat /etc/mountpoint/extra-file"))
|
||||||
print(machine.succeed("findmnt /etc/filemount"))
|
print(machine.succeed("findmnt /etc/filemount"))
|
||||||
|
|
||||||
|
machine.succeed(f"{newergen} switch")
|
||||||
|
|
||||||
|
tmpMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc\\..*' | wc -l").rstrip()
|
||||||
|
metaMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc-metadata\\..*' | wc -l").rstrip()
|
||||||
|
|
||||||
|
assert tmpMounts == "0", f"Found {tmpMounts} remaining tmpmounts"
|
||||||
|
assert metaMounts == "1", f"Found {metaMounts} remaining metamounts"
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,9 +15,14 @@
|
|||||||
specialisation.new-generation.configuration = {
|
specialisation.new-generation.configuration = {
|
||||||
environment.etc."newgen".text = "newgen";
|
environment.etc."newgen".text = "newgen";
|
||||||
};
|
};
|
||||||
|
specialisation.newer-generation.configuration = {
|
||||||
|
environment.etc."newergen".text = "newergen";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = /* python */ ''
|
||||||
|
newergen = machine.succeed("realpath /run/current-system/specialisation/newer-generation/bin/switch-to-configuration").rstrip()
|
||||||
|
|
||||||
with subtest("/run/etc-metadata/ is mounted"):
|
with subtest("/run/etc-metadata/ is mounted"):
|
||||||
print(machine.succeed("mountpoint /run/etc-metadata"))
|
print(machine.succeed("mountpoint /run/etc-metadata"))
|
||||||
|
|
||||||
@@ -55,5 +60,14 @@
|
|||||||
print(machine.succeed("findmnt /etc/mountpoint"))
|
print(machine.succeed("findmnt /etc/mountpoint"))
|
||||||
print(machine.succeed("stat /etc/mountpoint/extra-file"))
|
print(machine.succeed("stat /etc/mountpoint/extra-file"))
|
||||||
print(machine.succeed("findmnt /etc/filemount"))
|
print(machine.succeed("findmnt /etc/filemount"))
|
||||||
|
|
||||||
|
machine.succeed(f"{newergen} switch")
|
||||||
|
assert machine.succeed("cat /etc/newergen") == "newergen"
|
||||||
|
|
||||||
|
tmpMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc\\..*' | wc -l").rstrip()
|
||||||
|
metaMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc-metadata\\..*' | wc -l").rstrip()
|
||||||
|
|
||||||
|
assert tmpMounts == "0", f"Found {tmpMounts} remaining tmpmounts"
|
||||||
|
assert metaMounts == "1", f"Found {metaMounts} remaining metamounts"
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -356,6 +356,46 @@ let
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exportarr-sonarr = let apikey = "eccff6a992bc2e4b88e46d064b26bb4e"; in {
|
||||||
|
nodeName = "exportarr_sonarr";
|
||||||
|
exporterConfig = {
|
||||||
|
enable = true;
|
||||||
|
url = "http://127.0.0.1:8989";
|
||||||
|
apiKeyFile = pkgs.writeText "dummy-api-key" apikey;
|
||||||
|
};
|
||||||
|
metricProvider = {
|
||||||
|
services.sonarr.enable = true;
|
||||||
|
systemd.services.sonarr.serviceConfig.ExecStartPre =
|
||||||
|
let
|
||||||
|
sonarr_config = pkgs.writeText "config.xml" ''
|
||||||
|
<Config>
|
||||||
|
<LogLevel>info</LogLevel>
|
||||||
|
<EnableSsl>False</EnableSsl>
|
||||||
|
<Port>8989</Port>
|
||||||
|
<SslPort>9898</SslPort>
|
||||||
|
<UrlBase></UrlBase>
|
||||||
|
<BindAddress>*</BindAddress>
|
||||||
|
<ApiKey>${apikey}</ApiKey>
|
||||||
|
<AuthenticationMethod>None</AuthenticationMethod>
|
||||||
|
<UpdateMechanism>BuiltIn</UpdateMechanism>
|
||||||
|
<Branch>main</Branch>
|
||||||
|
<InstanceName>Sonarr</InstanceName>
|
||||||
|
</Config>
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
[
|
||||||
|
''${pkgs.coreutils}/bin/install -D -m 777 ${sonarr_config} -T /var/lib/sonarr/.config/NzbDrone/config.xml''
|
||||||
|
];
|
||||||
|
};
|
||||||
|
exporterTest = ''
|
||||||
|
wait_for_unit("sonarr.service")
|
||||||
|
wait_for_open_port(8989)
|
||||||
|
wait_for_unit("prometheus-exportarr-sonarr-exporter.service")
|
||||||
|
wait_for_open_port(9708)
|
||||||
|
succeed("curl -sSf http://localhost:9708/metrics | grep sonarr_series_total")
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
fastly = {
|
fastly = {
|
||||||
exporterConfig = {
|
exporterConfig = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
+36
-20
@@ -53,11 +53,8 @@ in {
|
|||||||
environment.systemPackages = [ pkgs.socat ]; # for the socket activation stuff
|
environment.systemPackages = [ pkgs.socat ]; # for the socket activation stuff
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
|
|
||||||
# For boot/switch testing
|
# Test that no boot loader still switches, e.g. in the ISO
|
||||||
system.build.installBootLoader = lib.mkForce (pkgs.writeShellScript "install-dummy-loader" ''
|
boot.loader.grub.enable = false;
|
||||||
echo "installing dummy bootloader"
|
|
||||||
touch /tmp/bootloader-installed
|
|
||||||
'');
|
|
||||||
|
|
||||||
specialisation = rec {
|
specialisation = rec {
|
||||||
brokenInitInterface.configuration.config.system.extraSystemBuilderCmds = ''
|
brokenInitInterface.configuration.config.system.extraSystemBuilderCmds = ''
|
||||||
@@ -596,6 +593,19 @@ in {
|
|||||||
imports = [ slice.configuration ];
|
imports = [ slice.configuration ];
|
||||||
systemd.slices.testslice.sliceConfig.MemoryMax = lib.mkForce null;
|
systemd.slices.testslice.sliceConfig.MemoryMax = lib.mkForce null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dbusReload.configuration = { config, ... }: let
|
||||||
|
dbusService = {
|
||||||
|
"dbus" = "dbus";
|
||||||
|
"broker" = "dbus-broker";
|
||||||
|
}.${config.services.dbus.implementation};
|
||||||
|
in {
|
||||||
|
# We want to make sure that stc catches this as a reload,
|
||||||
|
# not a restart.
|
||||||
|
systemd.services.${dbusService}.restartTriggers = [
|
||||||
|
(pkgs.writeText "dbus-reload-dummy" "dbus reload dummy")
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -672,22 +682,18 @@ in {
|
|||||||
"${stderrRunner} ${otherSystem}/bin/switch-to-configuration test"
|
"${stderrRunner} ${otherSystem}/bin/switch-to-configuration test"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
boot_loader_text = "Warning: do not know how to make this configuration bootable; please enable a boot loader."
|
||||||
|
|
||||||
with subtest("actions"):
|
with subtest("actions"):
|
||||||
# boot action
|
# boot action
|
||||||
machine.fail("test -f /tmp/bootloader-installed")
|
|
||||||
out = switch_to_specialisation("${machine}", "simpleService", action="boot")
|
out = switch_to_specialisation("${machine}", "simpleService", action="boot")
|
||||||
assert_contains(out, "installing dummy bootloader")
|
assert_contains(out, boot_loader_text)
|
||||||
assert_lacks(out, "activating the configuration...") # good indicator of a system activation
|
assert_lacks(out, "activating the configuration...") # good indicator of a system activation
|
||||||
machine.succeed("test -f /tmp/bootloader-installed")
|
|
||||||
machine.succeed("rm /tmp/bootloader-installed")
|
|
||||||
|
|
||||||
# switch action
|
# switch action
|
||||||
machine.fail("test -f /tmp/bootloader-installed")
|
|
||||||
out = switch_to_specialisation("${machine}", "", action="switch")
|
out = switch_to_specialisation("${machine}", "", action="switch")
|
||||||
assert_contains(out, "installing dummy bootloader")
|
assert_contains(out, boot_loader_text)
|
||||||
assert_contains(out, "activating the configuration...") # good indicator of a system activation
|
assert_contains(out, "activating the configuration...") # good indicator of a system activation
|
||||||
machine.succeed("test -f /tmp/bootloader-installed")
|
|
||||||
|
|
||||||
# test and dry-activate actions are tested further down below
|
# test and dry-activate actions are tested further down below
|
||||||
|
|
||||||
@@ -749,7 +755,7 @@ in {
|
|||||||
out = switch_to_specialisation("${machine}", "")
|
out = switch_to_specialisation("${machine}", "")
|
||||||
assert_contains(out, "stopping the following units: test.mount\n")
|
assert_contains(out, "stopping the following units: test.mount\n")
|
||||||
assert_lacks(out, "NOT restarting the following changed units:")
|
assert_lacks(out, "NOT restarting the following changed units:")
|
||||||
assert_contains(out, "reloading the following units: ${dbusService}\n")
|
assert_lacks(out, "reloading the following units:")
|
||||||
assert_lacks(out, "\nrestarting the following units:")
|
assert_lacks(out, "\nrestarting the following units:")
|
||||||
assert_lacks(out, "\nstarting the following units:")
|
assert_lacks(out, "\nstarting the following units:")
|
||||||
assert_lacks(out, "the following new units were started:")
|
assert_lacks(out, "the following new units were started:")
|
||||||
@@ -757,7 +763,7 @@ in {
|
|||||||
out = switch_to_specialisation("${machine}", "storeMountModified")
|
out = switch_to_specialisation("${machine}", "storeMountModified")
|
||||||
assert_lacks(out, "stopping the following units:")
|
assert_lacks(out, "stopping the following units:")
|
||||||
assert_contains(out, "NOT restarting the following changed units: -.mount")
|
assert_contains(out, "NOT restarting the following changed units: -.mount")
|
||||||
assert_contains(out, "reloading the following units: ${dbusService}\n")
|
assert_lacks(out, "reloading the following units:")
|
||||||
assert_lacks(out, "\nrestarting the following units:")
|
assert_lacks(out, "\nrestarting the following units:")
|
||||||
assert_lacks(out, "\nstarting the following units:")
|
assert_lacks(out, "\nstarting the following units:")
|
||||||
assert_lacks(out, "the following new units were started:")
|
assert_lacks(out, "the following new units were started:")
|
||||||
@@ -768,7 +774,7 @@ in {
|
|||||||
out = switch_to_specialisation("${machine}", "swap")
|
out = switch_to_specialisation("${machine}", "swap")
|
||||||
assert_lacks(out, "stopping the following units:")
|
assert_lacks(out, "stopping the following units:")
|
||||||
assert_lacks(out, "NOT restarting the following changed units:")
|
assert_lacks(out, "NOT restarting the following changed units:")
|
||||||
assert_contains(out, "reloading the following units: ${dbusService}\n")
|
assert_lacks(out, "reloading the following units:")
|
||||||
assert_lacks(out, "\nrestarting the following units:")
|
assert_lacks(out, "\nrestarting the following units:")
|
||||||
assert_lacks(out, "\nstarting the following units:")
|
assert_lacks(out, "\nstarting the following units:")
|
||||||
assert_contains(out, "the following new units were started: swapfile.swap")
|
assert_contains(out, "the following new units were started: swapfile.swap")
|
||||||
@@ -777,7 +783,7 @@ in {
|
|||||||
assert_contains(out, "stopping swap device: /swapfile")
|
assert_contains(out, "stopping swap device: /swapfile")
|
||||||
assert_lacks(out, "stopping the following units:")
|
assert_lacks(out, "stopping the following units:")
|
||||||
assert_lacks(out, "NOT restarting the following changed units:")
|
assert_lacks(out, "NOT restarting the following changed units:")
|
||||||
assert_contains(out, "reloading the following units: ${dbusService}\n")
|
assert_lacks(out, "reloading the following units:")
|
||||||
assert_lacks(out, "\nrestarting the following units:")
|
assert_lacks(out, "\nrestarting the following units:")
|
||||||
assert_lacks(out, "\nstarting the following units:")
|
assert_lacks(out, "\nstarting the following units:")
|
||||||
assert_lacks(out, "the following new units were started:")
|
assert_lacks(out, "the following new units were started:")
|
||||||
@@ -795,10 +801,10 @@ in {
|
|||||||
|
|
||||||
# Start a simple service
|
# Start a simple service
|
||||||
out = switch_to_specialisation("${machine}", "simpleService")
|
out = switch_to_specialisation("${machine}", "simpleService")
|
||||||
assert_lacks(out, "installing dummy bootloader") # test does not install a bootloader
|
assert_lacks(out, boot_loader_text) # test does not install a bootloader
|
||||||
assert_lacks(out, "stopping the following units:")
|
assert_lacks(out, "stopping the following units:")
|
||||||
assert_lacks(out, "NOT restarting the following changed units:")
|
assert_lacks(out, "NOT restarting the following changed units:")
|
||||||
assert_contains(out, "reloading the following units: ${dbusService}\n") # huh
|
assert_lacks(out, "reloading the following units:")
|
||||||
assert_lacks(out, "\nrestarting the following units:")
|
assert_lacks(out, "\nrestarting the following units:")
|
||||||
assert_lacks(out, "\nstarting the following units:")
|
assert_lacks(out, "\nstarting the following units:")
|
||||||
assert_contains(out, "the following new units were started: test.service\n")
|
assert_contains(out, "the following new units were started: test.service\n")
|
||||||
@@ -872,10 +878,10 @@ in {
|
|||||||
# Ensure the service can be started when the activation script isn't in toplevel
|
# Ensure the service can be started when the activation script isn't in toplevel
|
||||||
# This is a lot like "Start a simple service", except activation-only deps could be gc-ed
|
# This is a lot like "Start a simple service", except activation-only deps could be gc-ed
|
||||||
out = run_switch("${nodes.machine.specialisation.simpleServiceSeparateActivationScript.configuration.system.build.separateActivationScript}/bin/switch-to-configuration");
|
out = run_switch("${nodes.machine.specialisation.simpleServiceSeparateActivationScript.configuration.system.build.separateActivationScript}/bin/switch-to-configuration");
|
||||||
assert_lacks(out, "installing dummy bootloader") # test does not install a bootloader
|
assert_lacks(out, boot_loader_text) # test does not install a bootloader
|
||||||
assert_lacks(out, "stopping the following units:")
|
assert_lacks(out, "stopping the following units:")
|
||||||
assert_lacks(out, "NOT restarting the following changed units:")
|
assert_lacks(out, "NOT restarting the following changed units:")
|
||||||
assert_contains(out, "reloading the following units: ${dbusService}\n") # huh
|
assert_lacks(out, "reloading the following units:")
|
||||||
assert_lacks(out, "\nrestarting the following units:")
|
assert_lacks(out, "\nrestarting the following units:")
|
||||||
assert_lacks(out, "\nstarting the following units:")
|
assert_lacks(out, "\nstarting the following units:")
|
||||||
assert_contains(out, "the following new units were started: test.service\n")
|
assert_contains(out, "the following new units were started: test.service\n")
|
||||||
@@ -1429,5 +1435,15 @@ in {
|
|||||||
assert_lacks(out, "the following new units were started:")
|
assert_lacks(out, "the following new units were started:")
|
||||||
machine.succeed("systemctl start testservice.service")
|
machine.succeed("systemctl start testservice.service")
|
||||||
machine.succeed("echo 1 > /proc/sys/vm/panic_on_oom") # disallow OOMing
|
machine.succeed("echo 1 > /proc/sys/vm/panic_on_oom") # disallow OOMing
|
||||||
|
|
||||||
|
with subtest("dbus reloads"):
|
||||||
|
out = switch_to_specialisation("${machine}", "")
|
||||||
|
out = switch_to_specialisation("${machine}", "dbusReload")
|
||||||
|
assert_lacks(out, "stopping the following units:")
|
||||||
|
assert_lacks(out, "NOT restarting the following changed units:")
|
||||||
|
assert_contains(out, "reloading the following units: ${dbusService}\n")
|
||||||
|
assert_lacks(out, "\nrestarting the following units:")
|
||||||
|
assert_lacks(out, "\nstarting the following units:")
|
||||||
|
assert_lacks(out, "the following new units were started:")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,33 +1,41 @@
|
|||||||
# This test runs influxdb and checks if influxdb is up and running
|
# This test runs victoriametrics and checks if victoriametrics is able to write points and run simple query
|
||||||
|
|
||||||
import ./make-test-python.nix ({ pkgs, ...} : {
|
import ./make-test-python.nix (
|
||||||
name = "victoriametrics";
|
{ pkgs, ... }:
|
||||||
meta = with pkgs.lib.maintainers; {
|
{
|
||||||
maintainers = [ yorickvp ];
|
name = "victoriametrics";
|
||||||
};
|
meta = with pkgs.lib.maintainers; {
|
||||||
|
maintainers = [
|
||||||
nodes = {
|
yorickvp
|
||||||
one = { ... }: {
|
ryan4yin
|
||||||
services.victoriametrics.enable = true;
|
];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
testScript = ''
|
nodes = {
|
||||||
start_all()
|
one =
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
services.victoriametrics.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
one.wait_for_unit("victoriametrics.service")
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
|
||||||
# write some points and run simple query
|
one.wait_for_unit("victoriametrics.service")
|
||||||
out = one.succeed(
|
|
||||||
"curl -f -d 'measurement,tag1=value1,tag2=value2 field1=123,field2=1.23' -X POST 'http://localhost:8428/write'"
|
# write some points and run simple query
|
||||||
)
|
out = one.succeed(
|
||||||
cmd = (
|
"curl -f -d 'measurement,tag1=value1,tag2=value2 field1=123,field2=1.23' -X POST 'http://localhost:8428/write'"
|
||||||
"""curl -f -s -G 'http://localhost:8428/api/v1/export' -d 'match={__name__!=""}'"""
|
)
|
||||||
)
|
cmd = (
|
||||||
# data takes a while to appear
|
"""curl -f -s -G 'http://localhost:8428/api/v1/export' -d 'match={__name__!=""}'"""
|
||||||
one.wait_until_succeeds(f"[[ $({cmd} | wc -l) -ne 0 ]]")
|
)
|
||||||
out = one.succeed(cmd)
|
# data takes a while to appear
|
||||||
assert '"values":[123]' in out
|
one.wait_until_succeeds(f"[[ $({cmd} | wc -l) -ne 0 ]]")
|
||||||
assert '"values":[1.23]' in out
|
out = one.succeed(cmd)
|
||||||
'';
|
assert '"values":[123]' in out
|
||||||
})
|
assert '"values":[1.23]' in out
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|||||||
@@ -92,13 +92,13 @@ in
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "cmus";
|
pname = "cmus";
|
||||||
version = "2.11.0";
|
version = "2.12.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cmus";
|
owner = "cmus";
|
||||||
repo = "cmus";
|
repo = "cmus";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-kUJC+ORLkYD57mPL/1p5VCm9yiNzVdOZhxp7sVP6oMw=";
|
hash = "sha256-8hgibGtkiwzenMI9YImIApRmw2EzTwE6RhglALpUkp4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config ];
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
|||||||
@@ -1385,6 +1385,13 @@ let
|
|||||||
|
|
||||||
org-trello = ignoreCompilationError super.org-trello; # elisp error
|
org-trello = ignoreCompilationError super.org-trello; # elisp error
|
||||||
|
|
||||||
|
# Requires xwidgets compiled into emacs, so mark this package
|
||||||
|
# as broken if emacs hasn't been compiled with the flag.
|
||||||
|
org-xlatex =
|
||||||
|
if self.emacs.withXwidgets
|
||||||
|
then super.org-xlatex
|
||||||
|
else markBroken super.org-xlatex;
|
||||||
|
|
||||||
# Optimizer error: too much on the stack
|
# Optimizer error: too much on the stack
|
||||||
orgnav = ignoreCompilationError super.orgnav;
|
orgnav = ignoreCompilationError super.orgnav;
|
||||||
|
|
||||||
|
|||||||
@@ -407,6 +407,7 @@ mkDerivation (finalAttrs: {
|
|||||||
passthru = {
|
passthru = {
|
||||||
inherit withNativeCompilation;
|
inherit withNativeCompilation;
|
||||||
inherit withTreeSitter;
|
inherit withTreeSitter;
|
||||||
|
inherit withXwidgets;
|
||||||
pkgs = recurseIntoAttrs (emacsPackagesFor finalAttrs.finalPackage);
|
pkgs = recurseIntoAttrs (emacsPackagesFor finalAttrs.finalPackage);
|
||||||
tests = { inherit (nixosTests) emacs-daemon; };
|
tests = { inherit (nixosTests) emacs-daemon; };
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -41,13 +41,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "gnome-builder";
|
pname = "gnome-builder";
|
||||||
version = "47.1";
|
version = "47.2";
|
||||||
|
|
||||||
outputs = [ "out" "devdoc" ];
|
outputs = [ "out" "devdoc" ];
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/gnome-builder/${lib.versions.major finalAttrs.version}/gnome-builder-${finalAttrs.version}.tar.xz";
|
url = "mirror://gnome/sources/gnome-builder/${lib.versions.major finalAttrs.version}/gnome-builder-${finalAttrs.version}.tar.xz";
|
||||||
hash = "sha256-5vduvPbFXMmC1EYAWdPRVtm0ESf7erZg7LqdyWBok8U=";
|
hash = "sha256-Roe5PEfNHjNmWi3FA3kLYhPugnhy/ABNl40UvL+ptJU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,75 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
rustPlatform,
|
|
||||||
fetchFromGitHub,
|
|
||||||
pkg-config,
|
|
||||||
openssl,
|
|
||||||
stdenv,
|
|
||||||
vimUtils,
|
|
||||||
darwin,
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
version = "2024-10-18";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "yetone";
|
|
||||||
repo = "avante.nvim";
|
|
||||||
rev = "36b23cef16c2c624c34bea213f01c06782d2ca40";
|
|
||||||
hash = "sha256-QUFcJMbfr5BAS04ig1IHLCMLACeQhFVH9ZCH/VD8i8Y=";
|
|
||||||
};
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Neovim plugin designed to emulate the behaviour of the Cursor AI IDE";
|
|
||||||
homepage = "https://github.com/yetone/avante.nvim";
|
|
||||||
license = licenses.asl20;
|
|
||||||
maintainers = with lib.maintainers; [
|
|
||||||
ttrei
|
|
||||||
aarnphm
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
avante-nvim-lib = rustPlatform.buildRustPackage {
|
|
||||||
pname = "avante-nvim-lib";
|
|
||||||
inherit version src meta;
|
|
||||||
cargoLock = {
|
|
||||||
lockFile = ./Cargo.lock;
|
|
||||||
outputHashes = {
|
|
||||||
"mlua-0.10.0-beta.1" = "sha256-ZEZFATVldwj0pmlmi0s5VT0eABA15qKhgjmganrhGBY=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
pkg-config
|
|
||||||
];
|
|
||||||
|
|
||||||
buildInputs =
|
|
||||||
[
|
|
||||||
openssl
|
|
||||||
]
|
|
||||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
|
||||||
darwin.apple_sdk.frameworks.Security
|
|
||||||
];
|
|
||||||
|
|
||||||
buildFeatures = [ "luajit" ];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
|
|
||||||
vimUtils.buildVimPlugin {
|
|
||||||
pname = "avante.nvim";
|
|
||||||
inherit version src meta;
|
|
||||||
|
|
||||||
postInstall =
|
|
||||||
let
|
|
||||||
ext = stdenv.hostPlatform.extensions.sharedLibrary;
|
|
||||||
in
|
|
||||||
''
|
|
||||||
mkdir -p $out/build
|
|
||||||
ln -s ${avante-nvim-lib}/lib/libavante_repo_map${ext} $out/build/avante_repo_map${ext}
|
|
||||||
ln -s ${avante-nvim-lib}/lib/libavante_templates${ext} $out/build/avante_templates${ext}
|
|
||||||
ln -s ${avante-nvim-lib}/lib/libavante_tokenizers${ext} $out/build/avante_tokenizers${ext}
|
|
||||||
'';
|
|
||||||
|
|
||||||
doInstallCheck = true;
|
|
||||||
nvimRequireCheck = "avante";
|
|
||||||
}
|
|
||||||
@@ -6,12 +6,12 @@
|
|||||||
vimUtils,
|
vimUtils,
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
version = "0.5.0";
|
version = "0.5.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Saghen";
|
owner = "Saghen";
|
||||||
repo = "blink.cmp";
|
repo = "blink.cmp";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-DmHMySR1K4j/z5+bZDJHIuqo5BqRP9XaOMEdCb78chk=";
|
hash = "sha256-LWA3rPvqq+zeK+8zS1kM1BaQ+uaBmlHJy4o7IaT1zsg=";
|
||||||
};
|
};
|
||||||
libExt = if stdenv.hostPlatform.isDarwin then "dylib" else "so";
|
libExt = if stdenv.hostPlatform.isDarwin then "dylib" else "so";
|
||||||
blink-fuzzy-lib = rustPlatform.buildRustPackage {
|
blink-fuzzy-lib = rustPlatform.buildRustPackage {
|
||||||
|
|||||||
@@ -18851,4 +18851,28 @@ final: prev:
|
|||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/jghauser/follow-md-links.nvim/";
|
meta.homepage = "https://github.com/jghauser/follow-md-links.nvim/";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
avante-nvim = buildVimPlugin {
|
||||||
|
pname = "avante.nvim";
|
||||||
|
version = "2024-11-04";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "yetone";
|
||||||
|
repo = "avante.nvim";
|
||||||
|
rev = "5db2a0f92ff0ac4cfde27266cbc91eabdc2bb7f5";
|
||||||
|
sha256 = "sha256-bLHKJfmn8a57U3WRrvib7yWUgO8PI1V0H77Q+xsGlfM=";
|
||||||
|
};
|
||||||
|
meta.homepage = "https://github.com/yetone/avante.nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
muren-nvim = buildVimPlugin {
|
||||||
|
pname = "muren.nvim";
|
||||||
|
version = "2023-08-26";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "AckslD";
|
||||||
|
repo = "muren.nvim";
|
||||||
|
rev = "818c09097dba1322b2ca099e35f7471feccfef93";
|
||||||
|
sha256 = "sha256-KDXytsyvUQVZoKdr6ieoUE3e0v5NT2gf3M1d15aYVFs=";
|
||||||
|
};
|
||||||
|
meta.homepage = "https://github.com/AckslD/muren.nvim/";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -166,14 +166,66 @@ in
|
|||||||
nvimRequireCheck = "autosave";
|
nvimRequireCheck = "autosave";
|
||||||
};
|
};
|
||||||
|
|
||||||
avante-nvim = (callPackage ./avante-nvim { }).overrideAttrs {
|
avante-nvim = super.avante-nvim.overrideAttrs (
|
||||||
dependencies = with self; [
|
oldAttrs:
|
||||||
dressing-nvim
|
let
|
||||||
nui-nvim
|
avante-nvim-lib = rustPlatform.buildRustPackage {
|
||||||
nvim-treesitter
|
pname = "avante-nvim-lib";
|
||||||
plenary-nvim
|
inherit (oldAttrs) version src;
|
||||||
];
|
|
||||||
};
|
cargoHash = "sha256-Hh7qAmGtxfWtkBBsNq0iVTruUSe0duE4tXaajDIt8zQ=";
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
openssl
|
||||||
|
];
|
||||||
|
|
||||||
|
buildFeatures = [ "luajit" ];
|
||||||
|
|
||||||
|
checkFlags = [
|
||||||
|
# Disabled because they access the network.
|
||||||
|
"--skip=test_hf"
|
||||||
|
"--skip=test_public_url"
|
||||||
|
"--skip=test_roundtrip"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
dependencies = with self; [
|
||||||
|
dressing-nvim
|
||||||
|
nui-nvim
|
||||||
|
nvim-treesitter
|
||||||
|
plenary-nvim
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall =
|
||||||
|
let
|
||||||
|
ext = stdenv.hostPlatform.extensions.sharedLibrary;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
mkdir -p $out/build
|
||||||
|
ln -s ${avante-nvim-lib}/lib/libavante_repo_map${ext} $out/build/avante_repo_map${ext}
|
||||||
|
ln -s ${avante-nvim-lib}/lib/libavante_templates${ext} $out/build/avante_templates${ext}
|
||||||
|
ln -s ${avante-nvim-lib}/lib/libavante_tokenizers${ext} $out/build/avante_tokenizers${ext}
|
||||||
|
'';
|
||||||
|
|
||||||
|
doInstallCheck = true;
|
||||||
|
nvimRequireCheck = "avante";
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Neovim plugin designed to emulate the behaviour of the Cursor AI IDE";
|
||||||
|
homepage = "https://github.com/yetone/avante.nvim";
|
||||||
|
license = lib.licenses.asl20;
|
||||||
|
maintainers = with lib.maintainers; [
|
||||||
|
ttrei
|
||||||
|
aarnphm
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
barbecue-nvim = super.barbecue-nvim.overrideAttrs {
|
barbecue-nvim = super.barbecue-nvim.overrideAttrs {
|
||||||
dependencies = with self; [
|
dependencies = with self; [
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ https://github.com/m4xshen/autoclose.nvim/,HEAD,
|
|||||||
https://github.com/gaoDean/autolist.nvim/,,
|
https://github.com/gaoDean/autolist.nvim/,,
|
||||||
https://github.com/vim-scripts/autoload_cscope.vim/,,
|
https://github.com/vim-scripts/autoload_cscope.vim/,,
|
||||||
https://github.com/nullishamy/autosave.nvim/,HEAD,
|
https://github.com/nullishamy/autosave.nvim/,HEAD,
|
||||||
|
https://github.com/yetone/avante.nvim/,HEAD,
|
||||||
https://github.com/rafi/awesome-vim-colorschemes/,,
|
https://github.com/rafi/awesome-vim-colorschemes/,,
|
||||||
https://github.com/AhmedAbdulrahman/aylin.vim/,,
|
https://github.com/AhmedAbdulrahman/aylin.vim/,,
|
||||||
https://github.com/ayu-theme/ayu-vim/,,
|
https://github.com/ayu-theme/ayu-vim/,,
|
||||||
@@ -604,6 +605,7 @@ https://github.com/shaunsingh/moonlight.nvim/,,pure-lua
|
|||||||
https://github.com/leafo/moonscript-vim/,HEAD,
|
https://github.com/leafo/moonscript-vim/,HEAD,
|
||||||
https://github.com/yegappan/mru/,,
|
https://github.com/yegappan/mru/,,
|
||||||
https://github.com/smoka7/multicursors.nvim/,HEAD,
|
https://github.com/smoka7/multicursors.nvim/,HEAD,
|
||||||
|
https://github.com/AckslD/muren.nvim/,HEAD,
|
||||||
https://github.com/jbyuki/nabla.nvim/,HEAD,
|
https://github.com/jbyuki/nabla.nvim/,HEAD,
|
||||||
https://github.com/ncm2/ncm2/,,
|
https://github.com/ncm2/ncm2/,,
|
||||||
https://github.com/ncm2/ncm2-bufword/,,
|
https://github.com/ncm2/ncm2-bufword/,,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
stdenv,
|
stdenv,
|
||||||
darwin,
|
apple-sdk_11,
|
||||||
lib,
|
lib,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
cmake,
|
cmake,
|
||||||
@@ -91,7 +91,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
++ lib.optional stdenv.hostPlatform.isLinux alsa-lib
|
++ lib.optional stdenv.hostPlatform.isLinux alsa-lib
|
||||||
++ lib.optional enableWayland wayland
|
++ lib.optional enableWayland wayland
|
||||||
++ lib.optional enableVncRenderer libvncserver
|
++ lib.optional enableVncRenderer libvncserver
|
||||||
++ lib.optional stdenv.hostPlatform.isDarwin darwin.apple_sdk_11_0.libs.xpc;
|
++ lib.optional stdenv.hostPlatform.isDarwin apple-sdk_11;
|
||||||
|
|
||||||
cmakeFlags =
|
cmakeFlags =
|
||||||
lib.optional stdenv.hostPlatform.isDarwin "-DCMAKE_MACOSX_BUNDLE=OFF"
|
lib.optional stdenv.hostPlatform.isDarwin "-DCMAKE_MACOSX_BUNDLE=OFF"
|
||||||
|
|||||||
@@ -5,23 +5,20 @@
|
|||||||
}:
|
}:
|
||||||
bambu-studio.overrideAttrs (
|
bambu-studio.overrideAttrs (
|
||||||
finalAttrs: previousAttrs: {
|
finalAttrs: previousAttrs: {
|
||||||
version = "2.1.1";
|
version = "2.2.0";
|
||||||
pname = "orca-slicer";
|
pname = "orca-slicer";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "SoftFever";
|
owner = "SoftFever";
|
||||||
repo = "OrcaSlicer";
|
repo = "OrcaSlicer";
|
||||||
rev = "v${finalAttrs.version}";
|
rev = "v${finalAttrs.version}";
|
||||||
hash = "sha256-7fusdSYpZb4sYl5L/+81PzMd42Nsejj+kCZsq0f7eIk=";
|
hash = "sha256-h+cHWhrp894KEbb3ic2N4fNTn13WlOSYoMsaof0RvRI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches =[
|
patches = [
|
||||||
# FIXME: only required for 2.1.1, can be removed in the next version
|
|
||||||
./patches/0002-fix-build-for-gcc-13.diff
|
|
||||||
# Fix for webkitgtk linking
|
# Fix for webkitgtk linking
|
||||||
./patches/0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
|
./patches/0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
|
||||||
# Fix build with cgal-5.6.1+
|
|
||||||
./patches/meshboolean-const.patch
|
|
||||||
./patches/dont-link-opencv-world-orca.patch
|
./patches/dont-link-opencv-world-orca.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp
|
|
||||||
index 11a36dfabc..77a44e699b 100644
|
|
||||||
--- a/src/slic3r/Utils/Http.cpp
|
|
||||||
+++ b/src/slic3r/Utils/Http.cpp
|
|
||||||
@@ -88,9 +88,13 @@ std::mutex g_mutex;
|
|
||||||
|
|
||||||
struct form_file
|
|
||||||
{
|
|
||||||
- fs::ifstream ifs;
|
|
||||||
+ fs::ifstream ifs;
|
|
||||||
boost::filesystem::ifstream::off_type init_offset;
|
|
||||||
size_t content_length;
|
|
||||||
+
|
|
||||||
+ form_file(fs::path const& p, const boost::filesystem::ifstream::off_type offset, const size_t content_length)
|
|
||||||
+ : ifs(p, std::ios::in | std::ios::binary), init_offset(offset), content_length(content_length)
|
|
||||||
+ {}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Http::priv
|
|
||||||
@@ -314,7 +318,7 @@ void Http::priv::form_add_file(const char *name, const fs::path &path, const cha
|
|
||||||
filename = path.string().c_str();
|
|
||||||
}
|
|
||||||
|
|
||||||
- form_files.emplace_back(form_file{{path, std::ios::in | std::ios::binary}, offset, length});
|
|
||||||
+ form_files.emplace_back(path, offset, length);
|
|
||||||
auto &f = form_files.back();
|
|
||||||
size_t size = length;
|
|
||||||
if (length == 0) {
|
|
||||||
@@ -381,7 +385,7 @@ void Http::priv::set_put_body(const fs::path &path)
|
|
||||||
boost::system::error_code ec;
|
|
||||||
boost::uintmax_t filesize = file_size(path, ec);
|
|
||||||
if (!ec) {
|
|
||||||
- putFile = std::make_unique<form_file>(form_file{{path, std::ios_base::binary | std::ios_base::in}, 0, 0});
|
|
||||||
+ putFile = std::make_unique<form_file>(path, 0, 0);
|
|
||||||
::curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
|
|
||||||
::curl_easy_setopt(curl, CURLOPT_READDATA, (void *) (putFile.get()));
|
|
||||||
::curl_easy_setopt(curl, CURLOPT_INFILESIZE, filesize);
|
|
||||||
|
|
||||||
@@ -30,13 +30,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "goldendict-ng";
|
pname = "goldendict-ng";
|
||||||
version = "24.09.0";
|
version = "24.09.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "xiaoyifang";
|
owner = "xiaoyifang";
|
||||||
repo = "goldendict-ng";
|
repo = "goldendict-ng";
|
||||||
rev = "v${finalAttrs.version}-Release.316ec900";
|
rev = "v${finalAttrs.version}-Release.ca9dd133";
|
||||||
hash = "sha256-LriKJLjqEuD0v8yjoE35O+V6oUX2jhWGFguqlXaDlQA=";
|
hash = "sha256-HvXC9fNLDZAEtXNjzFmaKz9Ih3n4Au69NPMuVeCiQPk=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config cmake wrapQtAppsHook wrapGAppsHook3 ];
|
nativeBuildInputs = [ pkg-config cmake wrapQtAppsHook wrapGAppsHook3 ];
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "upwork";
|
pname = "upwork";
|
||||||
version = "5.8.0.33";
|
version = "5.8.0.35";
|
||||||
|
|
||||||
src = requireFile {
|
src = requireFile {
|
||||||
name = "${pname}_${version}_amd64.deb";
|
name = "${pname}_${version}_amd64.deb";
|
||||||
url = "https://www.upwork.com/ab/downloads/os/linux/";
|
url = "https://www.upwork.com/ab/downloads/os/linux/";
|
||||||
sha256 = "sha256-MU0usTAfNNMN8OYmS6dWU6Xk2o5dg5J0V7OQiv3dLug=";
|
sha256 = "sha256-Suv23TL6l5HhkOSRT56LpFRZJxuSLYVc1uT6he8j7O0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,10 +5,10 @@
|
|||||||
{
|
{
|
||||||
firefox = buildMozillaMach rec {
|
firefox = buildMozillaMach rec {
|
||||||
pname = "firefox";
|
pname = "firefox";
|
||||||
version = "132.0";
|
version = "132.0.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||||
sha512 = "254ffba16d6e6c61cffaa8131f81a9a78880e5723b7ee78ac36251a27d82e6ff088238ae289d07469ba3a51b5b5969a08ecd1fc02dcb4d93325a08fac1cfc916";
|
sha512 = "10d5b05f61628deb9a69cb34b2cf3c75bb6b8768f5a718cef2157d5feb1671ede0d583439562e1c1221914eb6ed37fdf415dd651b1465c056be174136cd80b9d";
|
||||||
};
|
};
|
||||||
|
|
||||||
extraPatches = [
|
extraPatches = [
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, buildGoModule
|
, buildGoModule
|
||||||
, buildGo122Module
|
, buildGo122Module
|
||||||
|
, buildGo123Module
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, nixosTests
|
, nixosTests
|
||||||
, installShellFiles
|
, installShellFiles
|
||||||
@@ -54,7 +55,7 @@ rec {
|
|||||||
# Upstream partially documents used Go versions here
|
# Upstream partially documents used Go versions here
|
||||||
# https://github.com/hashicorp/nomad/blob/master/contributing/golang.md
|
# https://github.com/hashicorp/nomad/blob/master/contributing/golang.md
|
||||||
|
|
||||||
nomad = nomad_1_7;
|
nomad = nomad_1_8;
|
||||||
|
|
||||||
nomad_1_4 = throwUnsupportaed "nomad_1_4";
|
nomad_1_4 = throwUnsupportaed "nomad_1_4";
|
||||||
|
|
||||||
@@ -85,4 +86,16 @@ rec {
|
|||||||
export PATH="$PATH:$NIX_BUILD_TOP/go/bin"
|
export PATH="$PATH:$NIX_BUILD_TOP/go/bin"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nomad_1_9 = generic {
|
||||||
|
buildGoModule = buildGo123Module;
|
||||||
|
version = "1.9.0";
|
||||||
|
sha256 = "sha256-MJNPYSH3KsRmGQeOcWw4VvDeFGinfsyGSo4q3OdOZo8=";
|
||||||
|
vendorHash = "sha256-Ss/qwQ14VUu40nXaIgTfNuj95ekTTVrY+zcStFDSCyI=";
|
||||||
|
license = lib.licenses.bsl11;
|
||||||
|
passthru.tests.nomad = nixosTests.nomad;
|
||||||
|
preCheck = ''
|
||||||
|
export PATH="$PATH:$NIX_BUILD_TOP/go/bin"
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,54 +9,54 @@ let
|
|||||||
versions =
|
versions =
|
||||||
if stdenv.hostPlatform.isLinux then
|
if stdenv.hostPlatform.isLinux then
|
||||||
{
|
{
|
||||||
stable = "0.0.72";
|
stable = "0.0.73";
|
||||||
ptb = "0.0.113";
|
ptb = "0.0.114";
|
||||||
canary = "0.0.509";
|
canary = "0.0.511";
|
||||||
development = "0.0.33";
|
development = "0.0.42";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stable = "0.0.323";
|
stable = "0.0.324";
|
||||||
ptb = "0.0.143";
|
ptb = "0.0.144";
|
||||||
canary = "0.0.618";
|
canary = "0.0.620";
|
||||||
development = "0.0.55";
|
development = "0.0.63";
|
||||||
};
|
};
|
||||||
version = versions.${branch};
|
version = versions.${branch};
|
||||||
srcs = rec {
|
srcs = rec {
|
||||||
x86_64-linux = {
|
x86_64-linux = {
|
||||||
stable = fetchurl {
|
stable = fetchurl {
|
||||||
url = "https://stable.dl2.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
|
url = "https://stable.dl2.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
|
||||||
hash = "sha256-IAvlxs6oEdO//qVWwH0cBJEbDxyPLG6HHwmOgqMzRRU=";
|
hash = "sha256-LZ3IgtGr94NWbykYS5Xllkl4OOHLG66+ZqQ+OrpnVzs=";
|
||||||
};
|
};
|
||||||
ptb = fetchurl {
|
ptb = fetchurl {
|
||||||
url = "https://ptb.dl2.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
|
url = "https://ptb.dl2.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
|
||||||
hash = "sha256-1Rhn6pH6KvuhGNTymBK01tA78it7JXekG48XvRZQOiA=";
|
hash = "sha256-fdpG9V4EJaARSJA9XmW+Zq6exPaFMJ/FWhzwgarDIpI=";
|
||||||
};
|
};
|
||||||
canary = fetchurl {
|
canary = fetchurl {
|
||||||
url = "https://canary.dl2.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
|
url = "https://canary.dl2.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
|
||||||
hash = "sha256-jLAeix6IQ6rqOM8NKNryEeswB5VSzc1lIEI7X7Nrc68=";
|
hash = "sha256-srjYJFVM1UVpkB+koqrZfwgRAWpa7s8Arq2DnAFuaKs=";
|
||||||
};
|
};
|
||||||
development = fetchurl {
|
development = fetchurl {
|
||||||
url = "https://development.dl2.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz";
|
url = "https://development.dl2.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz";
|
||||||
hash = "sha256-A87sVmaYRjRi0Q9IrXuQBr+yC+FtGgZA2L/9V4WuYbU=";
|
hash = "sha256-HZdodWwczgxaGgal5gfr6NQlquf4ZO//QMVcebxQG7s=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
x86_64-darwin = {
|
x86_64-darwin = {
|
||||||
stable = fetchurl {
|
stable = fetchurl {
|
||||||
url = "https://stable.dl2.discordapp.net/apps/osx/${version}/Discord.dmg";
|
url = "https://stable.dl2.discordapp.net/apps/osx/${version}/Discord.dmg";
|
||||||
hash = "sha256-9ySE75TjVDLdPSWAawsVpOgCtL/Di+J3fKUEDH5/Oog=";
|
hash = "sha256-Q/PWTBTnmdNeZV+InLQ3nSpETYF3rzTq9nxEh9HEOWY=";
|
||||||
};
|
};
|
||||||
ptb = fetchurl {
|
ptb = fetchurl {
|
||||||
url = "https://ptb.dl2.discordapp.net/apps/osx/${version}/DiscordPTB.dmg";
|
url = "https://ptb.dl2.discordapp.net/apps/osx/${version}/DiscordPTB.dmg";
|
||||||
hash = "sha256-ZbHz0OR7p873U7YpwsHxa3Uuf3uPsmVOQF9exARQzdI=";
|
hash = "sha256-Xv8TPzfK1gOLG57F9gtt4PvwkCqjDQjYJmKfyNIkEZY=";
|
||||||
};
|
};
|
||||||
canary = fetchurl {
|
canary = fetchurl {
|
||||||
url = "https://canary.dl2.discordapp.net/apps/osx/${version}/DiscordCanary.dmg";
|
url = "https://canary.dl2.discordapp.net/apps/osx/${version}/DiscordCanary.dmg";
|
||||||
hash = "sha256-UsJRw7gforZ1OAA6GNtXuTe/y95mIr7R6MRa+qe44tk=";
|
hash = "sha256-6rBDZPVYxS3q328d2T9LOs0DUirPbMg2GKDacCSsOG4=";
|
||||||
};
|
};
|
||||||
development = fetchurl {
|
development = fetchurl {
|
||||||
url = "https://development.dl2.discordapp.net/apps/osx/${version}/DiscordDevelopment.dmg";
|
url = "https://development.dl2.discordapp.net/apps/osx/${version}/DiscordDevelopment.dmg";
|
||||||
hash = "sha256-tZbFrb6OFEa3/IrjzHCcQultFgrMIvaNTmzNj3RHUgQ=";
|
hash = "sha256-E1qQUnwemS6SIHeO1BBifrCu706ldZH18isR7+nGNRU=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
aarch64-darwin = x86_64-darwin;
|
aarch64-darwin = x86_64-darwin;
|
||||||
|
|||||||
@@ -156,11 +156,11 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "wavebox";
|
pname = "wavebox";
|
||||||
version = "10.129.29-2";
|
version = "10.129.32-2";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.wavebox.app/stable/linux/deb/amd64/wavebox_${finalAttrs.version}_amd64.deb";
|
url = "https://download.wavebox.app/stable/linux/deb/amd64/wavebox_${finalAttrs.version}_amd64.deb";
|
||||||
hash = "sha256-HGzBvCv6ASW2wXMd0BrA6NNGAEsuN2yHwS+0WbABfWM=";
|
hash = "sha256-MaVmiD+XwQLZVVTEZTn/2Kme5pCHXpgQ9bgJRsfrlU0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|||||||
@@ -22,11 +22,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "evolution-ews";
|
pname = "evolution-ews";
|
||||||
version = "3.54.0";
|
version = "3.54.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||||
hash = "sha256-EZIOIudgpOv9s3aeZgE3He3YDA16N9TCN1i0RKo/Ftg=";
|
hash = "sha256-oeM9aED4GLdLv+iafb2jcpXdgUWn30JlrS2yQUU4kDo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
|||||||
@@ -45,11 +45,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "evolution";
|
pname = "evolution";
|
||||||
version = "3.54.0";
|
version = "3.54.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||||
hash = "sha256-qlLXP76wmgk/gZHHJ6ERVCkOVdBHNRJaw5eBTrWGz58=";
|
hash = "sha256-qEQzdJd6AcY70Dr9tcY+c6SOZ0XX1Fm08mgj3Vz5lxs=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "nextcloud-client";
|
pname = "nextcloud-client";
|
||||||
version = "3.14.2";
|
version = "3.14.3";
|
||||||
|
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
|
|||||||
owner = "nextcloud-releases";
|
owner = "nextcloud-releases";
|
||||||
repo = "desktop";
|
repo = "desktop";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-vxCt/FNfQZ7rWME2zLGESgW/+FNoENZeCr8FFcGwoFQ=";
|
hash = "sha256-nYoBs5EnWiqYRsqc5CPxCIs0NAxSprI9PV0lO/c8khw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
|||||||
@@ -25,13 +25,13 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "2.12.1";
|
version = "2.13.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "paperless-ngx";
|
owner = "paperless-ngx";
|
||||||
repo = "paperless-ngx";
|
repo = "paperless-ngx";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-txqwVGLUel74ObCqwMWSqa4Nd2eDRf0SqAIes5tlMDg=";
|
hash = "sha256-db8omhyngvenAgfGGpMAhGkgqGug/sv7AL1G+sniM/c=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# subpath installation is broken with uvicorn >= 0.26
|
# subpath installation is broken with uvicorn >= 0.26
|
||||||
@@ -40,6 +40,27 @@ let
|
|||||||
python = python3.override {
|
python = python3.override {
|
||||||
self = python;
|
self = python;
|
||||||
packageOverrides = final: prev: {
|
packageOverrides = final: prev: {
|
||||||
|
django = prev.django_5;
|
||||||
|
|
||||||
|
# TODO: drop after https://github.com/NixOS/nixpkgs/pull/306556 or similar got merged
|
||||||
|
django-allauth = prev.django-allauth.overridePythonAttrs ({ src, nativeCheckInputs, ... }: let
|
||||||
|
version = "65.0.2";
|
||||||
|
in {
|
||||||
|
inherit version;
|
||||||
|
src = src.override {
|
||||||
|
rev = "refs/tags/${version}";
|
||||||
|
hash = "sha256-GvYdExkNuySrg8ERnWOJxucFe5HVdPAcHfRNeqiVS7M=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeCheckInputs = nativeCheckInputs ++ [ prev.fido2 ];
|
||||||
|
});
|
||||||
|
|
||||||
|
django-extensions = prev.django-extensions.overridePythonAttrs (_: {
|
||||||
|
# fails with: TypeError: 'class Meta' got invalid attribute(s): index_together
|
||||||
|
# probably because of django_5 but it is the latest version available and used like that in paperless-ngx
|
||||||
|
doCheck = false;
|
||||||
|
});
|
||||||
|
|
||||||
# tesseract5 may be overwritten in the paperless module and we need to propagate that to make the closure reduction effective
|
# tesseract5 may be overwritten in the paperless module and we need to propagate that to make the closure reduction effective
|
||||||
ocrmypdf = prev.ocrmypdf.override { tesseract = tesseract5; };
|
ocrmypdf = prev.ocrmypdf.override { tesseract = tesseract5; };
|
||||||
|
|
||||||
@@ -76,7 +97,7 @@ let
|
|||||||
cd src-ui
|
cd src-ui
|
||||||
'';
|
'';
|
||||||
|
|
||||||
npmDepsHash = "sha256-hb2z2cPMTN5bHtUldTR5Mvgo4nZL8/S+Uhfis37gF44=";
|
npmDepsHash = "sha256-pBCWcdCTQh0N4pRLBWLZXybuhpiat030xvPZ5z7CUJ0=";
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pkg-config
|
pkg-config
|
||||||
@@ -137,7 +158,7 @@ python.pkgs.buildPythonApplication rec {
|
|||||||
channels-redis
|
channels-redis
|
||||||
concurrent-log-handler
|
concurrent-log-handler
|
||||||
dateparser
|
dateparser
|
||||||
django
|
django_5
|
||||||
django-allauth
|
django-allauth
|
||||||
django-auditlog
|
django-auditlog
|
||||||
django-celery-results
|
django-celery-results
|
||||||
@@ -155,8 +176,10 @@ python.pkgs.buildPythonApplication rec {
|
|||||||
flower
|
flower
|
||||||
gotenberg-client
|
gotenberg-client
|
||||||
gunicorn
|
gunicorn
|
||||||
|
httpx-oauth
|
||||||
imap-tools
|
imap-tools
|
||||||
inotifyrecursive
|
inotifyrecursive
|
||||||
|
jinja2
|
||||||
langdetect
|
langdetect
|
||||||
mysqlclient
|
mysqlclient
|
||||||
nltk
|
nltk
|
||||||
@@ -257,10 +280,8 @@ python.pkgs.buildPythonApplication rec {
|
|||||||
"testNormalOperation"
|
"testNormalOperation"
|
||||||
# Something broken with new Tesseract and inline RTL/LTR overrides?
|
# Something broken with new Tesseract and inline RTL/LTR overrides?
|
||||||
"test_rtl_language_detection"
|
"test_rtl_language_detection"
|
||||||
# Broke during the pytest-httpx 0.30.0 -> 0.32.0 upgrade
|
# django.core.exceptions.FieldDoesNotExist: Document has no field named 'transaction_id'
|
||||||
"test_request_pdf_a_format"
|
"test_convert"
|
||||||
"test_generate_pdf_html_email"
|
|
||||||
"test_generate_pdf_html_email_merge_failure"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
doCheck = !stdenv.hostPlatform.isDarwin;
|
doCheck = !stdenv.hostPlatform.isDarwin;
|
||||||
|
|||||||
@@ -159,9 +159,10 @@ stdenv.mkDerivation rec {
|
|||||||
noAuditTmpdir = true;
|
noAuditTmpdir = true;
|
||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
# Wrong store path in shebang (no Python pkgs), force re-patching
|
# Wrong store path in shebang (bare Python, no Python pkgs), force manual re-patching
|
||||||
sed -i "1s:/.*:/usr/bin/env python:" $out/bin/pymolcas
|
for exe in $(find $out/bin/ -type f -name "*.py"); do
|
||||||
patchShebangs $out/bin
|
sed -i "1s:.*:#!${python}/bin/python:" "$exe"
|
||||||
|
done
|
||||||
|
|
||||||
wrapProgram $out/bin/pymolcas --set MOLCAS $out
|
wrapProgram $out/bin/pymolcas --set MOLCAS $out
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -1,20 +1,15 @@
|
|||||||
{ haskellPackages, mkDerivation, fetchFromGitHub, applyPatches, lib, stdenv
|
{ haskellPackages, mkDerivation, fetchFromGitHub, lib, stdenv
|
||||||
# the following are non-haskell dependencies
|
# the following are non-haskell dependencies
|
||||||
, makeWrapper, which, maude, graphviz, glibcLocales
|
, makeWrapper, which, maude, graphviz, glibcLocales
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.8.0";
|
version = "1.10.0";
|
||||||
src = applyPatches {
|
src = fetchFromGitHub {
|
||||||
src = fetchFromGitHub {
|
owner = "tamarin-prover";
|
||||||
owner = "tamarin-prover";
|
repo = "tamarin-prover";
|
||||||
repo = "tamarin-prover";
|
rev = version;
|
||||||
rev = version;
|
hash = "sha256-v1BruU2p/Sg/g7b9a+QRza46bD7PkMtsGq82qFaNhpI=";
|
||||||
sha256 = "sha256-ujnaUdbjqajmkphOS4Fs4QBCRGX4JZkQ2p1X2jripww=";
|
|
||||||
};
|
|
||||||
patches = [
|
|
||||||
./tamarin-prover-1.8.0-ghc-9.6.patch
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -41,7 +36,7 @@ let
|
|||||||
postPatch = replaceSymlinks;
|
postPatch = replaceSymlinks;
|
||||||
libraryHaskellDepends = with haskellPackages; [
|
libraryHaskellDepends = with haskellPackages; [
|
||||||
base64-bytestring blaze-builder list-t
|
base64-bytestring blaze-builder list-t
|
||||||
dlist exceptions fclabels safe SHA syb
|
dlist exceptions fclabels haskellPackages.graphviz safe SHA split syb
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -84,9 +79,7 @@ let
|
|||||||
tamarin-prover-export = mkDerivation (common "tamarin-prover-export" (src + "/lib/export") // {
|
tamarin-prover-export = mkDerivation (common "tamarin-prover-export" (src + "/lib/export") // {
|
||||||
postPatch = "cp --remove-destination ${src}/LICENSE .";
|
postPatch = "cp --remove-destination ${src}/LICENSE .";
|
||||||
doHaddock = false; # broken
|
doHaddock = false; # broken
|
||||||
libraryHaskellDepends = (with haskellPackages; [
|
libraryHaskellDepends = [
|
||||||
HStringTemplate
|
|
||||||
]) ++ [
|
|
||||||
tamarin-prover-utils
|
tamarin-prover-utils
|
||||||
tamarin-prover-term
|
tamarin-prover-term
|
||||||
tamarin-prover-theory
|
tamarin-prover-theory
|
||||||
@@ -125,7 +118,7 @@ mkDerivation (common "tamarin-prover" src // {
|
|||||||
|
|
||||||
executableHaskellDepends = (with haskellPackages; [
|
executableHaskellDepends = (with haskellPackages; [
|
||||||
binary-instances binary-orphans blaze-html conduit file-embed
|
binary-instances binary-orphans blaze-html conduit file-embed
|
||||||
gitrev http-types lifted-base monad-control
|
gitrev http-types
|
||||||
resourcet shakespeare threads wai warp yesod-core yesod-static
|
resourcet shakespeare threads wai warp yesod-core yesod-static
|
||||||
]) ++ [ tamarin-prover-utils
|
]) ++ [ tamarin-prover-utils
|
||||||
tamarin-prover-sapic
|
tamarin-prover-sapic
|
||||||
|
|||||||
@@ -1,237 +0,0 @@
|
|||||||
commit 084bd5474d9ac687656c2a3a6b2e1d507febaa98
|
|
||||||
Author: Artur Cygan <arczicygan@gmail.com>
|
|
||||||
Date: Mon Feb 26 10:04:48 2024 +0100
|
|
||||||
|
|
||||||
Update to GHC 9.6 (#618)
|
|
||||||
|
|
||||||
Cherry-picked from b3e18f61e45d701d42d794bc91ccbb4c0e3834ec.
|
|
||||||
|
|
||||||
Removing Control.Monad.List
|
|
||||||
|
|
||||||
diff --git a/lib/sapic/src/Sapic/Exceptions.hs b/lib/sapic/src/Sapic/Exceptions.hs
|
|
||||||
index 146b721e..b9962478 100644
|
|
||||||
--- a/lib/sapic/src/Sapic/Exceptions.hs
|
|
||||||
+++ b/lib/sapic/src/Sapic/Exceptions.hs
|
|
||||||
@@ -23,7 +23,6 @@ import Theory.Sapic
|
|
||||||
import Data.Label
|
|
||||||
import qualified Data.Maybe
|
|
||||||
import Theory.Text.Pretty
|
|
||||||
-import Sapic.Annotation --toAnProcess
|
|
||||||
import Theory.Sapic.Print (prettySapic)
|
|
||||||
import qualified Theory.Text.Pretty as Pretty
|
|
||||||
|
|
||||||
@@ -67,14 +66,14 @@ data ExportException = UnsupportedBuiltinMS
|
|
||||||
| UnsupportedTypes [String]
|
|
||||||
|
|
||||||
instance Show ExportException where
|
|
||||||
-
|
|
||||||
+
|
|
||||||
show (UnsupportedTypes incorrectFunctionUsages) = do
|
|
||||||
let functionsString = List.intercalate ", " incorrectFunctionUsages
|
|
||||||
(case length functionsString of
|
|
||||||
1 -> "The function " ++ functionsString ++ ", which is declared with a user-defined type, appears in a rewrite rule. "
|
|
||||||
_ -> "The functions " ++ functionsString ++ ", which are declared with a user-defined type, appear in a rewrite rule. ")
|
|
||||||
++ "However, the translation of rules only works with bitstrings at the moment."
|
|
||||||
- show unsuppBuiltin =
|
|
||||||
+ show unsuppBuiltin =
|
|
||||||
"The builtins bilinear-pairing and multiset are not supported for export. However, your model uses " ++
|
|
||||||
(case unsuppBuiltin of
|
|
||||||
UnsupportedBuiltinBP -> "bilinear-pairing."
|
|
||||||
@@ -93,7 +92,7 @@ instance Show (SapicException an) where
|
|
||||||
show (InvalidPosition p) = "Invalid position:" ++ prettyPosition p
|
|
||||||
show (NotImplementedError s) = "This feature is not implemented yet. Sorry! " ++ s
|
|
||||||
show (ImplementationError s) = "You've encountered an error in the implementation: " ++ s
|
|
||||||
- show a@(ProcessNotWellformed e p) = "Process not well-formed: " ++ Pretty.render (text (show e) $-$ nest 2 (maybe emptyDoc prettySapic p))
|
|
||||||
+ show (ProcessNotWellformed e p) = "Process not well-formed: " ++ Pretty.render (text (show e) $-$ nest 2 (maybe emptyDoc prettySapic p))
|
|
||||||
show ReliableTransmissionButNoProcess = "The builtin support for reliable channels currently only affects the process calculus, but you have not specified a top-level process. Please remove \"builtins: reliable-channel\" to proceed."
|
|
||||||
show (CannotExpandPredicate facttag rstr) = "Undefined predicate "
|
|
||||||
++ showFactTagArity facttag
|
|
||||||
@@ -135,7 +134,7 @@ instance Show WFerror where
|
|
||||||
++ prettySapicFunType t2
|
|
||||||
++ "."
|
|
||||||
show (FunctionNotDefined sym ) = "Function not defined " ++ show sym
|
|
||||||
-
|
|
||||||
+
|
|
||||||
|
|
||||||
instance Exception WFerror
|
|
||||||
instance (Typeable an) => Exception (SapicException an)
|
|
||||||
diff --git a/lib/term/src/Term/Narrowing/Narrow.hs b/lib/term/src/Term/Narrowing/Narrow.hs
|
|
||||||
index 56f145d9..88f89aa1 100644
|
|
||||||
--- a/lib/term/src/Term/Narrowing/Narrow.hs
|
|
||||||
+++ b/lib/term/src/Term/Narrowing/Narrow.hs
|
|
||||||
@@ -12,6 +12,7 @@ module Term.Narrowing.Narrow (
|
|
||||||
import Term.Unification
|
|
||||||
import Term.Positions
|
|
||||||
|
|
||||||
+import Control.Monad
|
|
||||||
import Control.Monad.Reader
|
|
||||||
|
|
||||||
import Extension.Prelude
|
|
||||||
diff --git a/lib/term/src/Term/Unification.hs b/lib/term/src/Term/Unification.hs
|
|
||||||
index b5c107cd..fcf52128 100644
|
|
||||||
--- a/lib/term/src/Term/Unification.hs
|
|
||||||
+++ b/lib/term/src/Term/Unification.hs
|
|
||||||
@@ -61,7 +61,7 @@ module Term.Unification (
|
|
||||||
, pairDestMaudeSig
|
|
||||||
, symEncDestMaudeSig
|
|
||||||
, asymEncDestMaudeSig
|
|
||||||
- , signatureDestMaudeSig
|
|
||||||
+ , signatureDestMaudeSig
|
|
||||||
, locationReportMaudeSig
|
|
||||||
, revealSignatureMaudeSig
|
|
||||||
, hashMaudeSig
|
|
||||||
@@ -80,7 +80,7 @@ module Term.Unification (
|
|
||||||
, module Term.Rewriting.Definitions
|
|
||||||
) where
|
|
||||||
|
|
||||||
--- import Control.Applicative
|
|
||||||
+import Control.Monad
|
|
||||||
import Control.Monad.RWS
|
|
||||||
import Control.Monad.Except
|
|
||||||
import Control.Monad.State
|
|
||||||
diff --git a/lib/theory/src/Theory/Constraint/System/Guarded.hs b/lib/theory/src/Theory/Constraint/System/Guarded.hs
|
|
||||||
index 99f985a8..3f0cd8d8 100644
|
|
||||||
--- a/lib/theory/src/Theory/Constraint/System/Guarded.hs
|
|
||||||
+++ b/lib/theory/src/Theory/Constraint/System/Guarded.hs
|
|
||||||
@@ -88,6 +88,7 @@ module Theory.Constraint.System.Guarded (
|
|
||||||
|
|
||||||
import Control.Arrow
|
|
||||||
import Control.DeepSeq
|
|
||||||
+import Control.Monad
|
|
||||||
import Control.Monad.Except
|
|
||||||
import Control.Monad.Fresh (MonadFresh, scopeFreshness)
|
|
||||||
import qualified Control.Monad.Trans.PreciseFresh as Precise (Fresh, evalFresh, evalFreshT)
|
|
||||||
diff --git a/lib/utils/src/Control/Monad/Trans/Disj.hs b/lib/utils/src/Control/Monad/Trans/Disj.hs
|
|
||||||
index 96dae742..b3b63825 100644
|
|
||||||
--- a/lib/utils/src/Control/Monad/Trans/Disj.hs
|
|
||||||
+++ b/lib/utils/src/Control/Monad/Trans/Disj.hs
|
|
||||||
@@ -18,10 +18,10 @@ module Control.Monad.Trans.Disj (
|
|
||||||
, runDisjT
|
|
||||||
) where
|
|
||||||
|
|
||||||
--- import Control.Applicative
|
|
||||||
-import Control.Monad.List
|
|
||||||
-import Control.Monad.Reader
|
|
||||||
+import Control.Monad
|
|
||||||
import Control.Monad.Disj.Class
|
|
||||||
+import Control.Monad.Reader
|
|
||||||
+import ListT
|
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
@@ -33,12 +33,12 @@ newtype DisjT m a = DisjT { unDisjT :: ListT m a }
|
|
||||||
deriving (Functor, Applicative, MonadTrans )
|
|
||||||
|
|
||||||
-- | Construct a 'DisjT' action.
|
|
||||||
-disjT :: m [a] -> DisjT m a
|
|
||||||
-disjT = DisjT . ListT
|
|
||||||
+disjT :: (Monad m, Foldable m) => m a -> DisjT m a
|
|
||||||
+disjT = DisjT . fromFoldable
|
|
||||||
|
|
||||||
-- | Run a 'DisjT' action.
|
|
||||||
-runDisjT :: DisjT m a -> m [a]
|
|
||||||
-runDisjT = runListT . unDisjT
|
|
||||||
+runDisjT :: Monad m => DisjT m a -> m [a]
|
|
||||||
+runDisjT = toList . unDisjT
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -47,8 +47,6 @@ runDisjT = runListT . unDisjT
|
|
||||||
------------
|
|
||||||
|
|
||||||
instance Monad m => Monad (DisjT m) where
|
|
||||||
- {-# INLINE return #-}
|
|
||||||
- return = DisjT . return
|
|
||||||
{-# INLINE (>>=) #-}
|
|
||||||
m >>= f = DisjT $ (unDisjT . f) =<< unDisjT m
|
|
||||||
|
|
||||||
diff --git a/lib/utils/tamarin-prover-utils.cabal b/lib/utils/tamarin-prover-utils.cabal
|
|
||||||
index 75ed2b46..bb54d1e5 100644
|
|
||||||
--- a/lib/utils/tamarin-prover-utils.cabal
|
|
||||||
+++ b/lib/utils/tamarin-prover-utils.cabal
|
|
||||||
@@ -47,6 +47,7 @@ library
|
|
||||||
, deepseq
|
|
||||||
, dlist
|
|
||||||
, fclabels
|
|
||||||
+ , list-t
|
|
||||||
, mtl
|
|
||||||
, pretty
|
|
||||||
, safe
|
|
||||||
diff --git a/src/Main/Mode/Batch.hs b/src/Main/Mode/Batch.hs
|
|
||||||
index e7710682..d370da85 100644
|
|
||||||
--- a/src/Main/Mode/Batch.hs
|
|
||||||
+++ b/src/Main/Mode/Batch.hs
|
|
||||||
@@ -32,7 +32,8 @@ import Main.TheoryLoader
|
|
||||||
import Main.Utils
|
|
||||||
|
|
||||||
import Theory.Module
|
|
||||||
-import Control.Monad.Except (MonadIO(liftIO), runExceptT)
|
|
||||||
+import Control.Monad.Except (runExceptT)
|
|
||||||
+import Control.Monad.IO.Class (MonadIO(liftIO))
|
|
||||||
import System.Exit (die)
|
|
||||||
import Theory.Tools.Wellformedness (prettyWfErrorReport)
|
|
||||||
import Text.Printf (printf)
|
|
||||||
diff --git a/src/Main/TheoryLoader.hs b/src/Main/TheoryLoader.hs
|
|
||||||
index 7fffb85b..71fba2b9 100644
|
|
||||||
--- a/src/Main/TheoryLoader.hs
|
|
||||||
+++ b/src/Main/TheoryLoader.hs
|
|
||||||
@@ -42,8 +42,6 @@ module Main.TheoryLoader (
|
|
||||||
|
|
||||||
) where
|
|
||||||
|
|
||||||
--- import Debug.Trace
|
|
||||||
-
|
|
||||||
import Prelude hiding (id, (.))
|
|
||||||
|
|
||||||
import Data.Char (toLower)
|
|
||||||
@@ -58,8 +56,10 @@ import Data.Bifunctor (Bifunctor(bimap))
|
|
||||||
import Data.Bitraversable (Bitraversable(bitraverse))
|
|
||||||
|
|
||||||
import Control.Category
|
|
||||||
-import Control.Exception (evaluate)
|
|
||||||
import Control.DeepSeq (force)
|
|
||||||
+import Control.Exception (evaluate)
|
|
||||||
+import Control.Monad
|
|
||||||
+import Control.Monad.IO.Class (MonadIO(liftIO))
|
|
||||||
|
|
||||||
import System.Console.CmdArgs.Explicit
|
|
||||||
import System.Timeout (timeout)
|
|
||||||
@@ -387,10 +387,10 @@ closeTheory version thyOpts sign srcThy = do
|
|
||||||
deducThy <- bitraverse (return . addMessageDeductionRuleVariants)
|
|
||||||
(return . addMessageDeductionRuleVariantsDiff) transThy
|
|
||||||
|
|
||||||
- derivCheckSignature <- Control.Monad.Except.liftIO $ toSignatureWithMaude (get oMaudePath thyOpts) $ maudePublicSig (toSignaturePure sign)
|
|
||||||
+ derivCheckSignature <- liftIO $ toSignatureWithMaude (get oMaudePath thyOpts) $ maudePublicSig (toSignaturePure sign)
|
|
||||||
variableReport <- case compare derivChecks 0 of
|
|
||||||
EQ -> pure $ Just []
|
|
||||||
- _ -> Control.Monad.Except.liftIO $ timeout (1000000 * derivChecks) $ evaluate . force $ (either (\t -> checkVariableDeducability t derivCheckSignature autoSources defaultProver)
|
|
||||||
+ _ -> liftIO $ timeout (1000000 * derivChecks) $ evaluate . force $ (either (\t -> checkVariableDeducability t derivCheckSignature autoSources defaultProver)
|
|
||||||
(\t-> diffCheckVariableDeducability t derivCheckSignature autoSources defaultProver defaultDiffProver) deducThy)
|
|
||||||
|
|
||||||
let report = wellformednessReport ++ (fromMaybe [(underlineTopic "Derivation Checks", Pretty.text "Derivation checks timed out. Use --derivcheck-timeout=INT to configure timeout, 0 to deactivate.")] variableReport)
|
|
||||||
diff --git a/stack.yaml b/stack.yaml
|
|
||||||
index 7267ba17..b53f6ff8 100644
|
|
||||||
--- a/stack.yaml
|
|
||||||
+++ b/stack.yaml
|
|
||||||
@@ -7,7 +7,7 @@ packages:
|
|
||||||
- lib/sapic/
|
|
||||||
- lib/export/
|
|
||||||
- lib/accountability/
|
|
||||||
-resolver: lts-20.26
|
|
||||||
+resolver: lts-22.11
|
|
||||||
ghc-options:
|
|
||||||
"$everything": -Wall
|
|
||||||
nix:
|
|
||||||
diff --git a/tamarin-prover.cabal b/tamarin-prover.cabal
|
|
||||||
index 89a7e3a8..986274ea 100644
|
|
||||||
--- a/tamarin-prover.cabal
|
|
||||||
+++ b/tamarin-prover.cabal
|
|
||||||
@@ -106,7 +106,7 @@ executable tamarin-prover
|
|
||||||
default-language: Haskell2010
|
|
||||||
|
|
||||||
if flag(threaded)
|
|
||||||
- ghc-options: -threaded -eventlog
|
|
||||||
+ ghc-options: -threaded
|
|
||||||
|
|
||||||
-- -XFlexibleInstances
|
|
||||||
|
|
||||||
@@ -21,6 +21,11 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
|
|
||||||
sourceRoot = "${finalAttrs.src.name}/gui/qt/";
|
sourceRoot = "${finalAttrs.src.name}/gui/qt/";
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# This is resolved upstream, but I can't apply the patch because the
|
||||||
|
# sourceRoot isn't set to the base of the Git repo.
|
||||||
|
./resolve-ambiguous-constexpr.patch
|
||||||
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
cmake
|
cmake
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/mainwindow.cpp b/mainwindow.cpp
|
||||||
|
index f03a743e..70c29a45 100644
|
||||||
|
--- a/mainwindow.cpp
|
||||||
|
+++ b/mainwindow.cpp
|
||||||
|
@@ -970,7 +970,7 @@ void MainWindow::showEvent(QShowEvent *e) {
|
||||||
|
DockWidget *MainWindow::redistributeFindDock(const QPoint &pos) {
|
||||||
|
QWidget *child = childAt(pos);
|
||||||
|
if (QTabBar *tabBar = findSelfOrParent<QTabBar *>(child)) {
|
||||||
|
- child = childAt({pos.x(), tabBar->mapTo(this, QPoint{}).y() - 1});
|
||||||
|
+ child = childAt(QPoint({pos.x(), tabBar->mapTo(this, QPoint{}).y() - 1}));
|
||||||
|
}
|
||||||
|
return findSelfOrParent<DockWidget *>(child);
|
||||||
|
}
|
||||||
@@ -45,8 +45,8 @@ let
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
version = "2024.3";
|
version = "2024.4";
|
||||||
hash = "sha256-u9oFbuWTkL59WNhME6nsDU42NWF63y63RwNJIsuh8Ck=";
|
hash = "sha256-rGGOzi5Yr6hrU2xaLE/Lk38HYDGPEtGPEDRra969hqg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ stdenv.mkDerivation rec {
|
|||||||
rev = "3c8f66be867aca6656e4109ce880b6ea7431b895";
|
rev = "3c8f66be867aca6656e4109ce880b6ea7431b895";
|
||||||
hash = "sha256-vz9ircmPy2Q4fxNnjurkgJtuTSS49rBq/m61p1B43eU=";
|
hash = "sha256-vz9ircmPy2Q4fxNnjurkgJtuTSS49rBq/m61p1B43eU=";
|
||||||
};
|
};
|
||||||
|
patches = lib.optional (old ? patches) (lib.head old.patches);
|
||||||
postPatch = (old.postPatch or "") + ''
|
postPatch = (old.postPatch or "") + ''
|
||||||
patchShebangs src/box_drawing_generate.sh
|
patchShebangs src/box_drawing_generate.sh
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -1,57 +1,56 @@
|
|||||||
{ lib
|
{
|
||||||
, stdenv
|
lib,
|
||||||
, darwin
|
stdenv,
|
||||||
, fetchFromGitHub
|
darwin,
|
||||||
, rustPlatform
|
fetchFromGitHub,
|
||||||
, nixosTests
|
rustPlatform,
|
||||||
, nix-update-script
|
nixosTests,
|
||||||
|
nix-update-script,
|
||||||
|
|
||||||
, autoPatchelfHook
|
autoPatchelfHook,
|
||||||
, cmake
|
cmake,
|
||||||
, ncurses
|
ncurses,
|
||||||
, pkg-config
|
pkg-config,
|
||||||
|
|
||||||
, gcc-unwrapped
|
gcc-unwrapped,
|
||||||
, fontconfig
|
fontconfig,
|
||||||
, libGL
|
libGL,
|
||||||
, vulkan-loader
|
vulkan-loader,
|
||||||
, libxkbcommon
|
libxkbcommon,
|
||||||
|
apple-sdk_11,
|
||||||
|
|
||||||
, withX11 ? !stdenv.hostPlatform.isDarwin
|
withX11 ? !stdenv.hostPlatform.isDarwin,
|
||||||
, libX11
|
libX11,
|
||||||
, libXcursor
|
libXcursor,
|
||||||
, libXi
|
libXi,
|
||||||
, libXrandr
|
libXrandr,
|
||||||
, libxcb
|
libxcb,
|
||||||
|
|
||||||
, withWayland ? !stdenv.hostPlatform.isDarwin
|
withWayland ? !stdenv.hostPlatform.isDarwin,
|
||||||
, wayland
|
wayland,
|
||||||
|
|
||||||
, testers
|
testers,
|
||||||
, rio
|
rio,
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
rlinkLibs = if stdenv.hostPlatform.isDarwin then [
|
rlinkLibs =
|
||||||
darwin.libobjc
|
lib.optionals stdenv.hostPlatform.isLinux [
|
||||||
darwin.apple_sdk_11_0.frameworks.AppKit
|
(lib.getLib gcc-unwrapped)
|
||||||
darwin.apple_sdk_11_0.frameworks.AVFoundation
|
fontconfig
|
||||||
darwin.apple_sdk_11_0.frameworks.MetalKit
|
libGL
|
||||||
darwin.apple_sdk_11_0.frameworks.Vision
|
libxkbcommon
|
||||||
] else [
|
vulkan-loader
|
||||||
(lib.getLib gcc-unwrapped)
|
]
|
||||||
fontconfig
|
++ lib.optionals withX11 [
|
||||||
libGL
|
libX11
|
||||||
libxkbcommon
|
libXcursor
|
||||||
vulkan-loader
|
libXi
|
||||||
] ++ lib.optionals withX11 [
|
libXrandr
|
||||||
libX11
|
libxcb
|
||||||
libXcursor
|
]
|
||||||
libXi
|
++ lib.optionals withWayland [
|
||||||
libXrandr
|
wayland
|
||||||
libxcb
|
];
|
||||||
] ++ lib.optionals withWayland [
|
|
||||||
wayland
|
|
||||||
];
|
|
||||||
in
|
in
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "rio";
|
pname = "rio";
|
||||||
@@ -66,67 +65,86 @@ rustPlatform.buildRustPackage rec {
|
|||||||
|
|
||||||
cargoHash = "sha256-yGOvY5+ThSey/k8ilTTC0CzaOIJtc4hDYmdrHJC3HyE=";
|
cargoHash = "sha256-yGOvY5+ThSey/k8ilTTC0CzaOIJtc4hDYmdrHJC3HyE=";
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs =
|
||||||
ncurses
|
[
|
||||||
] ++ lib.optionals stdenv.hostPlatform.isLinux [
|
ncurses
|
||||||
cmake
|
]
|
||||||
pkg-config
|
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||||
autoPatchelfHook
|
cmake
|
||||||
];
|
pkg-config
|
||||||
|
autoPatchelfHook
|
||||||
|
];
|
||||||
|
|
||||||
runtimeDependencies = rlinkLibs;
|
runtimeDependencies = rlinkLibs;
|
||||||
|
|
||||||
buildInputs = rlinkLibs;
|
buildInputs =
|
||||||
|
rlinkLibs
|
||||||
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
|
darwin.libutil
|
||||||
|
apple-sdk_11 # Needs _NSPasteboardTypeFileURL, can be removed once x86_64-darwin defaults to a higher SDK
|
||||||
|
];
|
||||||
|
|
||||||
outputs = [ "out" "terminfo" ];
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"terminfo"
|
||||||
|
];
|
||||||
|
|
||||||
buildNoDefaultFeatures = true;
|
buildNoDefaultFeatures = true;
|
||||||
buildFeatures = [ ]
|
buildFeatures = [ ] ++ lib.optional withX11 "x11" ++ lib.optional withWayland "wayland";
|
||||||
++ lib.optional withX11 "x11"
|
|
||||||
++ lib.optional withWayland "wayland";
|
|
||||||
|
|
||||||
checkFlags = [
|
checkFlags = [
|
||||||
# Fail to run in sandbox environment.
|
# Fail to run in sandbox environment.
|
||||||
"--skip=sys::unix::eventedfd::EventedFd"
|
"--skip=sys::unix::eventedfd::EventedFd"
|
||||||
];
|
];
|
||||||
|
|
||||||
postInstall = ''
|
postInstall =
|
||||||
install -D -m 644 misc/rio.desktop -t $out/share/applications
|
''
|
||||||
install -D -m 644 misc/logo.svg \
|
install -D -m 644 misc/rio.desktop -t $out/share/applications
|
||||||
$out/share/icons/hicolor/scalable/apps/rio.svg
|
install -D -m 644 misc/logo.svg \
|
||||||
|
$out/share/icons/hicolor/scalable/apps/rio.svg
|
||||||
|
|
||||||
install -dm 755 "$terminfo/share/terminfo/r/"
|
install -dm 755 "$terminfo/share/terminfo/r/"
|
||||||
tic -xe rio,rio-direct -o "$terminfo/share/terminfo" misc/rio.terminfo
|
tic -xe rio,rio-direct -o "$terminfo/share/terminfo" misc/rio.terminfo
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
|
echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
|
||||||
'' + lib.optionalString stdenv.hostPlatform.isDarwin ''
|
''
|
||||||
mkdir $out/Applications/
|
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||||
mv misc/osx/Rio.app/ $out/Applications/
|
mkdir $out/Applications/
|
||||||
mkdir $out/Applications/Rio.app/Contents/MacOS/
|
mv misc/osx/Rio.app/ $out/Applications/
|
||||||
ln -s $out/bin/rio $out/Applications/Rio.app/Contents/MacOS/
|
mkdir $out/Applications/Rio.app/Contents/MacOS/
|
||||||
'';
|
ln -s $out/bin/rio $out/Applications/Rio.app/Contents/MacOS/
|
||||||
|
'';
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
updateScript = nix-update-script {
|
updateScript = nix-update-script {
|
||||||
extraArgs = [ "--version-regex" "v([0-9.]+)" ];
|
extraArgs = [
|
||||||
|
"--version-regex"
|
||||||
|
"v([0-9.]+)"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
tests = {
|
tests =
|
||||||
version = testers.testVersion { package = rio; };
|
{
|
||||||
} // lib.optionalAttrs stdenv.buildPlatform.isLinux {
|
version = testers.testVersion { package = rio; };
|
||||||
# FIXME: Restrict test execution inside nixosTests for Linux devices as ofborg
|
}
|
||||||
# 'passthru.tests' nixosTests are failing on Darwin architectures.
|
// lib.optionalAttrs stdenv.buildPlatform.isLinux {
|
||||||
#
|
# FIXME: Restrict test execution inside nixosTests for Linux devices as ofborg
|
||||||
# Ref: https://github.com/NixOS/nixpkgs/issues/345825
|
# 'passthru.tests' nixosTests are failing on Darwin architectures.
|
||||||
test = nixosTests.terminal-emulators.rio;
|
#
|
||||||
};
|
# Ref: https://github.com/NixOS/nixpkgs/issues/345825
|
||||||
|
test = nixosTests.terminal-emulators.rio;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Hardware-accelerated GPU terminal emulator powered by WebGPU";
|
description = "Hardware-accelerated GPU terminal emulator powered by WebGPU";
|
||||||
homepage = "https://raphamorim.io/rio";
|
homepage = "https://raphamorim.io/rio";
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
maintainers = with lib.maintainers; [ tornax otavio oluceps ];
|
maintainers = with lib.maintainers; [
|
||||||
|
tornax
|
||||||
|
otavio
|
||||||
|
oluceps
|
||||||
|
];
|
||||||
platforms = lib.platforms.unix;
|
platforms = lib.platforms.unix;
|
||||||
changelog = "https://github.com/raphamorim/rio/blob/v${version}/docs/docs/releases.md";
|
changelog = "https://github.com/raphamorim/rio/blob/v${version}/docs/docs/releases.md";
|
||||||
mainProgram = "rio";
|
mainProgram = "rio";
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
, pkg-config
|
, pkg-config
|
||||||
, oniguruma
|
, oniguruma
|
||||||
, stdenv
|
, stdenv
|
||||||
, darwin
|
, apple-sdk_11
|
||||||
, git
|
, git
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ rustPlatform.buildRustPackage rec {
|
|||||||
buildInputs = [
|
buildInputs = [
|
||||||
oniguruma
|
oniguruma
|
||||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
darwin.apple_sdk_11_0.frameworks.Foundation
|
apple-sdk_11
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeCheckInputs = [ git ];
|
nativeCheckInputs = [ git ];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, stdenv, fetchFromGitHub, rustPlatform, libiconv, Security }:
|
{ lib, stdenv, fetchFromGitHub, rustPlatform, libiconv, apple-sdk_11 }:
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "git-interactive-rebase-tool";
|
pname = "git-interactive-rebase-tool";
|
||||||
@@ -13,7 +13,7 @@ rustPlatform.buildRustPackage rec {
|
|||||||
|
|
||||||
cargoHash = "sha256-9pUUKxPpyoX9f10ZiLWsol2rv66WzQqwa6VubRTrT9Y=";
|
cargoHash = "sha256-9pUUKxPpyoX9f10ZiLWsol2rv66WzQqwa6VubRTrT9Y=";
|
||||||
|
|
||||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv Security ];
|
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv apple-sdk_11 ];
|
||||||
|
|
||||||
# Compilation during tests fails if this env var is not set.
|
# Compilation during tests fails if this env var is not set.
|
||||||
preCheck = "export GIRT_BUILD_GIT_HASH=${version}";
|
preCheck = "export GIRT_BUILD_GIT_HASH=${version}";
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
{ mkDerivation, lib, fetchgit, pkg-config, qmake, qtbase, qttools, qtmultimedia, libvorbis, libtar, libxml2 }:
|
|
||||||
|
|
||||||
mkDerivation rec {
|
|
||||||
version = "0.8.5";
|
|
||||||
pname = "linuxstopmotion";
|
|
||||||
|
|
||||||
src = fetchgit {
|
|
||||||
url = "https://git.code.sf.net/p/linuxstopmotion/code";
|
|
||||||
rev = version;
|
|
||||||
sha256 = "1612lkwsfzc59wvdj2zbj5cwsyw66bwn31jrzjrxvygxdh4ab069";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ qmake pkg-config ];
|
|
||||||
buildInputs = [ qtbase qttools qtmultimedia libvorbis libtar libxml2 ];
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
substituteInPlace stopmotion.pro --replace '$$[QT_INSTALL_BINS]' '${lib.getDev qttools}/bin'
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Create stop-motion animation movies";
|
|
||||||
homepage = "http://linuxstopmotion.org/";
|
|
||||||
license = licenses.gpl2Plus;
|
|
||||||
platforms = platforms.linux;
|
|
||||||
maintainers = [ maintainers.bjornfor ];
|
|
||||||
mainProgram = "stopmotion";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -39,13 +39,13 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "crun";
|
pname = "crun";
|
||||||
version = "1.18";
|
version = "1.18.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "containers";
|
owner = "containers";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-t04jmLfkxZhvlfW79s8G7cc4W9ptFUQsD2a4/VODAC8=";
|
hash = "sha256-v/ZYy4aPsE7couVHSM4VFXPhn48cZK1odDK3r9yYprc=";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
, prePatch ? ""
|
, prePatch ? ""
|
||||||
, patches ? [ ]
|
, patches ? [ ]
|
||||||
, postPatch ? ""
|
, postPatch ? ""
|
||||||
|
, patchFlags ? []
|
||||||
, nativeBuildInputs ? [ ]
|
, nativeBuildInputs ? [ ]
|
||||||
, buildInputs ? [ ]
|
, buildInputs ? [ ]
|
||||||
# The output hash of the dependencies for this project.
|
# The output hash of the dependencies for this project.
|
||||||
@@ -45,7 +46,7 @@
|
|||||||
, npmWorkspace ? null
|
, npmWorkspace ? null
|
||||||
, nodejs ? topLevelArgs.nodejs
|
, nodejs ? topLevelArgs.nodejs
|
||||||
, npmDeps ? fetchNpmDeps {
|
, npmDeps ? fetchNpmDeps {
|
||||||
inherit forceGitDeps forceEmptyCache src srcs sourceRoot prePatch patches postPatch;
|
inherit forceGitDeps forceEmptyCache src srcs sourceRoot prePatch patches postPatch patchFlags;
|
||||||
name = "${name}-npm-deps";
|
name = "${name}-npm-deps";
|
||||||
hash = npmDepsHash;
|
hash = npmDepsHash;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
cmake
|
cmake
|
||||||
];
|
];
|
||||||
|
|
||||||
|
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-c++11-narrowing";
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Reference Implementation of SMPTE ST2065-4";
|
description = "Reference Implementation of SMPTE ST2065-4";
|
||||||
homepage = "https://github.com/ampas/aces_container";
|
homepage = "https://github.com/ampas/aces_container";
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
{ stdenv, fetchurl, lib, pkg-config, alsa-lib, libogg, libpulseaudio ? null, libjack2 ? null }:
|
{
|
||||||
|
stdenv,
|
||||||
|
fetchurl,
|
||||||
|
lib,
|
||||||
|
pkg-config,
|
||||||
|
alsa-lib,
|
||||||
|
ffmpeg,
|
||||||
|
libjack2,
|
||||||
|
libogg,
|
||||||
|
libpulseaudio,
|
||||||
|
speexdsp,
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "alsa-plugins";
|
pname = "alsa-plugins";
|
||||||
@@ -11,11 +22,14 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
nativeBuildInputs = [ pkg-config ];
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
|
||||||
# ToDo: a52, etc.?
|
buildInputs = [
|
||||||
buildInputs =
|
alsa-lib
|
||||||
[ alsa-lib libogg ]
|
ffmpeg
|
||||||
++ lib.optional (libpulseaudio != null) libpulseaudio
|
libjack2
|
||||||
++ lib.optional (libjack2 != null) libjack2;
|
libogg
|
||||||
|
libpulseaudio
|
||||||
|
speexdsp
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Various plugins for ALSA";
|
description = "Various plugins for ALSA";
|
||||||
|
|||||||
@@ -1,27 +1,43 @@
|
|||||||
{lib, stdenv, fetchFromGitHub, openssl, libpcap, libxcrypt}:
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
openssl,
|
||||||
|
libpcap,
|
||||||
|
libxcrypt,
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation {
|
||||||
pname = "asleap";
|
pname = "asleap";
|
||||||
version = "unstable-2021-06-20";
|
version = "unstable-2021-06-20";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "zackw";
|
owner = "zackw";
|
||||||
repo = pname;
|
repo = "asleap";
|
||||||
rev = "eb3bd42098cba42b65f499c9d8c73d890861b94f";
|
rev = "eb3bd42098cba42b65f499c9d8c73d890861b94f";
|
||||||
sha256 = "sha256-S6jS0cg9tHSfmP6VHyISkXJxczhPx3HDdxT46c+YmE8=";
|
sha256 = "sha256-S6jS0cg9tHSfmP6VHyISkXJxczhPx3HDdxT46c+YmE8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ openssl libpcap libxcrypt ];
|
buildInputs = [
|
||||||
|
openssl
|
||||||
|
libpcap
|
||||||
|
libxcrypt
|
||||||
|
];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
install -Dm755 asleap $out/bin/asleap
|
install -Dm755 asleap $out/bin/asleap
|
||||||
install -Dm755 genkeys $out/bin/genkeys
|
install -Dm755 genkeys $out/bin/genkeys
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = {
|
||||||
homepage = "https://github.com/zackw/asleap";
|
homepage = "https://github.com/zackw/asleap";
|
||||||
description = "Recovers weak LEAP and PPTP passwords";
|
description = "Recovers weak LEAP and PPTP passwords";
|
||||||
license = licenses.gpl2Only;
|
license = lib.licenses.gpl2Only;
|
||||||
maintainers = with maintainers; [ pyrox0 ];
|
maintainers = with lib.maintainers; [ pyrox0 ];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenvNoCC,
|
||||||
|
fetchFromGitHub,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenvNoCC.mkDerivation {
|
||||||
|
pname = "atkinson-monolegible";
|
||||||
|
version = "0-unstable-2023-02-27";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Hylian";
|
||||||
|
repo = "atkinson-monolegible";
|
||||||
|
rev = "4d0e404118dece699ca926c310588316bfcd5ac2";
|
||||||
|
hash = "sha256-U09ysphpDjXG/OwPxQDUiLHAYHGfiY+lL4+QIQLPj74=";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
install -Dm644 AtkinsonMonolegible.ttf -t $out/share/fonts/truetype
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/Hylian/atkinson-monolegible";
|
||||||
|
description = "Mono variant of the Atkinson Hyperlegible typeface";
|
||||||
|
license = lib.licenses.ofl;
|
||||||
|
platforms = lib.platforms.all;
|
||||||
|
maintainers = with lib.maintainers; [ Gliczy ];
|
||||||
|
};
|
||||||
|
}
|
||||||
Generated
+33
@@ -475,6 +475,39 @@
|
|||||||
"jar": "sha256-X08MQDHkuDyzae8A9JCc229isR49JT+DphhNgMXrMVc=",
|
"jar": "sha256-X08MQDHkuDyzae8A9JCc229isR49JT+DphhNgMXrMVc=",
|
||||||
"pom": "sha256-jcFqM2Rg2Fc4wPw+JKyUwGNwmwHZFYOOBV/PaAFgXV0="
|
"pom": "sha256-jcFqM2Rg2Fc4wPw+JKyUwGNwmwHZFYOOBV/PaAFgXV0="
|
||||||
},
|
},
|
||||||
|
"com/twelvemonkeys#twelvemonkeys/3.12.0": {
|
||||||
|
"pom": "sha256-ttCYdPvd2bslDReBepMe+OCTvBjnQob/BrBAVBmAxzA="
|
||||||
|
},
|
||||||
|
"com/twelvemonkeys/common#common-image/3.12.0": {
|
||||||
|
"jar": "sha256-YqOCHHJPrf2jRsHi2DsMUGoMQHS+JppSv04xksfdkrw=",
|
||||||
|
"pom": "sha256-Mvxj0YSlsUAz7Z6uKPTH91cL6IUMZ+80q1DIpb3qlX8="
|
||||||
|
},
|
||||||
|
"com/twelvemonkeys/common#common-io/3.12.0": {
|
||||||
|
"jar": "sha256-v6z+sCrKxH2/0fqwAC6uymVUfQQklJi2VDIMng/fZkc=",
|
||||||
|
"pom": "sha256-X7G3pgrtAmv+FsK7u0MDlUfe3Q1OYT6AEnuTtKLFY1k="
|
||||||
|
},
|
||||||
|
"com/twelvemonkeys/common#common-lang/3.12.0": {
|
||||||
|
"jar": "sha256-XGXlBLW2TYBoPg+nCh3RVN2D1N59o38h6VD1qcA7xm0=",
|
||||||
|
"pom": "sha256-nFFSKc9KTl73IdpjR/+hm5wCetXeEHmQWUBdf6MtjVI="
|
||||||
|
},
|
||||||
|
"com/twelvemonkeys/common#common/3.12.0": {
|
||||||
|
"pom": "sha256-2prJlYu3TvpH0EAuhjHAw4djh0qVMDcP9X8HMTLJVv8="
|
||||||
|
},
|
||||||
|
"com/twelvemonkeys/imageio#imageio-core/3.12.0": {
|
||||||
|
"jar": "sha256-NMb5G/OyF+0BFbzoKDI4+9AmRWKqaCtCJqOWDQ7emBU=",
|
||||||
|
"pom": "sha256-N9att80pHm9n9inza8bpGiV6VFjj7lgf7BJ/aZIYG3g="
|
||||||
|
},
|
||||||
|
"com/twelvemonkeys/imageio#imageio-metadata/3.12.0": {
|
||||||
|
"jar": "sha256-eX0Ca2fQfm1esAoatTpVrKq2+Apxxe4yVXIJPrkMDKo=",
|
||||||
|
"pom": "sha256-kIUqjzz4kZBqjShwC8/EQ/EZd1iEbm7lZR1pHBNCrpw="
|
||||||
|
},
|
||||||
|
"com/twelvemonkeys/imageio#imageio-webp/3.12.0": {
|
||||||
|
"jar": "sha256-Q9xEfM/jTFxcb10xGQJw4fm/ZfYDddaXriqP9DNGhSY=",
|
||||||
|
"pom": "sha256-YciGwb7ZmY5w46JD9w11sWV7CIAgf+FdOgbEh7LhQfg="
|
||||||
|
},
|
||||||
|
"com/twelvemonkeys/imageio#imageio/3.12.0": {
|
||||||
|
"pom": "sha256-ZI62q9rpluXh0kjqy1Gk3LYD4uwnHK6Mjh8PnLpK+Pk="
|
||||||
|
},
|
||||||
"commons-beanutils#commons-beanutils/1.9.4": {
|
"commons-beanutils#commons-beanutils/1.9.4": {
|
||||||
"jar": "sha256-fZOMgXiQKARcCMBl6UvnX8KAUnYg1b1itRnVg4UyNoo=",
|
"jar": "sha256-fZOMgXiQKARcCMBl6UvnX8KAUnYg1b1itRnVg4UyNoo=",
|
||||||
"pom": "sha256-w1zKe2HUZ42VeMvAuQG4cXtTmr+SVEQdp4uP5g3gZNA="
|
"pom": "sha256-w1zKe2HUZ42VeMvAuQG4cXtTmr+SVEQdp4uP5g3gZNA="
|
||||||
|
|||||||
@@ -21,13 +21,13 @@
|
|||||||
|
|
||||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
pname = "atlauncher";
|
pname = "atlauncher";
|
||||||
version = "3.4.37.3";
|
version = "3.4.37.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ATLauncher";
|
owner = "ATLauncher";
|
||||||
repo = "ATLauncher";
|
repo = "ATLauncher";
|
||||||
rev = "v${finalAttrs.version}";
|
rev = "v${finalAttrs.version}";
|
||||||
hash = "sha256-XdTbrM7FPR0o0d+p4ko48UonMsY+nLfiXj5fP2a3/zI=";
|
hash = "sha256-3Rs6XtqhD9PKz8ekF0STaANvPQ73KSUS8GIPvn9DmbQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
{ lib, stdenv, fetchurl, gmp
|
{
|
||||||
, withEmacsSupport ? true
|
lib,
|
||||||
, withContrib ? true }:
|
stdenv,
|
||||||
|
fetchurl,
|
||||||
|
gmp,
|
||||||
|
withEmacsSupport ? true,
|
||||||
|
withContrib ? true,
|
||||||
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
versionPkg = "0.4.2";
|
versionPkg = "0.4.2";
|
||||||
@@ -10,15 +15,13 @@ let
|
|||||||
hash = "sha256-m0hfBLsaNiLaIktcioK+ZtWUsWht3IDSJ6CzgJmS06c=";
|
hash = "sha256-m0hfBLsaNiLaIktcioK+ZtWUsWht3IDSJ6CzgJmS06c=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postInstallContrib = lib.optionalString withContrib
|
postInstallContrib = lib.optionalString withContrib ''
|
||||||
''
|
|
||||||
local contribDir=$out/lib/ats2-postiats-*/ ;
|
local contribDir=$out/lib/ats2-postiats-*/ ;
|
||||||
mkdir -p $contribDir ;
|
mkdir -p $contribDir ;
|
||||||
tar -xzf "${contrib}" --strip-components 1 -C $contribDir ;
|
tar -xzf "${contrib}" --strip-components 1 -C $contribDir ;
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstallEmacs = lib.optionalString withEmacsSupport
|
postInstallEmacs = lib.optionalString withEmacsSupport ''
|
||||||
''
|
|
||||||
local siteLispDir=$out/share/emacs/site-lisp/ats2 ;
|
local siteLispDir=$out/share/emacs/site-lisp/ats2 ;
|
||||||
mkdir -p $siteLispDir ;
|
mkdir -p $siteLispDir ;
|
||||||
install -m 0644 -v ./utils/emacs/*.el $siteLispDir ;
|
install -m 0644 -v ./utils/emacs/*.el $siteLispDir ;
|
||||||
@@ -49,20 +52,25 @@ stdenv.mkDerivation rec {
|
|||||||
"CCOMP=${stdenv.cc.targetPrefix}cc"
|
"CCOMP=${stdenv.cc.targetPrefix}cc"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=implicit-function-declaration";
|
||||||
|
|
||||||
setupHook =
|
setupHook =
|
||||||
let
|
let
|
||||||
hookFiles = [ ./setup-hook.sh ] ++ lib.optional withContrib ./setup-contrib-hook.sh;
|
hookFiles = [ ./setup-hook.sh ] ++ lib.optional withContrib ./setup-contrib-hook.sh;
|
||||||
in
|
in
|
||||||
builtins.toFile "setupHook.sh"
|
builtins.toFile "setupHook.sh" (lib.concatMapStringsSep "\n" builtins.readFile hookFiles);
|
||||||
(lib.concatMapStringsSep "\n" builtins.readFile hookFiles);
|
|
||||||
|
|
||||||
postInstall = postInstallContrib + postInstallEmacs;
|
postInstall = postInstallContrib + postInstallEmacs;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Functional programming language with dependent types";
|
description = "Functional programming language with dependent types";
|
||||||
homepage = "http://www.ats-lang.org";
|
homepage = "http://www.ats-lang.org";
|
||||||
license = licenses.gpl3Plus;
|
license = licenses.gpl3Plus;
|
||||||
platforms = platforms.unix;
|
platforms = platforms.unix;
|
||||||
maintainers = with maintainers; [ thoughtpolice ttuegel bbarker ];
|
maintainers = with maintainers; [
|
||||||
|
thoughtpolice
|
||||||
|
ttuegel
|
||||||
|
bbarker
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
From 7eff498538c201cabae769e20715282a1aab2266 Mon Sep 17 00:00:00 2001
|
||||||
|
From: wxt <3264117476@qq.com>
|
||||||
|
Date: Mon, 4 Nov 2024 21:25:33 +0800
|
||||||
|
Subject: [PATCH] add go.mod & go.sum
|
||||||
|
|
||||||
|
---
|
||||||
|
go.mod | 10 ++++++++++
|
||||||
|
go.sum | 16 ++++++++++++++++
|
||||||
|
2 files changed, 26 insertions(+)
|
||||||
|
create mode 100644 go.mod
|
||||||
|
create mode 100644 go.sum
|
||||||
|
|
||||||
|
diff --git a/go.mod b/go.mod
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..5d3a1fa
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/go.mod
|
||||||
|
@@ -0,0 +1,10 @@
|
||||||
|
+module github.com/remind101/assume-role
|
||||||
|
+
|
||||||
|
+go 1.23.2
|
||||||
|
+
|
||||||
|
+require (
|
||||||
|
+ github.com/aws/aws-sdk-go v1.55.5
|
||||||
|
+ gopkg.in/yaml.v2 v2.4.0
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+require github.com/jmespath/go-jmespath v0.4.0 // indirect
|
||||||
|
diff --git a/go.sum b/go.sum
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..b35ff93
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/go.sum
|
||||||
|
@@ -0,0 +1,16 @@
|
||||||
|
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
|
||||||
|
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
|
||||||
|
+github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
+github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
|
||||||
|
+github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
||||||
|
+github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
|
||||||
|
+github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
|
||||||
|
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
|
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||||
|
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||||
|
--
|
||||||
|
2.46.1
|
||||||
|
|
||||||
+15
-8
@@ -1,13 +1,17 @@
|
|||||||
{ lib
|
{
|
||||||
, fetchFromGitHub
|
lib,
|
||||||
, buildGoModule
|
fetchFromGitHub,
|
||||||
|
buildGoModule,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "aws-assume-role";
|
pname = "aws-assume-role";
|
||||||
version = "0.3.2";
|
version = "0.3.2";
|
||||||
|
|
||||||
outputs = [ "out" "doc" ];
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"doc"
|
||||||
|
];
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "remind101";
|
owner = "remind101";
|
||||||
@@ -16,11 +20,14 @@ buildGoModule rec {
|
|||||||
sha256 = "sha256-7+9qi9lYzv1YCFhUyla+5Gqs5nBUiiazhFwiqHzMFd4=";
|
sha256 = "sha256-7+9qi9lYzv1YCFhUyla+5Gqs5nBUiiazhFwiqHzMFd4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = null;
|
deleteVendor = true;
|
||||||
|
|
||||||
postPatch = ''
|
vendorHash = "sha256-NIY6w/hQQ357KHEDEHUYVLbkQKsm8FLtRf3/AbbgukA=";
|
||||||
go mod init github.com/remind101/assume-role
|
|
||||||
'';
|
patches = [
|
||||||
|
# Generate with go mod init github.com/remind101/assume-role && go mod tidy
|
||||||
|
./0001-add-go.mod-go.sum.patch
|
||||||
|
];
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
install -Dm444 -t $out/share/doc/aws-assume-role README.md
|
install -Dm444 -t $out/share/doc/aws-assume-role README.md
|
||||||
@@ -10,16 +10,16 @@
|
|||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "bacon";
|
pname = "bacon";
|
||||||
version = "3.0.0";
|
version = "3.2.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Canop";
|
owner = "Canop";
|
||||||
repo = "bacon";
|
repo = "bacon";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-fSlakjZbY8jrFkCqVxPr3UKwf1Oq4yPhLmVbzsksSeg=";
|
hash = "sha256-WbTxy8ijXez1x2G7NGGVMcyjgE7J7MDsGgGRpb4jKXQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-WT0uXmchhapss3AU4+e2wA3nBVjzikfRNRyAvQnpJfY=";
|
cargoHash = "sha256-rlWNrkzUDs3rbQ5ZV4fKU/EKEy4fVbxEP0+wNwXi7Ag=";
|
||||||
|
|
||||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
|
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
darwin.apple_sdk.frameworks.CoreServices
|
darwin.apple_sdk.frameworks.CoreServices
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
bazel_6,
|
bazel_6,
|
||||||
jdk,
|
jdk,
|
||||||
|
nix-update-script,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
@@ -18,13 +19,13 @@ let
|
|||||||
in
|
in
|
||||||
buildBazelPackage rec {
|
buildBazelPackage rec {
|
||||||
pname = "bant";
|
pname = "bant";
|
||||||
version = "0.1.7";
|
version = "0.1.8";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "hzeller";
|
owner = "hzeller";
|
||||||
repo = "bant";
|
repo = "bant";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-QbxPosjlrpxbz6gQKUKccF2Gu/i5xvqh2gwfABYE8kE=";
|
hash = "sha256-CMqh2v6Y/jvrDC2M4Q+pC0FkNJ95gbGTR1UC6zviwV4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
bazelFlags = [
|
bazelFlags = [
|
||||||
@@ -39,8 +40,8 @@ buildBazelPackage rec {
|
|||||||
fetchAttrs = {
|
fetchAttrs = {
|
||||||
hash =
|
hash =
|
||||||
{
|
{
|
||||||
aarch64-linux = "sha256-LNca4h4yceSgve9GYUoXqlODKPjLAa71kh1BWXqRYtk=";
|
aarch64-linux = "sha256-K+uGH3ox49taSPZ1aLYPrOLNRO3aLQeOSdrkmTC444U=";
|
||||||
x86_64-linux = "sha256-bRFIfaVbsU2WroXR/i0E7J4rWeaNEoum93r8qOMXXvc=";
|
x86_64-linux = "sha256-yNwD3n7exyG5LbhR2GuKIvoul6UQnyk3+8pLpnDzjFw=";
|
||||||
}
|
}
|
||||||
.${system} or (throw "No hash for system: ${system}");
|
.${system} or (throw "No hash for system: ${system}");
|
||||||
};
|
};
|
||||||
@@ -60,14 +61,16 @@ buildBazelPackage rec {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
passthru.updateScript = nix-update-script { };
|
||||||
|
|
||||||
|
meta = {
|
||||||
description = "Bazel/Build Analysis and Navigation Tool";
|
description = "Bazel/Build Analysis and Navigation Tool";
|
||||||
homepage = "http://bant.build/";
|
homepage = "http://bant.build/";
|
||||||
license = licenses.gpl2Only;
|
license = lib.licenses.gpl2Only;
|
||||||
maintainers = with maintainers; [
|
maintainers = with lib.maintainers; [
|
||||||
hzeller
|
hzeller
|
||||||
lromor
|
lromor
|
||||||
];
|
];
|
||||||
platforms = platforms.linux;
|
platforms = lib.platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
, libiconv
|
, libiconv
|
||||||
, installShellFiles
|
, installShellFiles
|
||||||
, makeWrapper
|
, makeWrapper
|
||||||
, darwin
|
, apple-sdk_11
|
||||||
}:
|
}:
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
@@ -24,7 +24,7 @@ rustPlatform.buildRustPackage rec {
|
|||||||
|
|
||||||
nativeBuildInputs = [ pkg-config installShellFiles makeWrapper ];
|
nativeBuildInputs = [ pkg-config installShellFiles makeWrapper ];
|
||||||
|
|
||||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv darwin.apple_sdk.frameworks.Security ];
|
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv apple-sdk_11 ];
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
installManPage $releaseDir/build/bat-*/out/assets/manual/bat.1
|
installManPage $releaseDir/build/bat-*/out/assets/manual/bat.1
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
{ lib
|
{
|
||||||
, stdenv
|
lib,
|
||||||
, fetchFromGitHub
|
stdenv,
|
||||||
, copyDesktopItems
|
fetchFromGitHub,
|
||||||
, fontconfig
|
copyDesktopItems,
|
||||||
, freetype
|
fontconfig,
|
||||||
, libX11
|
freetype,
|
||||||
, libXext
|
libX11,
|
||||||
, libXft
|
libXext,
|
||||||
, libXinerama
|
libXft,
|
||||||
, makeDesktopItem
|
libXinerama,
|
||||||
, pkg-config
|
makeDesktopItem,
|
||||||
, which
|
pkg-config,
|
||||||
|
which,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
@@ -30,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
which
|
which
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs =[
|
buildInputs = [
|
||||||
libX11
|
libX11
|
||||||
libXext
|
libXext
|
||||||
libXft
|
libXft
|
||||||
@@ -39,7 +40,10 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
freetype
|
freetype
|
||||||
];
|
];
|
||||||
|
|
||||||
outputs = [ "out" "man" ];
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
];
|
||||||
|
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
|
|
||||||
@@ -51,6 +55,8 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
patchShebangs configure
|
patchShebangs configure
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-D_C99_SOURCE";
|
||||||
|
|
||||||
desktopItems = [
|
desktopItems = [
|
||||||
(makeDesktopItem {
|
(makeDesktopItem {
|
||||||
name = "berry";
|
name = "berry";
|
||||||
|
|||||||
@@ -2,14 +2,10 @@
|
|||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
darwin,
|
|
||||||
testers,
|
testers,
|
||||||
nix-update-script,
|
nix-update-script,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
|
||||||
inherit (darwin.apple_sdk.frameworks) Foundation IOBluetooth;
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "blueutil";
|
pname = "blueutil";
|
||||||
version = "2.10.0";
|
version = "2.10.0";
|
||||||
@@ -21,11 +17,6 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
hash = "sha256-x2khx8Y0PolpMiyrBatT2aHHyacrQVU/02Z4Dz9fBtI=";
|
hash = "sha256-x2khx8Y0PolpMiyrBatT2aHHyacrQVU/02Z4Dz9fBtI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
|
||||||
Foundation
|
|
||||||
IOBluetooth
|
|
||||||
];
|
|
||||||
|
|
||||||
env.NIX_CFLAGS_COMPILE = "-Wall -Wextra -Werror -mmacosx-version-min=10.9 -framework Foundation -framework IOBluetooth";
|
env.NIX_CFLAGS_COMPILE = "-Wall -Wextra -Werror -mmacosx-version-min=10.9 -framework Foundation -framework IOBluetooth";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
|||||||
@@ -14,17 +14,10 @@
|
|||||||
cairo,
|
cairo,
|
||||||
pango,
|
pango,
|
||||||
npm-lockfile-fix,
|
npm-lockfile-fix,
|
||||||
overrideSDK,
|
apple-sdk_11,
|
||||||
darwin,
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
buildNpmPackage rec {
|
||||||
# fix for: https://github.com/NixOS/nixpkgs/issues/272156
|
|
||||||
buildNpmPackage' = buildNpmPackage.override {
|
|
||||||
stdenv = if stdenv.hostPlatform.isDarwin then overrideSDK stdenv "11.0" else stdenv;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
buildNpmPackage' rec {
|
|
||||||
pname = "bruno";
|
pname = "bruno";
|
||||||
version = "1.34.0";
|
version = "1.34.0";
|
||||||
|
|
||||||
@@ -59,7 +52,8 @@ buildNpmPackage' rec {
|
|||||||
pango
|
pango
|
||||||
]
|
]
|
||||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
darwin.apple_sdk_11_0.frameworks.CoreText
|
# fix for: https://github.com/NixOS/nixpkgs/issues/272156
|
||||||
|
apple-sdk_11
|
||||||
];
|
];
|
||||||
|
|
||||||
desktopItems = [
|
desktopItems = [
|
||||||
|
|||||||
@@ -16,14 +16,14 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "buffer";
|
pname = "buffer";
|
||||||
version = "0.9.5";
|
version = "0.9.7";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
domain = "gitlab.gnome.org";
|
domain = "gitlab.gnome.org";
|
||||||
owner = "cheywood";
|
owner = "cheywood";
|
||||||
repo = "buffer";
|
repo = "buffer";
|
||||||
rev = finalAttrs.version;
|
rev = finalAttrs.version;
|
||||||
hash = "sha256-WhUSiZ2Nty5CdaJC8zZVkUptP5cRnMByZKy3e9TAyjs=";
|
hash = "sha256-W6LTTQvIMAB99q2W11EBlBknJnOuv4ptgf5SSM422Cg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
buildGoModule,
|
||||||
|
cbconvert,
|
||||||
|
gtk3,
|
||||||
|
wrapGAppsHook3,
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "cbconvert-gui";
|
||||||
|
|
||||||
|
inherit (cbconvert)
|
||||||
|
patches
|
||||||
|
proxyVendor
|
||||||
|
src
|
||||||
|
tags
|
||||||
|
version
|
||||||
|
;
|
||||||
|
|
||||||
|
nativeBuildInputs = cbconvert.nativeBuildInputs ++ [
|
||||||
|
wrapGAppsHook3
|
||||||
|
];
|
||||||
|
buildInputs = cbconvert.buildInputs ++ [ gtk3 ];
|
||||||
|
|
||||||
|
vendorHash = "sha256-vvCvKecPszhNCQdgm3mQMb5+486BGZ9sz3R0b70eLeQ=";
|
||||||
|
modRoot = "cmd/cbconvert-gui";
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-s"
|
||||||
|
"-w"
|
||||||
|
"-X main.appVersion=${version}"
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
install -D --mode=0644 --target-directory=$out/share/applications/ dist/linux/cbconvert.desktop
|
||||||
|
install -D --mode=0644 --target-directory=$out/icons/hicolor/256x256/apps dist/linux/cbconvert.png
|
||||||
|
install -D --mode=0644 --target-directory=$out/share/thumbnailers dist/linux/cbconvert.thumbnailer
|
||||||
|
install -D --mode=0644 dist/linux/flatpak/io.github.gen2brain.cbconvert.metainfo.xml $out/share/metainfo/cbconvert.metainfo.xml
|
||||||
|
'';
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
substituteInPlace $out/share/metainfo/cbconvert.metainfo.xml \
|
||||||
|
--replace-fail "io.github.gen2brain.cbconvert" "cbconvert"
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = cbconvert.meta // {
|
||||||
|
mainProgram = "cbconvert-gui";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
buildGoModule,
|
||||||
|
bzip2,
|
||||||
|
callPackage,
|
||||||
|
cbconvert,
|
||||||
|
fetchFromGitHub,
|
||||||
|
fetchpatch2,
|
||||||
|
imagemagick,
|
||||||
|
lib,
|
||||||
|
libunarr,
|
||||||
|
mupdf-headless,
|
||||||
|
nix-update-script,
|
||||||
|
pkg-config,
|
||||||
|
testers,
|
||||||
|
zlib,
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "cbconvert";
|
||||||
|
version = "1.0.4";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "gen2brain";
|
||||||
|
repo = "cbconvert";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-9x7RXyiQoV2nIVFnG1XHcYfTQiMZ88Ck7uuY7NLK8CA=";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Update dependencies in order to use the extlib tag.
|
||||||
|
patches = [
|
||||||
|
(fetchpatch2 {
|
||||||
|
name = "update-dependencies-1.patch";
|
||||||
|
url = "https://github.com/gen2brain/cbconvert/commit/1a36ec17b2c012f278492d60d469b8e8457a6110.patch";
|
||||||
|
hash = "sha256-E+HWYPz9FtU3JAktzIRflF/pHdLfoaciBmjb7UOQYLo=";
|
||||||
|
})
|
||||||
|
(fetchpatch2 {
|
||||||
|
name = "update-dependencies-2.patch";
|
||||||
|
url = "https://github.com/gen2brain/cbconvert/commit/74c5de699413e95133f97666b64a1866f88fedd5.patch";
|
||||||
|
hash = "sha256-rrJsYJHcfNWF90vwUAT3J/gqg22e1gk6I48LsTrYbmU=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
vendorHash = "sha256-aVInsWvygNH+/h7uQs4hAPOO2gsSkBx+tI+TK77M/hg=";
|
||||||
|
modRoot = "cmd/cbconvert";
|
||||||
|
|
||||||
|
proxyVendor = true;
|
||||||
|
|
||||||
|
# The extlib tag forces the github.com/gen2brain/go-unarr module to use external libraries instead of bundled ones.
|
||||||
|
tags = [ "extlib" ];
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-s"
|
||||||
|
"-w"
|
||||||
|
"-X main.appVersion=${version}"
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
bzip2
|
||||||
|
imagemagick
|
||||||
|
libunarr
|
||||||
|
mupdf-headless
|
||||||
|
zlib
|
||||||
|
];
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
gui = callPackage ./gui.nix { };
|
||||||
|
updateScript = nix-update-script { };
|
||||||
|
tests.version = testers.testVersion {
|
||||||
|
package = cbconvert;
|
||||||
|
command = "cbconvert version";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Comic Book converter";
|
||||||
|
homepage = "https://github.com/gen2brain/cbconvert";
|
||||||
|
changelog = "https://github.com/gen2brain/cbconvert/releases/tag/v${version}";
|
||||||
|
license = with lib.licenses; [ gpl3Only ];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
maintainers = with lib.maintainers; [ jwillikers ];
|
||||||
|
mainProgram = "cbconvert";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -13,13 +13,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "clairvoyant";
|
pname = "clairvoyant";
|
||||||
version = "3.1.7";
|
version = "3.1.8";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cassidyjames";
|
owner = "cassidyjames";
|
||||||
repo = "clairvoyant";
|
repo = "clairvoyant";
|
||||||
rev = finalAttrs.version;
|
rev = finalAttrs.version;
|
||||||
hash = "sha256-p9Lgs5z5oRuMQYRKzWp+aQDi0FnxvbQGLZpBigolHUw=";
|
hash = "sha256-SksJ0hOt2CJwrQj4dz63D53GM/PYx7Q/g+OgCo76dIE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|||||||
Generated
+11
@@ -0,0 +1,11 @@
|
|||||||
|
# This file was automatically generated by passthru.fetch-deps.
|
||||||
|
# Please dont edit it manually, your changes might get overwritten!
|
||||||
|
|
||||||
|
{ fetchNuGet }:
|
||||||
|
[
|
||||||
|
(fetchNuGet {
|
||||||
|
pname = "CommandLineParser";
|
||||||
|
version = "2.9.1";
|
||||||
|
hash = "sha256-ApU9y1yX60daSjPk3KYDBeJ7XZByKW8hse9NRZGcjeo=";
|
||||||
|
})
|
||||||
|
]
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
keystone,
|
||||||
|
fetchFromGitHub,
|
||||||
|
buildDotnetModule,
|
||||||
|
dotnetCorePackages,
|
||||||
|
lib,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
version = "1.0.1";
|
||||||
|
pname = "CLPS2C-Compiler";
|
||||||
|
owner = "NiV-L-A";
|
||||||
|
keystone-rev = "MIPS-0.9.2";
|
||||||
|
keystone-sha256 = "sha256-xLkO06ZgnmAavJMP1kjDwXT1hc5eSDXv+4MUkOz6xeo=";
|
||||||
|
keystone-src = (
|
||||||
|
fetchFromGitHub {
|
||||||
|
name = "keystone";
|
||||||
|
inherit owner;
|
||||||
|
repo = "keystone";
|
||||||
|
rev = keystone-rev;
|
||||||
|
sha256 = keystone-sha256;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
keystone-override = keystone.overrideAttrs (old: {
|
||||||
|
src = keystone-src;
|
||||||
|
});
|
||||||
|
in
|
||||||
|
buildDotnetModule rec {
|
||||||
|
inherit version pname;
|
||||||
|
|
||||||
|
srcs = [
|
||||||
|
(fetchFromGitHub {
|
||||||
|
name = pname;
|
||||||
|
inherit owner;
|
||||||
|
repo = pname;
|
||||||
|
rev = "CLPS2C-Compiler-${version}";
|
||||||
|
sha256 = "sha256-4gLdrIxyw9BFSxF+EXZqTgUf9Kik6oK7eO9HBUzk4QM=";
|
||||||
|
})
|
||||||
|
keystone-src
|
||||||
|
];
|
||||||
|
|
||||||
|
sourceRoot = ".";
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
./patches/dont_trim_leading_newline.patch
|
||||||
|
./patches/build_fixes.patch
|
||||||
|
./patches/remove_platformtarget.patch
|
||||||
|
./patches/use_compiled_keystone.patch
|
||||||
|
./patches/set_langversion.patch
|
||||||
|
./patches/set_runtimeidentifiers.patch
|
||||||
|
./patches/keystone_set_targetframework.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
dotnet-sdk = dotnetCorePackages.sdk_8_0;
|
||||||
|
dotnet-runtime = dotnetCorePackages.runtime_8_0;
|
||||||
|
|
||||||
|
dotnetFlags = [
|
||||||
|
"-p:TargetFramework=net8.0"
|
||||||
|
];
|
||||||
|
|
||||||
|
nugetDeps = ./deps.nix;
|
||||||
|
|
||||||
|
runtimeDeps = [
|
||||||
|
keystone-override
|
||||||
|
];
|
||||||
|
|
||||||
|
projectFile = "CLPS2C-Compiler/CLPS2C-Compiler/CLPS2C-Compiler.csproj";
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/NiV-L-A/CLPS2C-Compiler";
|
||||||
|
description = "Compiler for CLPS2C, a domain-specific language built specifically for writing PS2 cheat codes";
|
||||||
|
mainProgram = "CLPS2C-Compiler";
|
||||||
|
maintainers = [ lib.maintainers.gigahawk ];
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,193 @@
|
|||||||
|
diff --git a/CLPS2C-Compiler/Program.cs b/CLPS2C-Compiler/Program.cs
|
||||||
|
index 6991896..a086433 100644
|
||||||
|
--- a/CLPS2C-Compiler/CLPS2C-Compiler/Program.cs
|
||||||
|
+++ b/CLPS2C-Compiler/CLPS2C-Compiler/Program.cs
|
||||||
|
@@ -1166,7 +1166,7 @@ namespace CLPS2C_Compiler
|
||||||
|
string Value_1 = "";
|
||||||
|
string Value_2 = "";
|
||||||
|
// Handle a bit differently in case there's a label at the start
|
||||||
|
- if (command.Type.EndsWith(':'))
|
||||||
|
+ if (command.Type.EndsWith(":"))
|
||||||
|
{
|
||||||
|
OpCode = command.Data[0].ToUpper();
|
||||||
|
Register = command.Data[1];
|
||||||
|
@@ -1201,7 +1201,7 @@ namespace CLPS2C_Compiler
|
||||||
|
}
|
||||||
|
|
||||||
|
Output = $"lui {Register},0x{Value_1}; {OpCode} {Register},{Value_2}({Register})";
|
||||||
|
- if (command.Type.EndsWith(':'))
|
||||||
|
+ if (command.Type.EndsWith(":"))
|
||||||
|
{
|
||||||
|
Output = $"{command.FullLine.Substring(0, command.FullLine.IndexOf(':'))}: {Output}";
|
||||||
|
}
|
||||||
|
@@ -1589,7 +1589,7 @@ namespace CLPS2C_Compiler
|
||||||
|
|
||||||
|
while (IfIndex != -1)
|
||||||
|
{
|
||||||
|
- int ExtraIfCount = commands[IfIndex].FullLine.Split("&&", StringSplitOptions.None).Length - 1;
|
||||||
|
+ int ExtraIfCount = commands[IfIndex].FullLine.Split(new string[] { "&&" }, StringSplitOptions.None).Length - 1;
|
||||||
|
for (int i = 0; i < ExtraIfCount; i++)
|
||||||
|
{
|
||||||
|
// Add more IF commands
|
||||||
|
@@ -1807,7 +1807,7 @@ namespace CLPS2C_Compiler
|
||||||
|
for (int j = 0; j < commands[i].Data.Count; j++)
|
||||||
|
{
|
||||||
|
string Target = commands[i].Data[j];
|
||||||
|
- if (Target.StartsWith('+') || Target.StartsWith(','))
|
||||||
|
+ if (Target.StartsWith("+") || Target.StartsWith(","))
|
||||||
|
{
|
||||||
|
Target = Target.Substring(1).TrimStart();
|
||||||
|
}
|
||||||
|
@@ -1815,14 +1815,14 @@ namespace CLPS2C_Compiler
|
||||||
|
if (IsVarDeclared(Target, listSets))
|
||||||
|
{
|
||||||
|
List<string> ListValues = GetSetValueFromTarget(Target, commands[i].ID, listSets);
|
||||||
|
- if (commands[i].Data[j].StartsWith('+') || commands[i].Data[j].StartsWith(','))
|
||||||
|
+ if (commands[i].Data[j].StartsWith("+") || commands[i].Data[j].StartsWith(","))
|
||||||
|
{
|
||||||
|
ListValues[0] = commands[i].Data[j][0] + ListValues[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int k = 1; k < ListValues.Count; k++)
|
||||||
|
{
|
||||||
|
- if (ListValues[k].StartsWith('+') || ListValues[k].StartsWith(','))
|
||||||
|
+ if (ListValues[k].StartsWith("+") || ListValues[k].StartsWith(","))
|
||||||
|
{
|
||||||
|
ListValues[k] = ListValues[k][0] + ListValues[k].Substring(1).TrimStart();
|
||||||
|
}
|
||||||
|
@@ -1834,7 +1834,7 @@ namespace CLPS2C_Compiler
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (commands[i].Data[j].StartsWith('+') || commands[i].Data[j].StartsWith(','))
|
||||||
|
+ if (commands[i].Data[j].StartsWith("+") || commands[i].Data[j].StartsWith(","))
|
||||||
|
{
|
||||||
|
commands[i].Data[j] = commands[i].Data[j][0] + Target;
|
||||||
|
}
|
||||||
|
@@ -1912,7 +1912,7 @@ namespace CLPS2C_Compiler
|
||||||
|
|
||||||
|
for (i = i + 1; i < command.Data.Count; i++)
|
||||||
|
{
|
||||||
|
- if (!command.Data[i].StartsWith('+'))
|
||||||
|
+ if (!command.Data[i].StartsWith("+"))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -1940,12 +1940,12 @@ namespace CLPS2C_Compiler
|
||||||
|
|
||||||
|
for (i = i + 1; i < command.Data.Count; i++)
|
||||||
|
{
|
||||||
|
- if (command.Data[i].StartsWith(','))
|
||||||
|
+ if (command.Data[i].StartsWith(","))
|
||||||
|
{
|
||||||
|
ListOffs.Add(TmpAddress.ToString("X8"));
|
||||||
|
TmpAddress = 0;
|
||||||
|
}
|
||||||
|
- else if (!command.Data[i].StartsWith('+'))
|
||||||
|
+ else if (!command.Data[i].StartsWith("+"))
|
||||||
|
{
|
||||||
|
ListOffs.Add(TmpAddress.ToString("X8"));
|
||||||
|
TmpAddress = 0;
|
||||||
|
@@ -1980,7 +1980,7 @@ namespace CLPS2C_Compiler
|
||||||
|
|
||||||
|
for (i = i + 1; i < command.Data.Count; i++)
|
||||||
|
{
|
||||||
|
- if (!command.Data[i].StartsWith('+'))
|
||||||
|
+ if (!command.Data[i].StartsWith("+"))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -2008,7 +2008,7 @@ namespace CLPS2C_Compiler
|
||||||
|
|
||||||
|
for (i = i + 1; i < command.Data.Count; i++)
|
||||||
|
{
|
||||||
|
- if (!command.Data[i].StartsWith('+'))
|
||||||
|
+ if (!command.Data[i].StartsWith("+"))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -2040,7 +2040,7 @@ namespace CLPS2C_Compiler
|
||||||
|
{
|
||||||
|
string Value = "";
|
||||||
|
uint Sum = 0;
|
||||||
|
- if (command.Data[i].StartsWith('"'))
|
||||||
|
+ if (command.Data[i].StartsWith("\""))
|
||||||
|
{
|
||||||
|
// string
|
||||||
|
Value = command.Data[i];
|
||||||
|
@@ -2059,7 +2059,7 @@ namespace CLPS2C_Compiler
|
||||||
|
for (i = i + 1; i < command.Data.Count; i++)
|
||||||
|
{
|
||||||
|
string Element = command.Data[i];
|
||||||
|
- if (!Element.StartsWith('+') || Element == "+")
|
||||||
|
+ if (!Element.StartsWith("+") || Element == "+")
|
||||||
|
{
|
||||||
|
// without +, or just '+'
|
||||||
|
SetError(ERROR.WRONG_SYNTAX, command);
|
||||||
|
@@ -2072,7 +2072,7 @@ namespace CLPS2C_Compiler
|
||||||
|
// string
|
||||||
|
if (Sum > 0)
|
||||||
|
{
|
||||||
|
- if (Value.EndsWith('"'))
|
||||||
|
+ if (Value.EndsWith("\""))
|
||||||
|
{
|
||||||
|
Value = Value.TrimEnd('"') + Sum.ToString() + '"';
|
||||||
|
}
|
||||||
|
@@ -2089,7 +2089,7 @@ namespace CLPS2C_Compiler
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
string Tmp = GetSubstringInQuotes(Element, false);
|
||||||
|
- if (Value.EndsWith('"'))
|
||||||
|
+ if (Value.EndsWith("\""))
|
||||||
|
{
|
||||||
|
Value = Value.TrimEnd('"') + Tmp + '"';
|
||||||
|
}
|
||||||
|
@@ -2112,7 +2112,7 @@ namespace CLPS2C_Compiler
|
||||||
|
|
||||||
|
if (Sum > 0)
|
||||||
|
{
|
||||||
|
- if (Value.EndsWith('"'))
|
||||||
|
+ if (Value.EndsWith("\""))
|
||||||
|
{
|
||||||
|
Value = Value.TrimEnd('"') + Sum.ToString() + '"';
|
||||||
|
}
|
||||||
|
diff --git a/CLPS2C-Compiler/Util.cs b/CLPS2C-Compiler/Util.cs
|
||||||
|
index 4560c73..7f82ae6 100644
|
||||||
|
--- a/CLPS2C-Compiler/CLPS2C-Compiler/Util.cs
|
||||||
|
+++ b/CLPS2C-Compiler/CLPS2C-Compiler/Util.cs
|
||||||
|
@@ -48,7 +48,7 @@ namespace CLPS2C_Compiler
|
||||||
|
// ([^ \t\n\r\f\v(+,]+) - Any other word. This is \S, and '(', '+', ','
|
||||||
|
MatchCollection Matches = Regex.Matches(line, @"(\(.*\))|(""(?:\\.|[^""])*""?)|(\+\s*((""(?:\\.|[^""])*""?)|([^+""]+?))?(?=\+|$| |,))|(,(""?)([^,""]+?)\8(?=,|$| |\+))|([^ \t\n\r\f\v(+,]+)");
|
||||||
|
Type = Matches[0].Value.ToUpper();
|
||||||
|
- Data = Matches.Skip(1).Take(Matches.Count - 1).Select(item => item.Value).ToList(); // Data has every word except first
|
||||||
|
+ Data = Matches.Cast<Match>().Skip(1).Take(Matches.Count - 1).Select(item => item.Value).ToList(); // Data has every word except first
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AppendToTraceback(string file, string fullLine, int lineIdx)
|
||||||
|
@@ -165,7 +165,7 @@ namespace CLPS2C_Compiler
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// It's a comment, count new lines
|
||||||
|
- int newLinesCount = match.Value.Split(Program._newLine).Length - 1;
|
||||||
|
+ int newLinesCount = match.Value.Split(new string[] { Program._newLine }, StringSplitOptions.None).Length - 1;
|
||||||
|
return string.Concat(Enumerable.Repeat(Program._newLine, newLinesCount));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
@@ -486,7 +486,7 @@ namespace CLPS2C_Compiler
|
||||||
|
for (int i = 0; i < Output.Count; i++)
|
||||||
|
{
|
||||||
|
string Element = Output[i];
|
||||||
|
- if (Element.StartsWith('+'))
|
||||||
|
+ if (Element.StartsWith("+"))
|
||||||
|
{
|
||||||
|
Element = Element.Substring(1).TrimStart();
|
||||||
|
}
|
||||||
|
@@ -496,7 +496,7 @@ namespace CLPS2C_Compiler
|
||||||
|
List<string> RecursiveValues = GetSetValueFromTarget(Element, SetID, listSets);
|
||||||
|
if (RecursiveValues.Count != 0)
|
||||||
|
{
|
||||||
|
- if (Output[i].StartsWith('+'))
|
||||||
|
+ if (Output[i].StartsWith("+"))
|
||||||
|
{
|
||||||
|
RecursiveValues[0] = "+" + RecursiveValues[0];
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
diff --git a/CLPS2C-Compiler/Program.cs b/CLPS2C-Compiler/Program.cs
|
||||||
|
index 6991896..fe8cd5f 100644
|
||||||
|
--- a/CLPS2C-Compiler/CLPS2C-Compiler/Program.cs
|
||||||
|
+++ b/CLPS2C-Compiler/CLPS2C-Compiler/Program.cs
|
||||||
|
@@ -90,10 +90,6 @@ namespace CLPS2C_Compiler
|
||||||
|
}
|
||||||
|
else if (OutputLines.Count != 0)
|
||||||
|
{
|
||||||
|
- if (OutputLines[0].StartsWith(_newLine))
|
||||||
|
- {
|
||||||
|
- OutputLines[0] = OutputLines[0].Substring(2);
|
||||||
|
- }
|
||||||
|
Output += string.Join("", OutputLines);
|
||||||
|
|
||||||
|
// Convert to PNACH Format
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/bindings/csharp/Keystone.Net/Keystone.Net.csproj b/bindings/csharp/Keystone.Net/Keystone.Net.csproj
|
||||||
|
index 04801b4..4c6fe15 100644
|
||||||
|
--- a/keystone/bindings/csharp/Keystone.Net/Keystone.Net.csproj
|
||||||
|
+++ b/keystone/bindings/csharp/Keystone.Net/Keystone.Net.csproj
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
- <TargetFramework>netstandard2.0</TargetFramework>
|
||||||
|
+ <TargetFramework>net8.0</TargetFramework>
|
||||||
|
<RootNamespace>Keystone</RootNamespace>
|
||||||
|
|
||||||
|
<Version>1.1.0</Version>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
diff --git a/CLPS2C-Compiler/CLPS2C-Compiler.csproj b/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
index 867533e..80f7923 100644
|
||||||
|
--- a/CLPS2C-Compiler/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
+++ b/CLPS2C-Compiler/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
@@ -6,7 +6,6 @@
|
||||||
|
<RootNamespace>CLPS2C_Compiler</RootNamespace>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
- <PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ApplicationIcon>256x256.ico</ApplicationIcon>
|
||||||
|
<Version>1.0.1</Version>
|
||||||
|
</PropertyGroup>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
diff --git a/CLPS2C-Compiler/CLPS2C-Compiler.csproj b/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
index 867533e..34b30a4 100644
|
||||||
|
--- a/CLPS2C-Compiler/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
+++ b/CLPS2C-Compiler/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
@@ -5,6 +5,7 @@
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<RootNamespace>CLPS2C_Compiler</RootNamespace>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
+ <LangVersion>10.0</LangVersion>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ApplicationIcon>256x256.ico</ApplicationIcon>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
diff --git a/CLPS2C-Compiler/CLPS2C-Compiler.csproj b/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
index 867533e..ab44095 100644
|
||||||
|
--- a/CLPS2C-Compiler/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
+++ b/CLPS2C-Compiler/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
+ <RuntimeIdentifiers>win-x86;win-x64;win-arm64;linux-x64;linux-arm64;osx-x64</RuntimeIdentifiers>
|
||||||
|
<RootNamespace>CLPS2C_Compiler</RootNamespace>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
diff --git a/CLPS2C-Compiler/CLPS2C-Compiler.csproj b/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
index 867533e..17a3aca 100644
|
||||||
|
--- a/CLPS2C-Compiler/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
+++ b/CLPS2C-Compiler/CLPS2C-Compiler/CLPS2C-Compiler.csproj
|
||||||
|
@@ -28,16 +29,7 @@
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
- <Reference Include="Keystone.Net">
|
||||||
|
- <HintPath>Keystone.Net.dll</HintPath>
|
||||||
|
- <Private>True</Private>
|
||||||
|
- </Reference>
|
||||||
|
- </ItemGroup>
|
||||||
|
-
|
||||||
|
- <ItemGroup>
|
||||||
|
- <None Update="keystone.dll">
|
||||||
|
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
- </None>
|
||||||
|
+ <ProjectReference Include="..\..\keystone\bindings\csharp\Keystone.Net\Keystone.Net.csproj"/>
|
||||||
|
</ItemGroup>
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
buildGoModule,
|
buildGoModule,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
fetchNpmDeps,
|
fetchNpmDeps,
|
||||||
fetchpatch,
|
|
||||||
pkg-config,
|
pkg-config,
|
||||||
nodejs,
|
nodejs,
|
||||||
npmHooks,
|
npmHooks,
|
||||||
@@ -12,24 +11,16 @@
|
|||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "coroot";
|
pname = "coroot";
|
||||||
version = "1.5.9";
|
version = "1.5.11";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "coroot";
|
owner = "coroot";
|
||||||
repo = "coroot";
|
repo = "coroot";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-z6eD+qAdwu7DoyKTlAQqucdWRtT+h4qCPt0eTQceYXw=";
|
hash = "sha256-lHzTKmD3HCwosvs1x6XxmRdiW/ENNGQiR0hzWzdU8EM=";
|
||||||
};
|
};
|
||||||
# github.com/grafana/pyroscope-go/godeltaprof 0.1.6 is broken on go 1.23
|
|
||||||
# use patch from https://github.com/coroot/coroot/pull/357 until it gets fixed
|
|
||||||
patches = [
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://github.com/coroot/coroot/commit/9bf6ac0ad4dfaa7f13e6d9b5ce5e331d1478aafc.patch";
|
|
||||||
hash = "sha256-5otqdYyQ57sNjF84CRgx0wcztsRdTdsNuhEkvGyw7UE=";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
vendorHash = "sha256-W0UNw8FEIHDKQDCjBryDSJB/UhNyAtMxC6A/9lr79sg=";
|
vendorHash = "sha256-YqZHhoaAgubI2+O2CTULXeQocLaz9WGpWRhETIzU7MU=";
|
||||||
npmDeps = fetchNpmDeps {
|
npmDeps = fetchNpmDeps {
|
||||||
src = "${src}/front";
|
src = "${src}/front";
|
||||||
hash = "sha256-inZV+iv837+7ntBae/oLSNLxpzoqEcJNPNdBE+osJHQ=";
|
hash = "sha256-inZV+iv837+7ntBae/oLSNLxpzoqEcJNPNdBE+osJHQ=";
|
||||||
|
|||||||
@@ -1,34 +1,35 @@
|
|||||||
{ lib
|
{
|
||||||
, fetchFromGitHub
|
lib,
|
||||||
, wrapGAppsHook4
|
fetchFromGitHub,
|
||||||
, python3
|
wrapGAppsHook4,
|
||||||
, blueprint-compiler
|
python3,
|
||||||
, desktop-file-utils
|
blueprint-compiler,
|
||||||
, meson
|
desktop-file-utils,
|
||||||
, ninja
|
meson,
|
||||||
, pkg-config
|
ninja,
|
||||||
, glib
|
pkg-config,
|
||||||
, gtk4
|
glib,
|
||||||
, gobject-introspection
|
gtk4,
|
||||||
, gst_all_1
|
gobject-introspection,
|
||||||
, libsoup_3
|
gst_all_1,
|
||||||
, glib-networking
|
libsoup_3,
|
||||||
, libadwaita
|
glib-networking,
|
||||||
, libsecret
|
libadwaita,
|
||||||
, nix-update-script
|
libsecret,
|
||||||
|
nix-update-script,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
python3.pkgs.buildPythonApplication rec {
|
python3.pkgs.buildPythonApplication rec {
|
||||||
pname = "dialect";
|
pname = "dialect";
|
||||||
version = "2.4.2";
|
version = "2.5.0";
|
||||||
pyproject = false; # built with meson
|
pyproject = false; # built with meson
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "dialect-app";
|
owner = "dialect-app";
|
||||||
repo = "dialect";
|
repo = "dialect";
|
||||||
rev = version;
|
rev = "refs/tags/${version}";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
hash = "sha256-DAhzvia5ut806rTc2iMuMrVKyYBSaAiMyC4rEOyU4x0=";
|
hash = "sha256-TWXJlzuSBy+Ij3s0KS02bh8vdXP10hQpgdz4QMTLf/Q=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@@ -53,7 +54,7 @@ python3.pkgs.buildPythonApplication rec {
|
|||||||
libsecret
|
libsecret
|
||||||
];
|
];
|
||||||
|
|
||||||
propagatedBuildInputs = with python3.pkgs; [
|
dependencies = with python3.pkgs; [
|
||||||
dbus-python
|
dbus-python
|
||||||
gtts
|
gtts
|
||||||
pygobject3
|
pygobject3
|
||||||
@@ -36,11 +36,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "epiphany";
|
pname = "epiphany";
|
||||||
version = "47.1";
|
version = "47.2";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/epiphany/${lib.versions.major finalAttrs.version}/epiphany-${finalAttrs.version}.tar.xz";
|
url = "mirror://gnome/sources/epiphany/${lib.versions.major finalAttrs.version}/epiphany-${finalAttrs.version}.tar.xz";
|
||||||
hash = "sha256-ZC/XIEX26bGPCcPvFt92LZt4FhGauyLt1dgu9ofGoAQ=";
|
hash = "sha256-NNr9g2OgmLRNR24umCO0y+puZq+tM7uhDtehP/GpZPE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
lib,
|
||||||
|
fetchurl,
|
||||||
|
autoPatchelfHook,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
arch = if stdenv.isAarch64 then "aarch64" else "x86_64";
|
||||||
|
release =
|
||||||
|
if stdenv.isDarwin then "macos-${arch}-apple-darwin" else "linux-${arch}-unknown-linux-gnu";
|
||||||
|
|
||||||
|
hashes = {
|
||||||
|
linux-aarch64-unknown-linux-gnu = "sha256-vWMrq/uFU/uyuDnsxZK0ZyvtraVCZwvGjzO1a5QjR8g=";
|
||||||
|
linux-x86_64-unknown-linux-gnu = "sha256-iE/zH6M51C6sFZrsUMwZTQ0+hzfpRFJtiKh3MS9bDto=";
|
||||||
|
macos-aarch64-apple-darwin = "sha256-55LSChvO0wRHGL0H29MLy/JW8V52GFr3z/qoxdIPun0=";
|
||||||
|
macos-x86_64-apple-darwin = "sha256-l9bzQ5z9hQ/N2dOkAjPAU4OfRbLCUoRt1eQB6EZE0NI=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "erlang-language-platform";
|
||||||
|
version = "2024-07-16";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://github.com/WhatsApp/erlang-language-platform/releases/download/${version}/elp-${release}-otp-26.2.tar.gz";
|
||||||
|
hash = hashes.${release};
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ autoPatchelfHook ];
|
||||||
|
|
||||||
|
buildInputs = [ stdenv.cc.cc.lib ];
|
||||||
|
|
||||||
|
sourceRoot = ".";
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
install -m755 -D elp $out/bin/elp
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "An IDE-first library for the semantic analysis of Erlang code, including LSP server, linting and refactoring tools.";
|
||||||
|
homepage = "https://github.com/WhatsApp/erlang-language-platform/";
|
||||||
|
license = with lib.licenses; [
|
||||||
|
mit
|
||||||
|
asl20
|
||||||
|
];
|
||||||
|
platforms = [
|
||||||
|
"aarch64-linux"
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-darwin"
|
||||||
|
"x86_64-darwin"
|
||||||
|
];
|
||||||
|
maintainers = with lib.maintainers; [ offsetcyan ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -49,13 +49,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "evolution-data-server";
|
pname = "evolution-data-server";
|
||||||
version = "3.54.0";
|
version = "3.54.1";
|
||||||
|
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/evolution-data-server-${version}.tar.xz";
|
url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/evolution-data-server-${version}.tar.xz";
|
||||||
hash = "sha256-pUtHuXepcDD3OKQS9PXVsu++9eDr6JKbfM4ArFRoEIQ=";
|
hash = "sha256-JbM2xIprq8NjIdiAlLOCrq8Yq8urSpQ4s//5DCnhBa4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
|||||||
@@ -44,13 +44,13 @@
|
|||||||
}:
|
}:
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "fastfetch";
|
pname = "fastfetch";
|
||||||
version = "2.28.0";
|
version = "2.29.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "fastfetch-cli";
|
owner = "fastfetch-cli";
|
||||||
repo = "fastfetch";
|
repo = "fastfetch";
|
||||||
rev = finalAttrs.version;
|
rev = finalAttrs.version;
|
||||||
hash = "sha256-fkAtBO9POd3JKNNt0jV1ufIN1s8HaFW7P2+32cRycWs=";
|
hash = "sha256-qXzE2v2BS1CgPVPIj+mct9zoJ4hpNCsTZ12keQThRZI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
fetchFromGitHub,
|
||||||
|
fetchYarnDeps,
|
||||||
|
fish,
|
||||||
|
installShellFiles,
|
||||||
|
lib,
|
||||||
|
makeWrapper,
|
||||||
|
nix-update-script,
|
||||||
|
nodejs,
|
||||||
|
npmHooks,
|
||||||
|
stdenv,
|
||||||
|
which,
|
||||||
|
yarnBuildHook,
|
||||||
|
yarnConfigHook,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "fish-lsp";
|
||||||
|
version = "1.0.8-1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ndonfris";
|
||||||
|
repo = "fish-lsp";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-u125EZXQEouVbmJuoW3KNDNqLB5cS/TzblXraClcw6Q=";
|
||||||
|
};
|
||||||
|
|
||||||
|
yarnOfflineCache = fetchYarnDeps {
|
||||||
|
yarnLock = src + "/yarn.lock";
|
||||||
|
hash = "sha256-hHw7DbeqaCapqx4dK5Y3sPut94ist9JOU8g9dd6gBdo=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
yarnBuildHook
|
||||||
|
yarnConfigHook
|
||||||
|
npmHooks.npmInstallHook
|
||||||
|
nodejs
|
||||||
|
installShellFiles
|
||||||
|
makeWrapper
|
||||||
|
fish
|
||||||
|
];
|
||||||
|
|
||||||
|
yarnBuildScript = "setup";
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
yarn --offline compile
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out/share/fish-lsp
|
||||||
|
cp -r . $out/share/fish-lsp
|
||||||
|
|
||||||
|
makeWrapper ${lib.getExe nodejs} "$out/bin/fish-lsp" \
|
||||||
|
--add-flags "$out/share/fish-lsp/out/cli.js" \
|
||||||
|
--prefix PATH : "${
|
||||||
|
lib.makeBinPath [
|
||||||
|
fish
|
||||||
|
which
|
||||||
|
]
|
||||||
|
}"
|
||||||
|
|
||||||
|
${lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
|
||||||
|
installShellCompletion --cmd fish-lsp \
|
||||||
|
--fish <($out/bin/fish-lsp complete --fish)
|
||||||
|
''}
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
doDist = false;
|
||||||
|
|
||||||
|
passthru.updateScript = nix-update-script { };
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "LSP implementation for the fish shell language";
|
||||||
|
homepage = "https://github.com/ndonfris/fish-lsp";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
mainProgram = "fish-lsp";
|
||||||
|
maintainers = with lib.maintainers; [ petertriho ];
|
||||||
|
platforms = lib.platforms.unix;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
gnat13,
|
||||||
|
gnat13Packages,
|
||||||
|
fetchFromGitHub,
|
||||||
|
lib,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "florist";
|
||||||
|
version = "24.2";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "adacore";
|
||||||
|
repo = "florist";
|
||||||
|
rev = "refs/heads/${version}";
|
||||||
|
hash = "sha256-EFGmcQfWpxEWfsAoQrHegTlizl6siE8obKx+fCpVwUQ=";
|
||||||
|
};
|
||||||
|
|
||||||
|
configureFlags = [ "--enable-shared" ];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
gnat13
|
||||||
|
gnat13Packages.gprbuild
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Posix Ada Bindings";
|
||||||
|
homepage = "https://github.com/adacore/florist";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
maintainers = with lib.maintainers; [ lutzberger ];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -22,6 +22,7 @@ python3.pkgs.buildPythonApplication rec {
|
|||||||
|
|
||||||
pythonRelaxDeps = [
|
pythonRelaxDeps = [
|
||||||
"defusedxml"
|
"defusedxml"
|
||||||
|
"attrs"
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = with python3.pkgs; [
|
nativeBuildInputs = with python3.pkgs; [
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
coreutils,
|
||||||
|
fetchFromGitHub,
|
||||||
|
gh,
|
||||||
|
lib,
|
||||||
|
makeWrapper,
|
||||||
|
nix-update-script,
|
||||||
|
stdenvNoCC,
|
||||||
|
}:
|
||||||
|
stdenvNoCC.mkDerivation rec {
|
||||||
|
pname = "gh-contribs";
|
||||||
|
version = "0.9.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "MintArchit";
|
||||||
|
repo = "gh-contribs";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-yPJ9pmnbqR+fXH02Q5VMn0v2MuDQbPUpNzKw1awmKVE=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
install -D -m755 "gh-contribs" "$out/bin/gh-contribs"
|
||||||
|
'';
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
wrapProgram "$out/bin/gh-contribs" \
|
||||||
|
--prefix PATH : "${
|
||||||
|
lib.makeBinPath [
|
||||||
|
coreutils
|
||||||
|
gh
|
||||||
|
]
|
||||||
|
}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = nix-update-script { };
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/MintArchit/gh-contribs";
|
||||||
|
description = "GitHub Contribution Graph CLI";
|
||||||
|
maintainers = [ lib.maintainers.vinnymeller ];
|
||||||
|
license = lib.licenses.unlicense;
|
||||||
|
mainProgram = "gh-contribs";
|
||||||
|
platforms = lib.platforms.all;
|
||||||
|
};
|
||||||
|
}
|
||||||
+34
-13
@@ -1,22 +1,41 @@
|
|||||||
{lib, stdenv, fetchFromGitHub, git, mercurial, makeWrapper}:
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
git,
|
||||||
|
mercurial,
|
||||||
|
makeWrapper,
|
||||||
|
nix-update-script,
|
||||||
|
fetchpatch,
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "fast-export";
|
pname = "fast-export";
|
||||||
version = "221024";
|
version = "231118";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "frej";
|
owner = "frej";
|
||||||
repo = pname;
|
repo = "fast-export";
|
||||||
rev = "v${version}";
|
rev = "v${finalAttrs.version}";
|
||||||
sha256 = "sha256-re8iXM8s+TD35UGKalq2kVn8fx68fsnUC7Yo+/DQ9SM=";
|
hash = "sha256-JUy0t2yzd4bI7WPGG1E8L1topLfR5leV/WTU+u0bCyM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/frej/fast-export/commit/a3d0562737e1e711659e03264e45cb47a5a2f46d.patch?full_index=1";
|
||||||
|
hash = "sha256-vZOHnb5lXO22ElCK4oWQKCcPIqRyZV5axWfZqa84V1Y=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
buildInputs = [mercurial.python mercurial];
|
buildInputs = [
|
||||||
|
mercurial.python
|
||||||
|
mercurial
|
||||||
|
];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
binPath=$out/bin
|
binPath=$out/bin
|
||||||
libexecPath=$out/libexec/${pname}
|
libexecPath=$out/libexec/fast-export
|
||||||
sitepackagesPath=$out/${mercurial.python.sitePackages}
|
sitepackagesPath=$out/${mercurial.python.sitePackages}
|
||||||
mkdir -p $binPath $libexecPath $sitepackagesPath
|
mkdir -p $binPath $libexecPath $sitepackagesPath
|
||||||
|
|
||||||
@@ -57,11 +76,13 @@ stdenv.mkDerivation rec {
|
|||||||
popd
|
popd
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
passthru.updateScript = nix-update-script { };
|
||||||
|
|
||||||
|
meta = {
|
||||||
description = "Import mercurial into git";
|
description = "Import mercurial into git";
|
||||||
homepage = "https://repo.or.cz/w/fast-export.git";
|
homepage = "https://repo.or.cz/w/fast-export.git";
|
||||||
license = licenses.gpl2;
|
license = lib.licenses.gpl2;
|
||||||
maintainers = [ maintainers.koral ];
|
maintainers = [ lib.maintainers.koral ];
|
||||||
platforms = platforms.unix;
|
platforms = lib.platforms.unix;
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
@@ -29,14 +29,14 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "gnome-terminal";
|
pname = "gnome-terminal";
|
||||||
version = "3.52.2";
|
version = "3.54.1";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
domain = "gitlab.gnome.org";
|
domain = "gitlab.gnome.org";
|
||||||
owner = "GNOME";
|
owner = "GNOME";
|
||||||
repo = "gnome-terminal";
|
repo = "gnome-terminal";
|
||||||
rev = finalAttrs.version;
|
rev = finalAttrs.version;
|
||||||
hash = "sha256-c6xMUyhQnJiIrFnnUEx6vGVvFghGvLjTxiAFq+nSj2A=";
|
hash = "sha256-1Lu/qaeMUL8QvZGIxq2iuI7lfZSB+jMjkI2Jg6qULI0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|||||||
@@ -10,16 +10,16 @@
|
|||||||
}:
|
}:
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "goreleaser";
|
pname = "goreleaser";
|
||||||
version = "2.3.2";
|
version = "2.4.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "goreleaser";
|
owner = "goreleaser";
|
||||||
repo = pname;
|
repo = "goreleaser";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-YKcduPxcXU1Ixexr/DxeVRfLxYdHNFcGNLbBiH6cIUU=";
|
hash = "sha256-c9fdv+lvUPMVzWzliT/ss8X/OD8s1UX22ee2bo77YwY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-3gC2wZz3t6ObqAJ2g80kTrW2OEAyBptdqmN7cQKqZ/w=";
|
vendorHash = "sha256-pU64v3qQUX0T0X+AOdE/1McKMA4uOiTmGfZ87FUYl7c=";
|
||||||
|
|
||||||
ldflags = [
|
ldflags = [
|
||||||
"-s"
|
"-s"
|
||||||
@@ -28,6 +28,10 @@ buildGoModule rec {
|
|||||||
"-X main.builtBy=nixpkgs"
|
"-X main.builtBy=nixpkgs"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
subPackages = [
|
||||||
|
"."
|
||||||
|
];
|
||||||
|
|
||||||
# tests expect the source files to be a build repo
|
# tests expect the source files to be a build repo
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
@@ -56,10 +60,8 @@ buildGoModule rec {
|
|||||||
description = "Deliver Go binaries as fast and easily as possible";
|
description = "Deliver Go binaries as fast and easily as possible";
|
||||||
homepage = "https://goreleaser.com";
|
homepage = "https://goreleaser.com";
|
||||||
maintainers = with maintainers; [
|
maintainers = with maintainers; [
|
||||||
c0deaddict
|
|
||||||
sarcasticadmin
|
sarcasticadmin
|
||||||
techknowlogick
|
techknowlogick
|
||||||
developer-guy
|
|
||||||
caarlos0
|
caarlos0
|
||||||
];
|
];
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user