mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-10-02 04:50:21 +00:00
Merge staging-next into staging
This commit is contained in:
2
.github/workflows/backport.yml
vendored
2
.github/workflows/backport.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
|
||||
- name: Create backport PRs
|
||||
uses: korthout/backport-action@be567af183754f6a5d831ae90f648954763f17f5 # v3.1.0
|
||||
uses: korthout/backport-action@436145e922f9561fc5ea157ff406f21af2d6b363 # v3.2.0
|
||||
with:
|
||||
# Config README: https://github.com/korthout/backport-action#backport-action
|
||||
copy_labels_pattern: 'severity:\ssecurity'
|
||||
|
||||
@@ -255,6 +255,70 @@ runCommand "example" {
|
||||
|
||||
:::
|
||||
|
||||
## `testBuildFailure'` {#tester-testBuildFailurePrime}
|
||||
|
||||
This tester wraps the functionality provided by [`testers.testBuildFailure`](#tester-testBuildFailure) to make writing checks easier by simplifying checking the exit code of the builder and asserting the existence of entries in the builder's log.
|
||||
Additionally, users may specify a script containing additional checks, accessing the result of applying `testers.testBuildFailure` through the variable `failed`.
|
||||
|
||||
NOTE: This tester will produce an empty output and exit with success if none of the checks fail; there is no need to `touch "$out"` in `script`.
|
||||
|
||||
:::{.example #ex-testBuildFailurePrime-doc-example}
|
||||
|
||||
# Check that a build fails, and verify the changes made during build
|
||||
|
||||
Re-using the example from [`testers.testBuildFailure`](#ex-testBuildFailure-showingenvironmentchanges), we can see how common checks are made easier and remove the need for `runCommand`:
|
||||
|
||||
```nix
|
||||
testers.testBuildFailure' {
|
||||
drv = runCommand "doc-example" { } ''
|
||||
echo ok-ish >"$out"
|
||||
echo failing though
|
||||
exit 3
|
||||
'';
|
||||
expectedBuilderExitCode = 3;
|
||||
expectedBuilderLogEntries = [ "failing though" ];
|
||||
script = ''
|
||||
grep --silent -F 'ok-ish' "$failed/result"
|
||||
'';
|
||||
}
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### Inputs {#tester-testBuildFailurePrime-inputs}
|
||||
|
||||
`drv` (derivation)
|
||||
|
||||
: The failing derivation to wrap with `testBuildFailure`.
|
||||
|
||||
`name` (string, optional)
|
||||
|
||||
: The name of the test.
|
||||
When not provided, this value defaults to `testBuildFailure-${(testers.testBuildFailure drv).name}`.
|
||||
|
||||
`expectedBuilderExitCode` (integer, optional)
|
||||
|
||||
: The expected exit code of the builder of `drv`.
|
||||
When not provided, this value defaults to `1`.
|
||||
|
||||
`expectedBuilderLogEntries` (array of string-like values, optional)
|
||||
|
||||
: A list of string-like values which must be found in the builder's log by exact match.
|
||||
When not provided, this value defaults to `[ ]`.
|
||||
|
||||
NOTE: Patterns and regular expressions are not supported.
|
||||
|
||||
`script` (string, optional)
|
||||
|
||||
: A string containing additional checks to run.
|
||||
When not provided, this value defaults to `""`.
|
||||
The result of `testers.testBuildFailure drv` is available through the variable `failed`.
|
||||
As an example, the builder's log is at `"$failed/testBuildFailure.log"`.
|
||||
|
||||
### Return value {#tester-testBuildFailurePrime-return}
|
||||
|
||||
The tester produces an empty output and only succeeds when the checks using `expectedBuilderExitCode`, `expectedBuilderLogEntries`, and `script` succeed.
|
||||
|
||||
## `testEqualContents` {#tester-testEqualContents}
|
||||
|
||||
Check that two paths have the same contents.
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
"ex-build-helpers-extendMkDerivation": [
|
||||
"index.html#ex-build-helpers-extendMkDerivation"
|
||||
],
|
||||
"ex-testBuildFailurePrime-doc-example": [
|
||||
"index.html#ex-testBuildFailurePrime-doc-example"
|
||||
],
|
||||
"neovim": [
|
||||
"index.html#neovim"
|
||||
],
|
||||
@@ -332,6 +335,15 @@
|
||||
"footnote-stdenv-find-inputs-location.__back.0": [
|
||||
"index.html#footnote-stdenv-find-inputs-location.__back.0"
|
||||
],
|
||||
"tester-testBuildFailurePrime": [
|
||||
"index.html#tester-testBuildFailurePrime"
|
||||
],
|
||||
"tester-testBuildFailurePrime-inputs": [
|
||||
"index.html#tester-testBuildFailurePrime-inputs"
|
||||
],
|
||||
"tester-testBuildFailurePrime-return": [
|
||||
"index.html#tester-testBuildFailurePrime-return"
|
||||
],
|
||||
"variables-specifying-dependencies": [
|
||||
"index.html#variables-specifying-dependencies"
|
||||
],
|
||||
|
||||
@@ -23443,6 +23443,12 @@
|
||||
github = "thilobillerbeck";
|
||||
githubId = 7442383;
|
||||
};
|
||||
thiloho = {
|
||||
name = "Thilo Hohlt";
|
||||
email = "thilo.hohlt@tutanota.com";
|
||||
github = "thiloho";
|
||||
githubId = 123883702;
|
||||
};
|
||||
thled = {
|
||||
name = "Thomas Le Duc";
|
||||
email = "dev@tleduc.de";
|
||||
|
||||
@@ -63,6 +63,8 @@
|
||||
|
||||
- [Bonsai](https://git.sr.ht/~stacyharper/bonsai), a general-purpose event mapper/state machine primarily used to create complex key shortcuts, and as part of the [SXMO](https://sxmo.org/) desktop environment. Available as [services.bonsaid](#opt-services.bonsaid.enable).
|
||||
|
||||
- [archtika](https://github.com/archtika/archtika), a FLOSS, modern, performant, lightweight and self‑hosted CMS. Available as [services.archtika](#opt-services.archtika.enable).
|
||||
|
||||
- [scanservjs](https://github.com/sbs20/scanservjs/), a web UI for SANE scanners. Available at [services.scanservjs](#opt-services.scanservjs.enable).
|
||||
|
||||
- [Kimai](https://www.kimai.org/), a web-based multi-user time-tracking application. Available as [services.kimai](options.html#opt-services.kimai).
|
||||
@@ -223,6 +225,9 @@
|
||||
- The `services.locate` module does no longer support findutil's `locate` due to its inferior performance compared to `mlocate` and `plocate`. The new default is `plocate`.
|
||||
As the `service.locate.localuser` option only applied when using findutil's `locate`, it has also been removed.
|
||||
|
||||
- `services.paperless` now installs `paperless-manage` as a normal system package instead of creating a symlink in `/var/lib/paperless`.
|
||||
`paperless-manage` now also changes to the appropriate user when being executed.
|
||||
|
||||
- `kmonad` is now hardened by default using common `systemd` settings.
|
||||
If KMonad is used to execute shell commands, hardening may make some of them fail. In that case, you can disable hardening using {option}`services.kmonad.keyboards.<name>.enableHardening` option.
|
||||
|
||||
@@ -470,6 +475,9 @@
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
- `virtualisation.containers` with backend "podman" now supports rootless containers and `sd_notify(3)`-integration
|
||||
based on container healthchecks.
|
||||
|
||||
- Cinnamon has been updated to 6.4, please check the [upstream announcement](https://www.linuxmint.com/rel_xia_whatsnew.php) for more details.
|
||||
- Following [changes in Mint 22](https://github.com/linuxmint/mintupgrade/commit/f239cde908288b8c250f938e7311c7ffbc16bd59) we are no longer overriding Qt application styles. You can still restore the previous default with `qt.style = "gtk2"` and `qt.platformTheme = "gtk2"`.
|
||||
- Following [changes in Mint 20](https://github.com/linuxmint/mintupgrade-legacy/commit/ce15d946ed9a8cb8444abd25088edd824bfb18f6) we are replacing xplayer with celluloid since xplayer is no longer maintained.
|
||||
@@ -549,6 +557,8 @@
|
||||
|
||||
- `gerbera` now has wavpack support.
|
||||
|
||||
- A toggle has been added under `users.users.<name>.enable` to allow toggling individual users conditionally. If set to false, the user account will not be created.
|
||||
|
||||
- `ddclient` was updated from 3.11.2 to 4.0.0 [Release notes](https://github.com/ddclient/ddclient/releases/tag/v4.0.0)
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
@@ -124,6 +124,16 @@ let
|
||||
|
||||
options = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
example = false;
|
||||
description = ''
|
||||
If set to false, the user account will not be created. This is useful for when you wish to conditionally
|
||||
disable user accounts.
|
||||
'';
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.passwdEntry types.str;
|
||||
apply = x: assert (stringLength x < 32 || abort "Username '${x}' is longer than 31 characters which is not allowed!"); x;
|
||||
@@ -557,7 +567,7 @@ let
|
||||
autoSubUidGidRange subUidRanges subGidRanges
|
||||
initialPassword initialHashedPassword expires;
|
||||
shell = utils.toShellPath u.shell;
|
||||
}) cfg.users;
|
||||
}) (filterAttrs (_: u: u.enable) cfg.users);
|
||||
groups = attrValues cfg.groups;
|
||||
});
|
||||
|
||||
|
||||
@@ -1459,6 +1459,7 @@
|
||||
./services/web-apps/agorakit.nix
|
||||
./services/web-apps/alps.nix
|
||||
./services/web-apps/anuko-time-tracker.nix
|
||||
./services/web-apps/archtika.nix
|
||||
./services/web-apps/artalk.nix
|
||||
./services/web-apps/audiobookshelf.nix
|
||||
./services/web-apps/bluemap.nix
|
||||
|
||||
@@ -32,11 +32,22 @@ let
|
||||
else toString s
|
||||
) cfg.settings);
|
||||
|
||||
manage = pkgs.writeShellScript "manage" ''
|
||||
manage = pkgs.writeShellScriptBin "paperless-manage" ''
|
||||
set -o allexport # Export the following env vars
|
||||
${lib.toShellVars env}
|
||||
${lib.optionalString (cfg.environmentFile != null) "source ${cfg.environmentFile}"}
|
||||
exec ${cfg.package}/bin/paperless-ngx "$@"
|
||||
|
||||
cd '${cfg.dataDir}'
|
||||
sudo=exec
|
||||
if [[ "$USER" != ${cfg.user} ]]; then
|
||||
${
|
||||
if config.security.sudo.enable then
|
||||
"sudo='exec ${config.security.wrapperDir}/sudo -u ${cfg.user} -E'"
|
||||
else
|
||||
">&2 echo 'Aborting, paperless-manage must be run as user `${cfg.user}`!'; exit 2"
|
||||
}
|
||||
fi
|
||||
$sudo ${lib.getExe cfg.package} "$@"
|
||||
'';
|
||||
|
||||
defaultServiceConfig = {
|
||||
@@ -94,14 +105,13 @@ in
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable Paperless.
|
||||
Whether to enable Paperless-ngx.
|
||||
|
||||
When started, the Paperless database is automatically created if it doesn't
|
||||
exist and updated if the Paperless package has changed.
|
||||
When started, the Paperless database is automatically created if it doesn't exist
|
||||
and updated if the Paperless package has changed.
|
||||
Both tasks are achieved by running a Django migration.
|
||||
|
||||
A script to manage the Paperless instance (by wrapping Django's manage.py) is linked to
|
||||
`''${dataDir}/paperless-manage`.
|
||||
A script to manage the Paperless-ngx instance (by wrapping Django's manage.py) is available as `paperless-manage`.
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -139,8 +149,7 @@ in
|
||||
A file containing the superuser password.
|
||||
|
||||
A superuser is required to access the web interface.
|
||||
If unset, you can create a superuser manually by running
|
||||
`''${dataDir}/paperless-manage createsuperuser`.
|
||||
If unset, you can create a superuser manually by running `paperless-manage createsuperuser`.
|
||||
|
||||
The default superuser name is `admin`. To change it, set
|
||||
option {option}`settings.PAPERLESS_ADMIN_USER`.
|
||||
@@ -288,6 +297,8 @@ in
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable (lib.mkMerge [ {
|
||||
environment.systemPackages = [ manage ];
|
||||
|
||||
services.redis.servers.paperless.enable = lib.mkIf enableRedis true;
|
||||
|
||||
services.postgresql = lib.mkIf cfg.database.createLocally {
|
||||
@@ -336,7 +347,9 @@ in
|
||||
environment = env;
|
||||
|
||||
preStart = ''
|
||||
ln -sf ${manage} ${cfg.dataDir}/paperless-manage
|
||||
# remove old papaerless-manage symlink
|
||||
# TODO: drop with NixOS 25.11
|
||||
[[ -L '${cfg.dataDir}/paperless-manage' ]] && rm '${cfg.dataDir}/paperless-manage'
|
||||
|
||||
# Auto-migrate on first run or if the package has changed
|
||||
versionFile="${cfg.dataDir}/src-version"
|
||||
@@ -504,10 +517,10 @@ in
|
||||
OnSuccess = services;
|
||||
};
|
||||
enableStrictShellChecks = true;
|
||||
path = [ manage ];
|
||||
script = ''
|
||||
./paperless-manage document_exporter ${cfg.exporter.directory} ${lib.cli.toGNUCommandLineShell {} cfg.exporter.settings}
|
||||
paperless-manage document_exporter ${cfg.exporter.directory} ${lib.cli.toGNUCommandLineShell {} cfg.exporter.settings}
|
||||
'';
|
||||
};
|
||||
})
|
||||
]);
|
||||
})]);
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ in
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
systemd.services.netclient = {
|
||||
wants = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
description = "Netclient Daemon";
|
||||
|
||||
@@ -27,7 +27,7 @@ let
|
||||
'';
|
||||
|
||||
sojuctl = pkgs.writeShellScriptBin "sojuctl" ''
|
||||
exec ${cfg.package}/bin/sojuctl --config ${configFile} "$@"
|
||||
exec ${lib.getExe' cfg.package "sojuctl"} --config ${cfg.configFile} "$@"
|
||||
'';
|
||||
in
|
||||
{
|
||||
@@ -107,7 +107,18 @@ in
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = "Lines added verbatim to the configuration file.";
|
||||
description = "Lines added verbatim to the generated configuration file.";
|
||||
};
|
||||
|
||||
configFile = mkOption {
|
||||
type = types.path;
|
||||
default = configFile;
|
||||
defaultText = "Config file generated from other options.";
|
||||
description = ''
|
||||
Path to config file. If this option is set, it will override any
|
||||
configuration done using other options, including {option}`extraConfig`.
|
||||
'';
|
||||
example = literalExpression "./soju.conf";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -134,7 +145,7 @@ in
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
Restart = "always";
|
||||
ExecStart = "${cfg.package}/bin/soju -config ${configFile}";
|
||||
ExecStart = "${lib.getExe' cfg.package "soju"} -config ${cfg.configFile}";
|
||||
StateDirectory = "soju";
|
||||
RuntimeDirectory = "soju";
|
||||
};
|
||||
|
||||
@@ -31,7 +31,7 @@ let
|
||||
;
|
||||
isNormal = opts.isNormalUser;
|
||||
shell = utils.toShellPath opts.shell;
|
||||
}) config.users.users;
|
||||
}) (lib.filterAttrs (_: u: u.enable) config.users.users);
|
||||
};
|
||||
|
||||
userbornConfigJson = pkgs.writeText "userborn.json" (builtins.toJSON userbornConfig);
|
||||
@@ -95,16 +95,23 @@ in
|
||||
|
||||
# Create home directories, do not create /var/empty even if that's a user's
|
||||
# home.
|
||||
tmpfiles.settings.home-directories = lib.mapAttrs' (
|
||||
username: opts:
|
||||
lib.nameValuePair (toString opts.home) {
|
||||
d = {
|
||||
mode = opts.homeMode;
|
||||
user = opts.name;
|
||||
inherit (opts) group;
|
||||
};
|
||||
}
|
||||
) (lib.filterAttrs (_username: opts: opts.createHome && opts.home != "/var/empty") userCfg.users);
|
||||
tmpfiles.settings.home-directories =
|
||||
lib.mapAttrs'
|
||||
(
|
||||
username: opts:
|
||||
lib.nameValuePair (toString opts.home) {
|
||||
d = {
|
||||
mode = opts.homeMode;
|
||||
user = opts.name;
|
||||
inherit (opts) group;
|
||||
};
|
||||
}
|
||||
)
|
||||
(
|
||||
lib.filterAttrs (
|
||||
_username: opts: opts.enable && opts.createHome && opts.home != "/var/empty"
|
||||
) userCfg.users
|
||||
);
|
||||
|
||||
services.userborn = {
|
||||
wantedBy = [ "sysinit.target" ];
|
||||
|
||||
307
nixos/modules/services/web-apps/archtika.nix
Normal file
307
nixos/modules/services/web-apps/archtika.nix
Normal file
@@ -0,0 +1,307 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
mkEnableOption
|
||||
mkOption
|
||||
mkIf
|
||||
mkPackageOption
|
||||
types
|
||||
;
|
||||
cfg = config.services.archtika;
|
||||
in
|
||||
{
|
||||
options.services.archtika = {
|
||||
enable = mkEnableOption "Whether to enable the archtika service";
|
||||
|
||||
package = mkPackageOption pkgs "archtika" { };
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "archtika";
|
||||
description = "User account under which archtika runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "archtika";
|
||||
description = "Group under which archtika runs.";
|
||||
};
|
||||
|
||||
databaseName = mkOption {
|
||||
type = types.str;
|
||||
default = "archtika";
|
||||
description = "Name of the PostgreSQL database for archtika.";
|
||||
};
|
||||
|
||||
apiPort = mkOption {
|
||||
type = types.port;
|
||||
default = 5000;
|
||||
description = "Port on which the API runs.";
|
||||
};
|
||||
|
||||
apiAdminPort = mkOption {
|
||||
type = types.port;
|
||||
default = 7500;
|
||||
description = "Port on which the API admin server runs.";
|
||||
};
|
||||
|
||||
webAppPort = mkOption {
|
||||
type = types.port;
|
||||
default = 10000;
|
||||
description = "Port on which the web application runs.";
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
type = types.str;
|
||||
description = "Domain to use for the application.";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
description = "Settings for the running archtika application.";
|
||||
type = types.submodule {
|
||||
options = {
|
||||
disableRegistration = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "By default any user can create an account. That behavior can be disabled with this option.";
|
||||
};
|
||||
maxUserWebsites = mkOption {
|
||||
type = types.ints.positive;
|
||||
default = 2;
|
||||
description = "Maximum number of websites allowed per user by default.";
|
||||
};
|
||||
maxWebsiteStorageSize = mkOption {
|
||||
type = types.ints.positive;
|
||||
default = 50;
|
||||
description = "Maximum amount of disk space in MB allowed per user website by default.";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (
|
||||
let
|
||||
baseHardenedSystemdOptions = {
|
||||
CapabilityBoundingSet = "";
|
||||
LockPersonality = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateTmp = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectSystem = "strict";
|
||||
RemoveIPC = true;
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
"@system-service"
|
||||
"~@privileged"
|
||||
"~@resources"
|
||||
];
|
||||
ReadWritePaths = [ "/var/www/archtika-websites" ];
|
||||
};
|
||||
in
|
||||
{
|
||||
users.users.${cfg.user} = {
|
||||
isSystemUser = true;
|
||||
group = cfg.group;
|
||||
};
|
||||
|
||||
users.groups.${cfg.group} = {
|
||||
members = [
|
||||
"nginx"
|
||||
"postgres"
|
||||
];
|
||||
};
|
||||
|
||||
systemd.tmpfiles.settings."10-archtika" = {
|
||||
"/var/www" = {
|
||||
d = {
|
||||
mode = "0755";
|
||||
user = "root";
|
||||
group = "root";
|
||||
};
|
||||
};
|
||||
"/var/www/archtika-websites" = {
|
||||
d = {
|
||||
mode = "0770";
|
||||
user = cfg.user;
|
||||
group = cfg.group;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.archtika-api = {
|
||||
description = "archtika API service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [
|
||||
"network.target"
|
||||
"postgresql.service"
|
||||
];
|
||||
|
||||
path = [ config.services.postgresql.package ];
|
||||
|
||||
serviceConfig = baseHardenedSystemdOptions // {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
Restart = "always";
|
||||
WorkingDirectory = "${cfg.package}/rest-api";
|
||||
RestrictAddressFamilies = [
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
"AF_UNIX"
|
||||
];
|
||||
};
|
||||
|
||||
script =
|
||||
let
|
||||
dbUrl = user: "postgres://${user}@/${cfg.databaseName}?host=/var/run/postgresql";
|
||||
in
|
||||
''
|
||||
JWT_SECRET=$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c64)
|
||||
|
||||
psql ${dbUrl "postgres"} \
|
||||
-c "ALTER DATABASE ${cfg.databaseName} SET \"app.jwt_secret\" TO '$JWT_SECRET'" \
|
||||
-c "ALTER DATABASE ${cfg.databaseName} SET \"app.website_max_storage_size\" TO ${toString cfg.settings.maxWebsiteStorageSize}" \
|
||||
-c "ALTER DATABASE ${cfg.databaseName} SET \"app.website_max_number_user\" TO ${toString cfg.settings.maxUserWebsites}"
|
||||
|
||||
${lib.getExe pkgs.dbmate} --url "${dbUrl "postgres"}&sslmode=disable" --migrations-dir ${cfg.package}/rest-api/db/migrations up
|
||||
|
||||
PGRST_SERVER_CORS_ALLOWED_ORIGINS="https://${cfg.domain}" \
|
||||
PGRST_ADMIN_SERVER_PORT=${toString cfg.apiAdminPort} \
|
||||
PGRST_SERVER_PORT=${toString cfg.apiPort} \
|
||||
PGRST_DB_SCHEMAS="api" \
|
||||
PGRST_DB_ANON_ROLE="anon" \
|
||||
PGRST_OPENAPI_MODE="ignore-privileges" \
|
||||
PGRST_DB_URI=${dbUrl "authenticator"} \
|
||||
PGRST_JWT_SECRET="$JWT_SECRET" \
|
||||
${lib.getExe pkgs.postgrest}
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.archtika-web = {
|
||||
description = "archtika Web App service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
|
||||
serviceConfig = baseHardenedSystemdOptions // {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
Restart = "always";
|
||||
WorkingDirectory = "${cfg.package}/web-app";
|
||||
RestrictAddressFamilies = [
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
];
|
||||
};
|
||||
|
||||
environment = {
|
||||
REGISTRATION_IS_DISABLED = toString cfg.settings.disableRegistration;
|
||||
BODY_SIZE_LIMIT = "10M";
|
||||
ORIGIN = "https://${cfg.domain}";
|
||||
PORT = toString cfg.webAppPort;
|
||||
};
|
||||
|
||||
script = "${lib.getExe pkgs.nodejs} ${cfg.package}/web-app";
|
||||
};
|
||||
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
ensureDatabases = [ cfg.databaseName ];
|
||||
extensions = ps: with ps; [ pgjwt ];
|
||||
authentication = lib.mkOverride 11 ''
|
||||
local postgres postgres trust
|
||||
local ${cfg.databaseName} all trust
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.postgresql = {
|
||||
path = with pkgs; [
|
||||
gnutar
|
||||
gzip
|
||||
];
|
||||
serviceConfig = {
|
||||
ReadWritePaths = [ "/var/www/archtika-websites" ];
|
||||
SystemCallFilter = [ "@system-service" ];
|
||||
};
|
||||
};
|
||||
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
recommendedZstdSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
|
||||
appendHttpConfig = ''
|
||||
map $http_cookie $archtika_auth_header {
|
||||
default "";
|
||||
"~*session_token=([^;]+)" "Bearer $1";
|
||||
}
|
||||
'';
|
||||
|
||||
virtualHosts = {
|
||||
"${cfg.domain}" = {
|
||||
useACMEHost = cfg.domain;
|
||||
forceSSL = true;
|
||||
locations = {
|
||||
"/" = {
|
||||
proxyPass = "http://127.0.0.1:${toString cfg.webAppPort}";
|
||||
};
|
||||
"/previews/" = {
|
||||
alias = "/var/www/archtika-websites/previews/";
|
||||
index = "index.html";
|
||||
tryFiles = "$uri $uri/ $uri.html =404";
|
||||
};
|
||||
"/api/rpc/export_articles_zip" = {
|
||||
proxyPass = "http://127.0.0.1:${toString cfg.apiPort}/rpc/export_articles_zip";
|
||||
extraConfig = ''
|
||||
default_type application/json;
|
||||
proxy_set_header Authorization $archtika_auth_header;
|
||||
'';
|
||||
};
|
||||
"/api/" = {
|
||||
proxyPass = "http://127.0.0.1:${toString cfg.apiPort}/";
|
||||
extraConfig = ''
|
||||
default_type application/json;
|
||||
'';
|
||||
};
|
||||
"/api/rpc/register" = mkIf cfg.settings.disableRegistration {
|
||||
extraConfig = ''
|
||||
deny all;
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
"~^(?<subdomain>.+)\\.${cfg.domain}$" = {
|
||||
useACMEHost = cfg.domain;
|
||||
forceSSL = true;
|
||||
locations = {
|
||||
"/" = {
|
||||
root = "/var/www/archtika-websites/$subdomain";
|
||||
index = "index.html";
|
||||
tryFiles = "$uri $uri/ $uri.html =404";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
meta.maintainers = [ lib.maintainers.thiloho ];
|
||||
}
|
||||
@@ -220,7 +220,8 @@ in
|
||||
'';
|
||||
locations = {
|
||||
"/".proxyPass = "http://127.0.0.1:${toString cfg.paste.port}";
|
||||
"/mgoblin_static/".alias = "${finalPackage}/${finalPackage.python.sitePackages}/mediagoblin/static/";
|
||||
"/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/";
|
||||
@@ -252,7 +253,7 @@ in
|
||||
++ lib.optionals (cfg.settings.mediagoblin.plugins ? "mediagoblin.media_types.pdf") (
|
||||
with pkgs;
|
||||
[
|
||||
poppler_utils
|
||||
poppler-utils
|
||||
unoconv
|
||||
]
|
||||
);
|
||||
|
||||
@@ -57,7 +57,7 @@ in
|
||||
libreoffice
|
||||
qpdf
|
||||
ocrmypdf
|
||||
poppler_utils
|
||||
poppler-utils
|
||||
unoconv
|
||||
pngquant
|
||||
tesseract
|
||||
|
||||
@@ -17,6 +17,10 @@ let
|
||||
{ name, ... }:
|
||||
{
|
||||
|
||||
config = {
|
||||
podman = mkIf (cfg.backend == "podman") { };
|
||||
};
|
||||
|
||||
options = {
|
||||
|
||||
image = mkOption {
|
||||
@@ -287,6 +291,43 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
podman = mkOption {
|
||||
type = types.nullOr (
|
||||
types.submodule {
|
||||
options = {
|
||||
sdnotify = mkOption {
|
||||
default = "conmon";
|
||||
type = types.enum [
|
||||
"conmon"
|
||||
"healthy"
|
||||
"container"
|
||||
];
|
||||
description = ''
|
||||
Determines how `podman` should notify systemd that the unit is ready. There are
|
||||
[three options](https://docs.podman.io/en/latest/markdown/podman-run.1.html#sdnotify-container-conmon-healthy-ignore):
|
||||
|
||||
* `conmon`: marks the unit as ready when the container has started.
|
||||
* `healthy`: marks the unit as ready when the [container's healthcheck](https://docs.podman.io/en/stable/markdown/podman-healthcheck-run.1.html) passes.
|
||||
* `container`: `NOTIFY_SOCKET` is passed into the container and the process inside the container needs to indicate on its own that it's ready.
|
||||
'';
|
||||
};
|
||||
user = mkOption {
|
||||
default = "root";
|
||||
type = types.str;
|
||||
description = ''
|
||||
The user under which the container should run.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
default = null;
|
||||
description = ''
|
||||
Podman-specific settings in OCI containers. These must be null when using
|
||||
the `docker` backend.
|
||||
'';
|
||||
};
|
||||
|
||||
pull = mkOption {
|
||||
type =
|
||||
with types;
|
||||
@@ -379,16 +420,20 @@ let
|
||||
${container.imageStream} | ${cfg.backend} load
|
||||
''}
|
||||
${optionalString (cfg.backend == "podman") ''
|
||||
rm -f /run/podman-${escapedName}.ctr-id
|
||||
rm -f /run/${escapedName}/ctr-id
|
||||
''}
|
||||
'';
|
||||
};
|
||||
|
||||
effectiveUser = container.podman.user or "root";
|
||||
dependOnLingerService =
|
||||
cfg.backend == "podman" && effectiveUser != "root" && config.users.users.${effectiveUser}.linger;
|
||||
in
|
||||
{
|
||||
wantedBy = [ ] ++ optional (container.autoStart) "multi-user.target";
|
||||
wants = lib.optional (
|
||||
container.imageFile == null && container.imageStream == null
|
||||
) "network-online.target";
|
||||
wants =
|
||||
lib.optional (container.imageFile == null && container.imageStream == null) "network-online.target"
|
||||
++ lib.optional dependOnLingerService "linger-users.service";
|
||||
after =
|
||||
lib.optionals (cfg.backend == "docker") [
|
||||
"docker.service"
|
||||
@@ -398,9 +443,15 @@ let
|
||||
++ lib.optionals (container.imageFile == null && container.imageStream == null) [
|
||||
"network-online.target"
|
||||
]
|
||||
++ dependsOn;
|
||||
++ dependsOn
|
||||
++ lib.optional dependOnLingerService "linger-users.service";
|
||||
requires = dependsOn;
|
||||
environment = proxy_env;
|
||||
environment = lib.mkMerge [
|
||||
proxy_env
|
||||
(mkIf (cfg.backend == "podman" && container.podman.user != "root") {
|
||||
HOME = config.users.users.${container.podman.user}.home;
|
||||
})
|
||||
];
|
||||
|
||||
path =
|
||||
if cfg.backend == "docker" then
|
||||
@@ -424,9 +475,9 @@ let
|
||||
++ optional (container.entrypoint != null) "--entrypoint=${escapeShellArg container.entrypoint}"
|
||||
++ optional (container.hostname != null) "--hostname=${escapeShellArg container.hostname}"
|
||||
++ lib.optionals (cfg.backend == "podman") [
|
||||
"--cidfile=/run/podman-${escapedName}.ctr-id"
|
||||
"--cgroups=no-conmon"
|
||||
"--sdnotify=conmon"
|
||||
"--cidfile=/run/${escapedName}/ctr-id"
|
||||
"--cgroups=enabled"
|
||||
"--sdnotify=${container.podman.sdnotify}"
|
||||
"-d"
|
||||
"--replace"
|
||||
]
|
||||
@@ -454,13 +505,13 @@ let
|
||||
|
||||
preStop =
|
||||
if cfg.backend == "podman" then
|
||||
"podman stop --ignore --cidfile=/run/podman-${escapedName}.ctr-id"
|
||||
"podman stop --ignore --cidfile=/run/${escapedName}/ctr-id"
|
||||
else
|
||||
"${cfg.backend} stop ${name} || true";
|
||||
|
||||
postStop =
|
||||
if cfg.backend == "podman" then
|
||||
"podman rm -f --ignore --cidfile=/run/podman-${escapedName}.ctr-id"
|
||||
"podman rm -f --ignore --cidfile=/run/${escapedName}/ctr-id"
|
||||
else
|
||||
"${cfg.backend} rm -f ${name} || true";
|
||||
|
||||
@@ -490,6 +541,9 @@ let
|
||||
Environment = "PODMAN_SYSTEMD_UNIT=podman-${name}.service";
|
||||
Type = "notify";
|
||||
NotifyAccess = "all";
|
||||
Delegate = mkIf (container.podman.sdnotify == "healthy") true;
|
||||
User = effectiveUser;
|
||||
RuntimeDirectory = escapedName;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -536,17 +590,46 @@ in
|
||||
|
||||
assertions =
|
||||
let
|
||||
toAssertion =
|
||||
_:
|
||||
{ imageFile, imageStream, ... }:
|
||||
toAssertions =
|
||||
name:
|
||||
{
|
||||
assertion = imageFile == null || imageStream == null;
|
||||
|
||||
message = "You can only define one of imageFile and imageStream";
|
||||
};
|
||||
imageFile,
|
||||
imageStream,
|
||||
podman,
|
||||
...
|
||||
}:
|
||||
[
|
||||
{
|
||||
assertion = imageFile == null || imageStream == null;
|
||||
|
||||
message = "virtualisation.oci-containers.containers.${name}: You can only define one of imageFile and imageStream";
|
||||
}
|
||||
{
|
||||
assertion = cfg.backend == "docker" -> podman == null;
|
||||
message = "virtualisation.oci-containers.containers.${name}: Cannot set `podman` option if backend is `docker`.";
|
||||
}
|
||||
];
|
||||
in
|
||||
lib.mapAttrsToList toAssertion cfg.containers;
|
||||
concatMap (name: toAssertions name cfg.containers.${name}) (lib.attrNames cfg.containers);
|
||||
|
||||
warnings = mkIf (cfg.backend == "podman") (
|
||||
lib.foldlAttrs (
|
||||
warnings: name:
|
||||
{ podman, ... }:
|
||||
let
|
||||
inherit (config.users.users.${podman.user}) linger;
|
||||
in
|
||||
warnings
|
||||
++ lib.optional (podman.user != "root" && linger && podman.sdnotify == "conmon") ''
|
||||
Podman container ${name} is configured as rootless (user ${podman.user})
|
||||
with `--sdnotify=conmon`, but lingering for this user is turned on.
|
||||
''
|
||||
++ lib.optional (podman.user != "root" && !linger && podman.sdnotify == "healthy") ''
|
||||
Podman container ${name} is configured as rootless (user ${podman.user})
|
||||
with `--sdnotify=healthy`, but lingering for this user is turned off.
|
||||
''
|
||||
) [ ] cfg.containers
|
||||
);
|
||||
}
|
||||
(lib.mkIf (cfg.backend == "podman") {
|
||||
virtualisation.podman.enable = true;
|
||||
@@ -556,5 +639,4 @@ in
|
||||
})
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
@@ -1201,6 +1201,7 @@ in {
|
||||
userborn-mutable-etc = runTest ./userborn-mutable-etc.nix;
|
||||
userborn-immutable-etc = runTest ./userborn-immutable-etc.nix;
|
||||
user-activation-scripts = handleTest ./user-activation-scripts.nix {};
|
||||
user-enable-option = runTest ./user-enable-option.nix;
|
||||
user-expiry = runTest ./user-expiry.nix;
|
||||
user-home-mode = handleTest ./user-home-mode.nix {};
|
||||
ustreamer = handleTest ./ustreamer.nix {};
|
||||
|
||||
@@ -7,7 +7,7 @@ import ./make-test-python.nix (
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ ./common/user-account.nix ];
|
||||
environment.systemPackages = [ pkgs.poppler_utils ];
|
||||
environment.systemPackages = [ pkgs.poppler-utils ];
|
||||
fonts.packages = [ pkgs.dejavu_fonts ]; # yields more OCR-able pdf
|
||||
services.printing.cups-pdf.enable = true;
|
||||
services.printing.cups-pdf.instances = {
|
||||
|
||||
@@ -4,7 +4,7 @@ import ./make-test-python.nix (
|
||||
# build a getent that itself doesn't see anything in /etc/hosts and
|
||||
# /etc/nsswitch.conf, by using libredirect to steer its own requests to
|
||||
# /dev/null.
|
||||
# This means is /has/ to go via nscd to actuallly resolve any of the
|
||||
# This means is /has/ to go via nscd to actually resolve any of the
|
||||
# additionally configured hosts.
|
||||
getent' = pkgs.writeScript "getent-without-etc-hosts" ''
|
||||
export NIX_REDIRECTS=/etc/hosts=/dev/null:/etc/nsswitch.conf=/dev/null
|
||||
|
||||
@@ -63,8 +63,65 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
podmanRootlessTests = lib.genAttrs [ "conmon" "healthy" ] (
|
||||
type:
|
||||
makeTest {
|
||||
name = "oci-containers-podman-rootless-${type}";
|
||||
meta.maintainers = lib.teams.flyingcircus.members;
|
||||
nodes = {
|
||||
podman =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = [ pkgs.redis ];
|
||||
users.groups.redis = { };
|
||||
users.users.redis = {
|
||||
isSystemUser = true;
|
||||
group = "redis";
|
||||
home = "/var/lib/redis";
|
||||
linger = type == "healthy";
|
||||
createHome = true;
|
||||
subUidRanges = [
|
||||
{
|
||||
count = 65536;
|
||||
startUid = 2147483646;
|
||||
}
|
||||
];
|
||||
subGidRanges = [
|
||||
{
|
||||
count = 65536;
|
||||
startGid = 2147483647;
|
||||
}
|
||||
];
|
||||
};
|
||||
virtualisation.oci-containers = {
|
||||
backend = "podman";
|
||||
containers.redis = {
|
||||
image = "redis:latest";
|
||||
imageFile = pkgs.dockerTools.examples.redis;
|
||||
ports = [ "6379:6379" ];
|
||||
podman = {
|
||||
user = "redis";
|
||||
sdnotify = type;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
podman.wait_for_unit("podman-redis.service")
|
||||
${lib.optionalString (type != "healthy") ''
|
||||
podman.wait_for_open_port(6379)
|
||||
''}
|
||||
podman.wait_until_succeeds("set -eo pipefail; echo 'keys *' | redis-cli")
|
||||
'';
|
||||
}
|
||||
);
|
||||
in
|
||||
lib.foldl' (attrs: backend: attrs // { ${backend} = mkOCITest backend; }) { } [
|
||||
"docker"
|
||||
"podman"
|
||||
]
|
||||
{
|
||||
docker = mkOCITest "docker";
|
||||
podman = mkOCITest "podman";
|
||||
podman-rootless-conmon = podmanRootlessTests.conmon;
|
||||
podman-rootless-healthy = podmanRootlessTests.healthy;
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ import ./make-test-python.nix ({ lib, ... }: {
|
||||
# Double check that our attrset option override works as expected
|
||||
cmdline = node.succeed("grep 'paperless-manage' $(systemctl cat paperless-exporter | grep ExecStart | cut -f 2 -d=)")
|
||||
print(f"Exporter command line {cmdline!r}")
|
||||
assert cmdline.strip() == "./paperless-manage document_exporter /var/lib/paperless/export --compare-checksums --delete --no-progress-bar --no-thumbnail", "Unexpected exporter command line"
|
||||
assert cmdline.strip() == "paperless-manage document_exporter /var/lib/paperless/export --compare-checksums --delete --no-progress-bar --no-thumbnail", "Unexpected exporter command line"
|
||||
|
||||
test_paperless(simple)
|
||||
simple.send_monitor_command("quit")
|
||||
|
||||
82
nixos/tests/user-enable-option.nix
Normal file
82
nixos/tests/user-enable-option.nix
Normal file
@@ -0,0 +1,82 @@
|
||||
let
|
||||
normal-enabled = "username-normal-enabled";
|
||||
normal-disabled = "username-normal-disabled";
|
||||
system-enabled = "username-system-enabled";
|
||||
system-disabled = "username-system-disabled";
|
||||
passwd = "enableOptionPasswd";
|
||||
in
|
||||
{
|
||||
name = "user-enable-option";
|
||||
|
||||
nodes.machine = {
|
||||
users = {
|
||||
groups.test-group = { };
|
||||
users = {
|
||||
# User is enabled (default behaviour).
|
||||
${normal-enabled} = {
|
||||
enable = true;
|
||||
isNormalUser = true;
|
||||
initialPassword = passwd;
|
||||
};
|
||||
|
||||
# User is disabled.
|
||||
${normal-disabled} = {
|
||||
enable = false;
|
||||
isNormalUser = true;
|
||||
initialPassword = passwd;
|
||||
};
|
||||
|
||||
# User is a system user, and is enabled.
|
||||
${system-enabled} = {
|
||||
enable = true;
|
||||
isSystemUser = true;
|
||||
initialPassword = passwd;
|
||||
group = "test-group";
|
||||
};
|
||||
|
||||
# User is a system user, and is disabled.
|
||||
${system-disabled} = {
|
||||
enable = false;
|
||||
isSystemUser = true;
|
||||
initialPassword = passwd;
|
||||
group = "test-group";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
def switch_to_tty(tty_number):
|
||||
machine.fail(f"pgrep -f 'agetty.*tty{tty_number}'")
|
||||
machine.send_key(f"alt-f{tty_number}")
|
||||
machine.wait_until_succeeds(f"[ $(fgconsole) = {tty_number} ]")
|
||||
machine.wait_for_unit(f"getty@tty{tty_number}.service")
|
||||
machine.wait_until_succeeds(f"pgrep -f 'agetty.*tty{tty_number}'")
|
||||
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.wait_for_unit("getty@tty1.service")
|
||||
|
||||
with subtest("${normal-enabled} exists"):
|
||||
check_fn = f"id ${normal-enabled}"
|
||||
machine.succeed(check_fn)
|
||||
machine.wait_until_tty_matches("1", "login: ")
|
||||
machine.send_chars("${normal-enabled}\n")
|
||||
machine.wait_until_tty_matches("1", "Password: ")
|
||||
machine.send_chars("${passwd}\n")
|
||||
|
||||
with subtest("${normal-disabled} does not exist"):
|
||||
switch_to_tty(2)
|
||||
check_fn = f"id ${normal-disabled}"
|
||||
machine.fail(check_fn)
|
||||
|
||||
with subtest("${system-enabled} exists"):
|
||||
switch_to_tty(3)
|
||||
check_fn = f"id ${system-enabled}"
|
||||
machine.succeed(check_fn)
|
||||
|
||||
with subtest("${system-disabled} does not exist"):
|
||||
switch_to_tty(4)
|
||||
check_fn = f"id ${system-disabled}"
|
||||
machine.fail(check_fn)
|
||||
'';
|
||||
}
|
||||
@@ -66,6 +66,10 @@ in
|
||||
isNormalUser = true;
|
||||
hashedPassword = newNormaloHashedPassword;
|
||||
};
|
||||
normalo-disabled = {
|
||||
enable = false;
|
||||
isNormalUser = true;
|
||||
};
|
||||
};
|
||||
groups = {
|
||||
new-group = { };
|
||||
@@ -96,6 +100,11 @@ in
|
||||
assert 1000 > int(machine.succeed("id --user sysuser")), "sysuser user doesn't have a system UID"
|
||||
assert "${sysuserInitialHashedPassword}" in machine.succeed("getent shadow sysuser"), "system user password is not correct"
|
||||
|
||||
with subtest("normalo-disabled is NOT created"):
|
||||
machine.fail("id normalo-disabled")
|
||||
# Check if user's home has been created
|
||||
machine.fail("[ -d '/home/normalo-disabled' ]")
|
||||
|
||||
with subtest("sysusers group is created"):
|
||||
print(machine.succeed("getent group sysusers"))
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ To test the build process of every IDE (as well as the process for adding plugin
|
||||
- Run these commands respectively:
|
||||
- `nix build .#jetbrains.idea-community-src.src.src && ./source/build_maven.py source/idea_maven_artefacts.json result/` for IDEA
|
||||
- `nix build .#jetbrains.pycharm-community-src.src.src && ./source/build_maven.py source/pycharm_maven_artefacts.json result/` for PyCharm
|
||||
- Update `source/brokenPlugins.json` (from https://plugins.jetbrains.com/files/brokenPlugins.json)
|
||||
- Update `brokenPlugins` timestamp and hash (from https://web.archive.org/web/*/https://plugins.jetbrains.com/files/brokenPlugins.json)
|
||||
- Do a test build
|
||||
- If it succeeds, make a commit
|
||||
- Run ./plugins/update_plugins.py, this will update plugins and automatically commit them
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -219,6 +219,11 @@ let
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
brokenPlugins = fetchurl {
|
||||
url = "https://web.archive.org/web/20250224030717if_/https://downloads.marketplace.jetbrains.com/files/brokenPlugins.json";
|
||||
hash = "sha256-l3qy9ixYsHqZZ9kk1r2fA4GomaJsLaM/T48VaL5ZJr8=";
|
||||
};
|
||||
|
||||
in
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "${buildType}-community";
|
||||
@@ -248,7 +253,7 @@ stdenvNoCC.mkDerivation rec {
|
||||
--replace-fail 'JDK_PATH_HERE' '${jbr}/lib/openjdk'
|
||||
substituteInPlace \
|
||||
platform/build-scripts/src/org/jetbrains/intellij/build/impl/brokenPlugins.kt \
|
||||
--replace-fail 'BROKEN_PLUGINS_HERE' '${./brokenPlugins.json}'
|
||||
--replace-fail 'BROKEN_PLUGINS_HERE' '${brokenPlugins}'
|
||||
substituteInPlace \
|
||||
platform/build-scripts/src/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.kt \
|
||||
--replace-fail 'XPLAT_LAUNCHER_PREBUILT_PATH_HERE' '${xplat-launcher}'
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
runCommand,
|
||||
fetchzip,
|
||||
fetchFromGitHub,
|
||||
replaceVars,
|
||||
@@ -9,7 +10,7 @@
|
||||
zlib,
|
||||
openssl,
|
||||
R,
|
||||
libsForQt5,
|
||||
fontconfig,
|
||||
quarto,
|
||||
libuuid,
|
||||
hunspellDicts,
|
||||
@@ -21,16 +22,34 @@
|
||||
yaml-cpp,
|
||||
soci,
|
||||
sqlite,
|
||||
apple-sdk_11,
|
||||
xcbuild,
|
||||
nodejs,
|
||||
npmHooks,
|
||||
fetchNpmDeps,
|
||||
yarn,
|
||||
yarnConfigHook,
|
||||
fetchYarnDeps,
|
||||
zip,
|
||||
git,
|
||||
makeWrapper,
|
||||
electron_33,
|
||||
server ? false, # build server version
|
||||
pam,
|
||||
nixosTests,
|
||||
}:
|
||||
|
||||
let
|
||||
# Note: we shouldn't use the latest electron here, since the node-abi dependency might
|
||||
# need to be updated every time the latest electron gets a new abi version number
|
||||
electron = electron_33;
|
||||
|
||||
# unpack tarball containing electron's headers
|
||||
electron-headers = runCommand "electron-headers" { } ''
|
||||
mkdir -p $out
|
||||
tar -C $out --strip-components=1 -xvf ${electron.headers}
|
||||
'';
|
||||
|
||||
mathJaxSrc = fetchzip {
|
||||
url = "https://s3.amazonaws.com/rstudio-buildtools/mathjax-27.zip";
|
||||
hash = "sha256-J7SZK/9q3HcXTD7WFHxvh++ttuCd89Vc4SEBrUEU0AI=";
|
||||
@@ -53,6 +72,14 @@ let
|
||||
d: !(lib.hasAttr "dictFileName" d && lib.elem d.dictFileName (map (d: d.dictFileName) largeDicts))
|
||||
) hunspellDictionaries;
|
||||
dictionaries = largeDicts ++ otherDicts;
|
||||
|
||||
# rstudio assumes quarto bundles pandoc into bin/tools/
|
||||
quartoWrapper = runCommand "quarto-wrapper" { } ''
|
||||
mkdir -p $out/bin/tools
|
||||
ln -s ${lib.getExe pandoc} $out/bin/tools/pandoc
|
||||
ln -s ${lib.getExe quarto} $out/bin/quarto
|
||||
ln -s ${quarto}/share $out/share
|
||||
'';
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "RStudio";
|
||||
@@ -66,7 +93,7 @@ stdenv.mkDerivation rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "rstudio";
|
||||
repo = "rstudio";
|
||||
rev = "refs/tags/v${version}";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-j258eW1MYQrB6kkpjyolXdNuwQ3zSWv9so4q0QLsZuw=";
|
||||
};
|
||||
|
||||
@@ -78,9 +105,14 @@ stdenv.mkDerivation rec {
|
||||
nodejs
|
||||
yarn
|
||||
yarnConfigHook
|
||||
zip
|
||||
git
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ]
|
||||
++ lib.optionals (!server) [
|
||||
libsForQt5.wrapQtAppsHook
|
||||
(nodejs.python.withPackages (ps: [ ps.setuptools ]))
|
||||
npmHooks.npmConfigHook
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
@@ -94,30 +126,30 @@ stdenv.mkDerivation rec {
|
||||
soci
|
||||
sqlite.dev
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ apple-sdk_11 ]
|
||||
++ lib.optionals server [ pam ]
|
||||
++ lib.optionals (!server) [
|
||||
libsForQt5.qtbase
|
||||
libsForQt5.qtxmlpatterns
|
||||
libsForQt5.qtsensors
|
||||
libsForQt5.qtwebengine
|
||||
libsForQt5.qtwebchannel
|
||||
];
|
||||
++ lib.optionals (!server) [ fontconfig ];
|
||||
|
||||
cmakeFlags =
|
||||
[
|
||||
(lib.cmakeFeature "RSTUDIO_TARGET" (if server then "Server" else "Desktop"))
|
||||
(lib.cmakeFeature "RSTUDIO_TARGET" (if server then "Server" else "Electron"))
|
||||
(lib.cmakeBool "RSTUDIO_USE_SYSTEM_SOCI" true)
|
||||
(lib.cmakeBool "RSTUDIO_USE_SYSTEM_BOOST" true)
|
||||
(lib.cmakeBool "RSTUDIO_USE_SYSTEM_YAML_CPP" true)
|
||||
(lib.cmakeBool "RSTUDIO_DISABLE_CHECK_FOR_UPDATES" true)
|
||||
(lib.cmakeBool "QUARTO_ENABLED" true)
|
||||
(lib.cmakeFeature "CMAKE_INSTALL_PREFIX" "${placeholder "out"}/lib/rstudio")
|
||||
(lib.cmakeBool "RSTUDIO_CRASHPAD_ENABLED" false) # This is a NOOP except on x86_64-darwin
|
||||
(lib.cmakeFeature "CMAKE_INSTALL_PREFIX" (
|
||||
(placeholder "out") + (if stdenv.isDarwin then "/Applications" else "/lib/rstudio")
|
||||
))
|
||||
]
|
||||
++ lib.optionals (!server) [
|
||||
(lib.cmakeFeature "QT_QMAKE_EXECUTABLE" "${libsForQt5.qmake}/bin/qmake")
|
||||
(lib.cmakeBool "RSTUDIO_INSTALL_FREEDESKTOP" true)
|
||||
(lib.cmakeBool "RSTUDIO_INSTALL_FREEDESKTOP" stdenv.hostPlatform.isLinux)
|
||||
];
|
||||
|
||||
# on Darwin, cmake uses find_library to locate R instead of using the PATH
|
||||
env.NIX_LDFLAGS = "-L${R}/lib/R/lib";
|
||||
|
||||
patches = [
|
||||
# Hack RStudio to only use the input R and provided libclang.
|
||||
(replaceVars ./r-location.patch {
|
||||
@@ -130,8 +162,10 @@ stdenv.mkDerivation rec {
|
||||
./fix-resources-path.patch
|
||||
./ignore-etc-os-release.patch
|
||||
./dont-yarn-install.patch
|
||||
./dont-assume-pandoc-in-quarto.patch
|
||||
./boost-1.86.patch
|
||||
./fix-darwin.patch
|
||||
# needed for rebuilding for later electron versions
|
||||
./update-nan-and-node-abi.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
@@ -151,6 +185,21 @@ stdenv.mkDerivation rec {
|
||||
|
||||
dontYarnInstallDeps = true; # will call manually in preConfigure
|
||||
|
||||
npmRoot = "src/node/desktop";
|
||||
|
||||
# don't build native modules with node headers
|
||||
npmFlags = [ "--ignore-scripts" ];
|
||||
|
||||
npmDeps = fetchNpmDeps {
|
||||
name = "rstudio-${version}-npm-deps";
|
||||
inherit src;
|
||||
patches = [ ./update-nan-and-node-abi.patch ];
|
||||
postPatch = "cd ${npmRoot}";
|
||||
hash = "sha256-CtHCN4sWeHNDd59TV/TgTC4d6h7X1Cl4E/aJkAfRk7g=";
|
||||
};
|
||||
|
||||
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
|
||||
preConfigure = ''
|
||||
# set up node_modules directory inside quarto so that panmirror can be built
|
||||
mkdir src/gwt/lib/quarto
|
||||
@@ -170,36 +219,90 @@ stdenv.mkDerivation rec {
|
||||
done
|
||||
done
|
||||
|
||||
ln -s ${quarto} dependencies/quarto
|
||||
ln -s ${quartoWrapper} dependencies/quarto
|
||||
|
||||
# version in dependencies/common/install-mathjax
|
||||
ln -s ${mathJaxSrc} dependencies/mathjax-27
|
||||
|
||||
# version in CMakeGlobals.txt (PANDOC_VERSION)
|
||||
mkdir -p dependencies/pandoc/2.18
|
||||
ln -s ${lib.getBin pandoc}/bin/* dependencies/pandoc/2.18
|
||||
|
||||
# version in CMakeGlobals.txt (RSTUDIO_INSTALLED_NODE_VERSION)
|
||||
mkdir -p dependencies/common/node
|
||||
# node used by cmake
|
||||
# version in CMakeGlobals.txt (RSTUDIO_NODE_VERSION)
|
||||
ln -s ${nodejs} dependencies/common/node/18.18.2
|
||||
# node used at runtime
|
||||
# version in CMakeGlobals.txt (RSTUDIO_INSTALLED_NODE_VERSION)
|
||||
ln -s ${nodejs} dependencies/common/node/18.20.3
|
||||
|
||||
${lib.optionalString (!server) ''
|
||||
pushd $npmRoot
|
||||
|
||||
substituteInPlace package.json \
|
||||
--replace-fail "npm ci && " ""
|
||||
|
||||
# use electron's headers to make node-gyp compile against the electron ABI
|
||||
export npm_config_nodedir="${electron-headers}"
|
||||
|
||||
### override the detected electron version
|
||||
substituteInPlace node_modules/@electron-forge/core-utils/dist/electron-version.js \
|
||||
--replace-fail "return version" "return '${electron.version}'"
|
||||
|
||||
### create the electron archive to be used by electron-packager
|
||||
cp -r ${electron.dist} electron-dist
|
||||
chmod -R u+w electron-dist
|
||||
|
||||
pushd electron-dist
|
||||
zip -0Xqr ../electron.zip .
|
||||
popd
|
||||
|
||||
rm -r electron-dist
|
||||
|
||||
# force @electron/packager to use our electron instead of downloading it
|
||||
substituteInPlace node_modules/@electron/packager/src/index.js \
|
||||
--replace-fail "await this.getElectronZipPath(downloadOpts)" "'$(pwd)/electron.zip'"
|
||||
|
||||
# Work around known nan issue for electron_33 and above
|
||||
# https://github.com/nodejs/nan/issues/978
|
||||
substituteInPlace node_modules/nan/nan.h \
|
||||
--replace-fail '#include "nan_scriptorigin.h"' ""
|
||||
|
||||
# now that we patched everything, we still have to run the scripts we ignored with --ignore-scripts
|
||||
npm rebuild
|
||||
|
||||
popd
|
||||
''}
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
${lib.optionalString server ''
|
||||
${lib.optionalString (server && stdenv.hostPlatform.isLinux) ''
|
||||
ln -s $out/lib/rstudio/bin/{crash-handler-proxy,postback,r-ldpath,rpostback,rserver,rserver-pam,rsession,rstudio-server} $out/bin
|
||||
''}
|
||||
|
||||
${lib.optionalString (!server) ''
|
||||
ln -s $out/lib/rstudio/bin/{diagnostics,rpostback,rstudio} $out/bin
|
||||
${lib.optionalString (!server && stdenv.hostPlatform.isLinux) ''
|
||||
# remove unneeded electron files, since we'll wrap the app with our own electron
|
||||
shopt -s extglob
|
||||
rm -r $out/lib/rstudio/!(locales|resources|resources.pak)
|
||||
|
||||
makeWrapper ${lib.getExe electron} "$out/bin/rstudio" \
|
||||
--add-flags "$out/lib/rstudio/resources/app/" \
|
||||
--set-default ELECTRON_FORCE_IS_PACKAGED 1 \
|
||||
--suffix PATH : ${lib.makeBinPath [ gnumake ]}
|
||||
|
||||
ln -s $out/lib/rstudio/resources/app/bin/{diagnostics,rpostback} $out/bin
|
||||
''}
|
||||
|
||||
${lib.optionalString (server && stdenv.hostPlatform.isDarwin) ''
|
||||
ln -s $out/Applications/RStudio.app/Contents/MacOS/{crash-handler-proxy,postback,r-ldpath,rpostback,rserver,rserver-pam,rsession,rstudio-server} $out/bin
|
||||
''}
|
||||
|
||||
${lib.optionalString (!server && stdenv.hostPlatform.isDarwin) ''
|
||||
# electron can't find its files if we use a symlink here
|
||||
makeWrapper $out/Applications/RStudio.app/Contents/MacOS/RStudio $out/bin/rstudio
|
||||
|
||||
ln -s $out/Applications/RStudio.app/Contents/Resources/app/bin/{diagnostics,rpostback} $out/bin
|
||||
''}
|
||||
'';
|
||||
|
||||
qtWrapperArgs = lib.optionals (!server) [
|
||||
"--suffix PATH : ${lib.makeBinPath [ gnumake ]}"
|
||||
];
|
||||
|
||||
passthru = {
|
||||
inherit server;
|
||||
tests = {
|
||||
@@ -208,15 +311,15 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
meta = {
|
||||
broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
|
||||
description = "Set of integrated tools for the R language";
|
||||
homepage = "https://www.rstudio.com/";
|
||||
license = lib.licenses.agpl3Only;
|
||||
maintainers = with lib.maintainers; [
|
||||
ciil
|
||||
cfhammill
|
||||
tomasajt
|
||||
];
|
||||
mainProgram = "rstudio" + lib.optionalString server "-server";
|
||||
platforms = lib.platforms.linux;
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
diff --git a/src/cpp/session/CMakeLists.txt b/src/cpp/session/CMakeLists.txt
|
||||
index 0202e84..596b9f8 100644
|
||||
--- a/src/cpp/session/CMakeLists.txt
|
||||
+++ b/src/cpp/session/CMakeLists.txt
|
||||
@@ -59,11 +59,7 @@ endif()
|
||||
|
||||
|
||||
# install pandoc
|
||||
-# - by default, we use quarto + quarto's bundled pandoc
|
||||
-# - if quarto is not enabled, use pandoc fallback
|
||||
-if(QUARTO_ENABLED)
|
||||
- set(RSTUDIO_DEPENDENCIES_PANDOC_DIR "${RSTUDIO_DEPENDENCIES_QUARTO_DIR}/bin/tools")
|
||||
-elseif(EXISTS "${RSTUDIO_TOOLS_ROOT}/pandoc/${PANDOC_VERSION}")
|
||||
+if(EXISTS "${RSTUDIO_TOOLS_ROOT}/pandoc/${PANDOC_VERSION}")
|
||||
set(RSTUDIO_DEPENDENCIES_PANDOC_DIR "${RSTUDIO_TOOLS_ROOT}/pandoc/${PANDOC_VERSION}")
|
||||
else()
|
||||
set(RSTUDIO_DEPENDENCIES_PANDOC_DIR "${RSTUDIO_DEPENDENCIES_DIR}/pandoc/${PANDOC_VERSION}")
|
||||
@@ -733,11 +729,10 @@ if(NOT RSTUDIO_SESSION_WIN32 AND NOT RSESSION_ALTERNATE_BUILD)
|
||||
PATTERN ".gitignore"
|
||||
EXCLUDE)
|
||||
endif()
|
||||
- else()
|
||||
- install(DIRECTORY "${RSTUDIO_DEPENDENCIES_PANDOC_DIR}/"
|
||||
- DESTINATION "${RSTUDIO_INSTALL_BIN}/pandoc"
|
||||
- USE_SOURCE_PERMISSIONS)
|
||||
endif()
|
||||
+ install(DIRECTORY "${RSTUDIO_DEPENDENCIES_PANDOC_DIR}/"
|
||||
+ DESTINATION "${RSTUDIO_INSTALL_BIN}/pandoc"
|
||||
+ USE_SOURCE_PERMISSIONS)
|
||||
|
||||
# install embedded packages
|
||||
foreach(PKG ${RSTUDIO_EMBEDDED_PACKAGES})
|
||||
diff --git a/src/cpp/session/include/session/SessionConstants.hpp b/src/cpp/session/include/session/SessionConstants.hpp
|
||||
index e6aef22..57491ec 100644
|
||||
--- a/src/cpp/session/include/session/SessionConstants.hpp
|
||||
+++ b/src/cpp/session/include/session/SessionConstants.hpp
|
||||
@@ -147,11 +147,7 @@
|
||||
#define kSessionTmpDirEnvVar "RS_SESSION_TMP_DIR"
|
||||
#define kSessionTmpDir "rstudio-rsession"
|
||||
|
||||
-#ifdef QUARTO_ENABLED
|
||||
-# define kDefaultPandocPath "bin/quarto/bin/tools"
|
||||
-#else
|
||||
# define kDefaultPandocPath "bin/pandoc"
|
||||
-#endif
|
||||
|
||||
#define kDefaultNodePath "bin/node"
|
||||
#define kDefaultQuartoPath "bin/quarto"
|
||||
169
pkgs/applications/editors/rstudio/fix-darwin.patch
Normal file
169
pkgs/applications/editors/rstudio/fix-darwin.patch
Normal file
@@ -0,0 +1,169 @@
|
||||
diff --git a/CMakeGlobals.txt b/CMakeGlobals.txt
|
||||
index 8868c44..19b2fa0 100644
|
||||
--- a/CMakeGlobals.txt
|
||||
+++ b/CMakeGlobals.txt
|
||||
@@ -345,6 +345,7 @@ if (APPLE)
|
||||
set(RSTUDIO_INSTALL_SUPPORTING RStudio.app/Contents/Resources/app)
|
||||
# handles Quarto share when not stored alongside bin
|
||||
set(RSTUDIO_INSTALL_RESOURCES RStudio.app/Contents/Resources)
|
||||
+ set(RSTUDIO_INSTALL_ELECTRON .)
|
||||
else()
|
||||
set(RSTUDIO_INSTALL_BIN RStudio.app/Contents/MacOS)
|
||||
set(RSTUDIO_INSTALL_SUPPORTING RStudio.app/Contents/Resources)
|
||||
diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt
|
||||
index b47f04f..928165d 100644
|
||||
--- a/src/cpp/CMakeLists.txt
|
||||
+++ b/src/cpp/CMakeLists.txt
|
||||
@@ -240,7 +240,7 @@ endif()
|
||||
# determine whether we should statically link boost. we always do this
|
||||
# unless we are building a non-packaged build on linux (in which case
|
||||
# boost dynamic libraries are presumed to be installed on the system ldpath)
|
||||
-if(APPLE OR WIN32 OR RSTUDIO_PACKAGE_BUILD)
|
||||
+if(WIN32 OR RSTUDIO_PACKAGE_BUILD)
|
||||
set(Boost_USE_STATIC_LIBS ON)
|
||||
endif()
|
||||
|
||||
@@ -475,7 +475,7 @@ endif()
|
||||
|
||||
# find SOCI libraries
|
||||
if(UNIX)
|
||||
- if(NOT APPLE AND RSTUDIO_USE_SYSTEM_SOCI)
|
||||
+ if(RSTUDIO_USE_SYSTEM_SOCI)
|
||||
find_library(SOCI_CORE_LIB NAMES "libsoci_core.a" "soci_core" REQUIRED)
|
||||
find_library(SOCI_SQLITE_LIB NAMES "libsoci_sqlite3.a" "soci_sqlite3" REQUIRED)
|
||||
if(RSTUDIO_PRO_BUILD)
|
||||
diff --git a/src/node/CMakeNodeTools.txt b/src/node/CMakeNodeTools.txt
|
||||
index 43f7f63..8a35a16 100644
|
||||
--- a/src/node/CMakeNodeTools.txt
|
||||
+++ b/src/node/CMakeNodeTools.txt
|
||||
@@ -27,17 +27,7 @@ endif()
|
||||
|
||||
# set cmake env vars for node (NODEJS) and node tools, like YARN, and NPM
|
||||
|
||||
-if(APPLE AND UNAME_M STREQUAL arm64)
|
||||
-
|
||||
- # make sure we're using arm64 binaries of node / npm for arm64 builds
|
||||
- set(NODEJS
|
||||
- "${CMAKE_CURRENT_LIST_DIR}/../../dependencies/common/node/${RSTUDIO_NODE_VERSION}-arm64/bin/node")
|
||||
- set(NPM
|
||||
- "${CMAKE_CURRENT_LIST_DIR}/../../dependencies/common/node/${RSTUDIO_NODE_VERSION}-arm64/bin/npm")
|
||||
- set(NPX
|
||||
- "${CMAKE_CURRENT_LIST_DIR}/../../dependencies/common/node/${RSTUDIO_NODE_VERSION}-arm64/bin/npx")
|
||||
-
|
||||
-else()
|
||||
+if(true)
|
||||
|
||||
# Detect node.js, npm, and npx; use versions supplied by the dependency scripts
|
||||
find_program(NODEJS
|
||||
diff --git a/src/node/desktop/CMakeLists.txt b/src/node/desktop/CMakeLists.txt
|
||||
index 2f4d929..9769143 100644
|
||||
--- a/src/node/desktop/CMakeLists.txt
|
||||
+++ b/src/node/desktop/CMakeLists.txt
|
||||
@@ -119,22 +119,9 @@ if (APPLE)
|
||||
# configure Info.plist
|
||||
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
|
||||
+endif()
|
||||
|
||||
- # copy sources to build directory. note that the build directory cannot
|
||||
- # be the "true" CMake directory as some files are resolved relative to
|
||||
- # the desktop project's relative path in the application structure
|
||||
- set(ELECTRON_BUILD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../desktop-build-${UNAME_M}" CACHE INTERNAL "")
|
||||
- file(REMOVE_RECURSE "${ELECTRON_BUILD_DIR}")
|
||||
- file(MAKE_DIRECTORY "${ELECTRON_BUILD_DIR}")
|
||||
- file(
|
||||
- COPY "${CMAKE_CURRENT_SOURCE_DIR}/"
|
||||
- DESTINATION "${ELECTRON_BUILD_DIR}/"
|
||||
- REGEX "/.webpack$" EXCLUDE
|
||||
- REGEX "/build$" EXCLUDE
|
||||
- REGEX "/bin$" EXCLUDE
|
||||
- REGEX "/out$" EXCLUDE
|
||||
- REGEX "/node_modules$" EXCLUDE)
|
||||
-else()
|
||||
+if(true)
|
||||
set(ELECTRON_BUILD_DIR "${ELECTRON_SOURCE_DIR}" CACHE INTERNAL "")
|
||||
endif()
|
||||
|
||||
@@ -230,16 +217,21 @@ if(WIN32)
|
||||
PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
|
||||
DESTINATION "${RSTUDIO_INSTALL_BIN}")
|
||||
|
||||
-elseif(LINUX)
|
||||
+elseif(LINUX OR APPLE)
|
||||
|
||||
- if(UNAME_M STREQUAL aarch64)
|
||||
+ if(UNAME_M STREQUAL aarch64 OR UNAME_M STREQUAL arm64)
|
||||
set(ELECTRON_ARCH arm64)
|
||||
else()
|
||||
set(ELECTRON_ARCH x64)
|
||||
endif()
|
||||
+ if(APPLE)
|
||||
+ set(ELECTRON_PLATFORM darwin)
|
||||
+ else()
|
||||
+ set(ELECTRON_PLATFORM linux)
|
||||
+ endif()
|
||||
|
||||
install(
|
||||
- DIRECTORY "${ELECTRON_BUILD_DIR}/out/RStudio-linux-${ELECTRON_ARCH}/"
|
||||
+ DIRECTORY "${ELECTRON_BUILD_DIR}/out/RStudio-${ELECTRON_PLATFORM}-${ELECTRON_ARCH}/"
|
||||
DIRECTORY_PERMISSIONS
|
||||
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||
GROUP_READ GROUP_EXECUTE
|
||||
diff --git a/src/node/desktop/src/main/session-launcher.ts b/src/node/desktop/src/main/session-launcher.ts
|
||||
index 615ca1e..a9c1624 100644
|
||||
--- a/src/node/desktop/src/main/session-launcher.ts
|
||||
+++ b/src/node/desktop/src/main/session-launcher.ts
|
||||
@@ -89,27 +89,9 @@ function launchProcess(absPath: FilePath, argList: string[]): ChildProcess {
|
||||
// DYLD_INSERT_LIBRARIES to inject the library we wish to use
|
||||
const rHome = new FilePath(getenv('R_HOME'));
|
||||
const rLib = rHome.completePath('lib/libR.dylib');
|
||||
- const dyldArgs = [
|
||||
- '-e', `DYLD_INSERT_LIBRARIES=${rLib.getAbsolutePath()}`,
|
||||
- '-e', `DYLD_FALLBACK_LIBRARY_PATH=${dyldFallbackLibraryPath}`
|
||||
- ];
|
||||
-
|
||||
- // launch via /usr/bin/arch, so we can control whether the OS requests
|
||||
- // x86 or arm64 versions of the libraries in the launched rsession
|
||||
- const path = absPath.getAbsolutePath();
|
||||
- if (process.arch === 'arm64') {
|
||||
- const fileInfo = execSync(`/usr/bin/file "${rLib}"`, { encoding: 'utf-8' });
|
||||
- if (fileInfo.indexOf('arm64') === -1 && fileInfo.indexOf('x86_64') !== -1) {
|
||||
- argList = ['-x86_64', ...dyldArgs, path, ...argList];
|
||||
- absPath = new FilePath('/usr/bin/arch');
|
||||
- } else {
|
||||
- argList = ['-arm64', ...dyldArgs, path, ...argList];
|
||||
- absPath = new FilePath('/usr/bin/arch');
|
||||
- }
|
||||
- } else {
|
||||
- argList = ['-x86_64', ...dyldArgs, path, ...argList];
|
||||
- absPath = new FilePath('/usr/bin/arch');
|
||||
- }
|
||||
+
|
||||
+ env['DYLD_INSERT_LIBRARIES'] = rLib.getAbsolutePath();
|
||||
+ env['DYLD_FALLBACK_LIBRARY_PATH'] = dyldFallbackLibraryPath;
|
||||
}
|
||||
|
||||
const rsessionOptions = new LogOptions('rsession');
|
||||
@@ -542,22 +524,6 @@ export class SessionLauncher {
|
||||
}
|
||||
}
|
||||
|
||||
- // on macOS, we need to look at R and figure out if we should be trying to run
|
||||
- // with the arm64 session binary (rsession-arm64) or with the x64 session binary (rsession)
|
||||
- if (app.isPackaged && process.platform === 'darwin' && process.arch === 'arm64') {
|
||||
- const rHome = getenv('R_HOME');
|
||||
- const rLibPath = `${rHome}/lib/libR.dylib`;
|
||||
- logger().logDebug(`$ /usr/bin/file "${rLibPath}"`);
|
||||
- const fileInfo = execSync(`/usr/bin/file "${rLibPath}"`, { encoding: 'utf-8' });
|
||||
- logger().logDebug(fileInfo);
|
||||
- if (fileInfo.indexOf('arm64') !== -1) {
|
||||
- this.sessionPath = this.sessionPath.getParent().completeChildPath('rsession-arm64');
|
||||
- logger().logDebug(`R is arm64; using ${this.sessionPath}`);
|
||||
- } else {
|
||||
- logger().logDebug(`R is x86_64; using ${this.sessionPath}`);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
const sessionProc = launchProcess(this.sessionPath, argList);
|
||||
sessionProc.on('error', (err) => {
|
||||
// Unable to start rsession (at all)
|
||||
@@ -1,23 +1,23 @@
|
||||
diff --git a/src/cpp/core/r_util/REnvironmentPosix.cpp b/src/cpp/core/r_util/REnvironmentPosix.cpp
|
||||
index dbc9a9a1..9a526a86 100644
|
||||
index a4e964d49d..512707801b 100644
|
||||
--- a/src/cpp/core/r_util/REnvironmentPosix.cpp
|
||||
+++ b/src/cpp/core/r_util/REnvironmentPosix.cpp
|
||||
@@ -107,12 +107,9 @@ FilePath systemDefaultRScript(std::string* pErrMsg)
|
||||
@@ -108,13 +108,7 @@ FilePath systemDefaultRScript(std::string* pErrMsg)
|
||||
{
|
||||
// check fallback paths
|
||||
std::vector<std::string> rScriptPaths = {
|
||||
- "/usr/bin/R",
|
||||
- "/usr/local/bin/R",
|
||||
- "/opt/local/bin/R",
|
||||
+ "@R@/bin/R"
|
||||
#ifdef __APPLE__
|
||||
- #ifdef __APPLE__
|
||||
- "/opt/homebrew/bin/R",
|
||||
- "/Library/Frameworks/R.framework/Resources/bin/R",
|
||||
+ "@R@/bin/R",
|
||||
#endif
|
||||
- #endif
|
||||
+ "@R@/bin/R"
|
||||
};
|
||||
|
||||
@@ -225,8 +222,7 @@ FilePath systemDefaultRScript(std::string* pErrMsg)
|
||||
return scanForRScript(rScriptPaths, pErrMsg);
|
||||
@@ -226,8 +220,7 @@ FilePath systemDefaultRScript(std::string* pErrMsg)
|
||||
// scan in standard locations as a fallback
|
||||
std::string scanErrMsg;
|
||||
std::vector<std::string> rScriptPaths;
|
||||
@@ -27,4 +27,15 @@ index dbc9a9a1..9a526a86 100644
|
||||
FilePath scriptPath = scanForRScript(rScriptPaths, &scanErrMsg);
|
||||
if (scriptPath.isEmpty())
|
||||
{
|
||||
|
||||
diff --git a/src/node/desktop/src/main/detect-r.ts b/src/node/desktop/src/main/detect-r.ts
|
||||
index 5b768b7cbf..c0efeac0fe 100644
|
||||
--- a/src/node/desktop/src/main/detect-r.ts
|
||||
+++ b/src/node/desktop/src/main/detect-r.ts
|
||||
@@ -305,6 +305,7 @@ writeLines(sep = "\x1F", c(
|
||||
}
|
||||
|
||||
export function scanForR(): Expected<string> {
|
||||
+ return ok('@R@/bin/R');
|
||||
// if the RSTUDIO_WHICH_R environment variable is set, use that
|
||||
// note that this does not pick up variables set in a user's bash profile, for example
|
||||
const rstudioWhichR = getenv('RSTUDIO_WHICH_R');
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
diff --git a/src/node/desktop/package-lock.json b/src/node/desktop/package-lock.json
|
||||
index 01c11edaf4..5e356470be 100644
|
||||
--- a/src/node/desktop/package-lock.json
|
||||
+++ b/src/node/desktop/package-lock.json
|
||||
@@ -19,7 +19,7 @@
|
||||
"line-reader": "0.4.0",
|
||||
"lodash.debounce": "4.0.8",
|
||||
"net-ipc": "2.1.0",
|
||||
- "node-abi": "3.52.0",
|
||||
+ "node-abi": "^3.71.0",
|
||||
"node-addon-api": "7.0.0",
|
||||
"node-system-fonts": "1.0.1",
|
||||
"properties-reader": "2.3.0",
|
||||
@@ -63,7 +63,7 @@
|
||||
"json-schema-to-typescript": "13.1.1",
|
||||
"lint-staged": "15.2.0",
|
||||
"mocha": "10.2.0",
|
||||
- "nan": "2.18.0",
|
||||
+ "nan": "^2.22.0",
|
||||
"node-loader": "2.0.0",
|
||||
"nyc": "15.1.0",
|
||||
"prettier": "3.1.1",
|
||||
@@ -9768,9 +9768,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/nan": {
|
||||
- "version": "2.18.0",
|
||||
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz",
|
||||
- "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w=="
|
||||
+ "version": "2.22.0",
|
||||
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz",
|
||||
+ "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==",
|
||||
+ "license": "MIT"
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.3",
|
||||
@@ -9863,9 +9864,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/node-abi": {
|
||||
- "version": "3.52.0",
|
||||
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz",
|
||||
- "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==",
|
||||
+ "version": "3.71.0",
|
||||
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz",
|
||||
+ "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==",
|
||||
+ "license": "MIT",
|
||||
"dependencies": {
|
||||
"semver": "^7.3.5"
|
||||
},
|
||||
diff --git a/src/node/desktop/package.json b/src/node/desktop/package.json
|
||||
index 059c39f9d7..ca9066077d 100644
|
||||
--- a/src/node/desktop/package.json
|
||||
+++ b/src/node/desktop/package.json
|
||||
@@ -59,7 +59,7 @@
|
||||
"json-schema-to-typescript": "13.1.1",
|
||||
"lint-staged": "15.2.0",
|
||||
"mocha": "10.2.0",
|
||||
- "nan": "2.18.0",
|
||||
+ "nan": "^2.22.0",
|
||||
"node-loader": "2.0.0",
|
||||
"nyc": "15.1.0",
|
||||
"process": "0.11.10",
|
||||
@@ -83,7 +83,7 @@
|
||||
"line-reader": "0.4.0",
|
||||
"lodash.debounce": "4.0.8",
|
||||
"net-ipc": "2.1.0",
|
||||
- "node-abi": "3.52.0",
|
||||
+ "node-abi": "^3.71.0",
|
||||
"node-addon-api": "7.0.0",
|
||||
"node-system-fonts": "1.0.1",
|
||||
"properties-reader": "2.3.0",
|
||||
@@ -5,7 +5,7 @@
|
||||
wrapQtAppsHook,
|
||||
fetchFromGitHub,
|
||||
addDriverRunpath,
|
||||
poppler_utils,
|
||||
poppler-utils,
|
||||
qtxmlpatterns,
|
||||
qtsvg,
|
||||
libgbm,
|
||||
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
|
||||
git
|
||||
qtPython
|
||||
qtbase
|
||||
poppler_utils
|
||||
poppler-utils
|
||||
qtxmlpatterns
|
||||
qtsvg
|
||||
libgbm
|
||||
@@ -64,9 +64,9 @@ stdenv.mkDerivation rec {
|
||||
substituteInPlace src/app/translations.pri \
|
||||
--replace '$$[QT_INSTALL_BINS]/$$LRELEASE' '${lib.getDev qttools}/bin/lrelease'
|
||||
substituteInPlace src/app/seamly2d/mainwindowsnogui.cpp \
|
||||
--replace 'define PDFTOPS "pdftops"' 'define PDFTOPS "${lib.getBin poppler_utils}/bin/pdftops"'
|
||||
--replace 'define PDFTOPS "pdftops"' 'define PDFTOPS "${lib.getBin poppler-utils}/bin/pdftops"'
|
||||
substituteInPlace src/libs/vwidgets/export_format_combobox.cpp \
|
||||
--replace 'define PDFTOPS "pdftops"' 'define PDFTOPS "${lib.getBin poppler_utils}/bin/pdftops"'
|
||||
--replace 'define PDFTOPS "pdftops"' 'define PDFTOPS "${lib.getBin poppler-utils}/bin/pdftops"'
|
||||
substituteInPlace src/app/seamlyme/mapplication.cpp \
|
||||
--replace 'diagrams.rcc' '../share/diagrams.rcc'
|
||||
'';
|
||||
|
||||
@@ -36,13 +36,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "vengi-tools";
|
||||
version = "0.0.34";
|
||||
version = "0.0.35";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vengi-voxel";
|
||||
repo = "vengi";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-a78Oiwln3vyzCyjNewbK1/05bnGcSixxzKIgz4oiDmA=";
|
||||
hash = "sha256-8rGnW+VtqNJYqUqQDp0yOVIQd7w+cq7PIpqqIQPhkbE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -28,15 +28,15 @@ let
|
||||
rev = "30ecb0b3fe694a582edfacc2a7425b6f01f9fec6";
|
||||
hash = "sha256-1FF658OhKg8a5kKX/7TVmsxZ9amimn4lB6bX9i7pnI4=";
|
||||
};
|
||||
in stdenv.mkDerivation rec {
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "organicmaps";
|
||||
version = "2025.01.26-9";
|
||||
version = "2025.02.17-3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "organicmaps";
|
||||
repo = "organicmaps";
|
||||
rev = "${version}-android";
|
||||
hash = "sha256-pzZmaOBo4aYywprxrJa3Rk9Uu3w+Q6XdVdcPmV0cSUs=";
|
||||
tag = "${finalAttrs.version}-android";
|
||||
hash = "sha256-9IDj+vkwSHsqX6Fe7siZV/RAxC242+4hDhXLjwc0tpg=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
@@ -45,7 +45,7 @@ in stdenv.mkDerivation rec {
|
||||
echo "exit 0" > tools/unix/check_cert.sh
|
||||
|
||||
# crude fix for https://github.com/organicmaps/organicmaps/issues/1862
|
||||
echo "echo ${lib.replaceStrings ["." "-"] ["" ""] version}" > tools/unix/version.sh
|
||||
echo "echo ${lib.replaceStrings ["." "-"] ["" ""] finalAttrs.version}" > tools/unix/version.sh
|
||||
|
||||
# TODO use system boost instead, see https://github.com/organicmaps/organicmaps/issues/5345
|
||||
patchShebangs 3party/boost/tools/build/src/engine/build.sh
|
||||
@@ -99,4 +99,4 @@ in stdenv.mkDerivation rec {
|
||||
platforms = platforms.all;
|
||||
mainProgram = "OMaps";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -791,7 +791,7 @@
|
||||
}
|
||||
},
|
||||
"ungoogled-chromium": {
|
||||
"version": "133.0.6943.126",
|
||||
"version": "133.0.6943.141",
|
||||
"deps": {
|
||||
"depot_tools": {
|
||||
"rev": "423f1e1914ab4aa7b2bdf804e216d4c097853ba2",
|
||||
@@ -802,16 +802,16 @@
|
||||
"hash": "sha256-T2dcISln9WCODoI/LsE2ldkRfFdMwVOmqqjQinAmZss="
|
||||
},
|
||||
"ungoogled-patches": {
|
||||
"rev": "133.0.6943.126-1",
|
||||
"hash": "sha256-bOtkMuGYu/iovgj0ZOecxQBmBvUhbF0px/M3Zp7ixKI="
|
||||
"rev": "133.0.6943.141-1",
|
||||
"hash": "sha256-FqpRx73axclW8bXmsRO845c3NB3ZBxE4fL4n7gU1P5A="
|
||||
},
|
||||
"npmHash": "sha256-oVoTruhxTymYiGkELd2Oa1wOfjGLtChQZozP4GzOO1A="
|
||||
},
|
||||
"DEPS": {
|
||||
"src": {
|
||||
"url": "https://chromium.googlesource.com/chromium/src.git",
|
||||
"rev": "cffa127ce7b6be72885391527c15b452056a2e81",
|
||||
"hash": "sha256-WOd3FsqaZlKEroWg763LQhQS5S1964vAoZWxstxGS3U=",
|
||||
"rev": "2a5d6da0d6165d7b107502095a937fe7704fcef6",
|
||||
"hash": "sha256-MJlCEe1WBh+7Pl3H4jnkMuSykTBSgh5x/ZPnNwYM4DE=",
|
||||
"recompress": true
|
||||
},
|
||||
"src/third_party/clang-format/script": {
|
||||
@@ -1576,8 +1576,8 @@
|
||||
},
|
||||
"src/v8": {
|
||||
"url": "https://chromium.googlesource.com/v8/v8.git",
|
||||
"rev": "4e04a09a1a0ef90841656e210e976bfc2a81ed57",
|
||||
"hash": "sha256-XbeU9L2IRHMP5pTzM3MPW1L2PMHViNRP/6u/HcBq96M="
|
||||
"rev": "93c6f1082c25ef7fdf60ee2e4a029d65808d9343",
|
||||
"hash": "sha256-OV1WncJaYvx1bB5najkKDNC2iMTU+m2vDAi9S/AjCyw="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,9 +184,9 @@ rec {
|
||||
mkTerraform = attrs: pluggable (generic attrs);
|
||||
|
||||
terraform_1 = mkTerraform {
|
||||
version = "1.10.5";
|
||||
hash = "sha256-6Y9r3VxL3DRvUaU6hLE+SdqjfIF+PAlXEYBPBc571QE=";
|
||||
vendorHash = "sha256-xyFguSjqUweZyoO97nkjLfJWS+eifNV7hpJUjh/6Z54=";
|
||||
version = "1.11.0";
|
||||
hash = "sha256-CPt1SxZZEvK2MXk45vvtKb2/NR/4yNWXBEUm6dvBXkU=";
|
||||
vendorHash = "sha256-xF9m67GE3MgeKqy7DGAf8RO1/MCZ5Uis1XNrajogQcI=";
|
||||
patches = [ ./provider-path-0_15.patch ];
|
||||
passthru = {
|
||||
inherit plugins;
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
{
|
||||
mkDerivation,
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitLab,
|
||||
cmake,
|
||||
extra-cmake-modules,
|
||||
pkg-config,
|
||||
qtquickcontrols2,
|
||||
wrapQtAppsHook,
|
||||
qtbase,
|
||||
qttools,
|
||||
qtmultimedia,
|
||||
qtlocation,
|
||||
qqc2-desktop-style,
|
||||
kirigami-addons,
|
||||
kirigami2,
|
||||
kirigami,
|
||||
kio,
|
||||
knotifications,
|
||||
kquickimageedit,
|
||||
@@ -18,33 +20,36 @@
|
||||
qxmpp,
|
||||
sonnet,
|
||||
gst_all_1,
|
||||
prison,
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kaidan";
|
||||
version = "0.10.1";
|
||||
version = "0.11.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "invent.kde.org";
|
||||
owner = "network";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-u+8uNBDfszH5YJokie4A2QhW04ANq/JTwkMeu5gY0to=";
|
||||
hash = "sha256-8pC4vINeKSYY+LlVgCXUtBq9UjraPdTikBOwLBLeQ3Y=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
extra-cmake-modules
|
||||
pkg-config
|
||||
wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = with gst_all_1; [
|
||||
qtquickcontrols2
|
||||
qtbase
|
||||
qttools
|
||||
qtmultimedia
|
||||
qtlocation
|
||||
qqc2-desktop-style
|
||||
kirigami-addons
|
||||
kirigami2
|
||||
kirigami
|
||||
kio
|
||||
knotifications
|
||||
kquickimageedit
|
||||
@@ -54,7 +59,8 @@ mkDerivation rec {
|
||||
gstreamer
|
||||
gst-plugins-bad
|
||||
gst-plugins-base
|
||||
gst-plugins-good
|
||||
(gst-plugins-good.override { qt6Support = true; })
|
||||
prison
|
||||
];
|
||||
postInstall = ''
|
||||
qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
|
||||
|
||||
@@ -13,7 +13,7 @@ buildGoModule {
|
||||
|
||||
modRoot = "wireguard-go-rs/libwg";
|
||||
proxyVendor = true;
|
||||
vendorHash = "sha256-j1lopBV/b1qSZPtEUVFyW0auLtaWSE5ss1a0pprcqOk=";
|
||||
vendorHash = "sha256-uzPtA9RBP5m8+18YBq+SEsgytDOWFCGPzucCzISSiLQ=";
|
||||
|
||||
# XXX: hack to make the ar archive go to the correct place
|
||||
# This is necessary because passing `-o ...` to `ldflags` does not work
|
||||
|
||||
@@ -29,18 +29,18 @@ let
|
||||
in
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "mullvad";
|
||||
version = "2025.2";
|
||||
version = "2025.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mullvad";
|
||||
repo = "mullvadvpn-app";
|
||||
tag = version;
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-5GcYiyvulsOFepguBcBec98juw22YTbT7yvZJUOJUwc=";
|
||||
hash = "sha256-IpGTqi0gSE2yXXou5fp+CryHfIKx0n3y/V4K2+ZO3k8=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-3xleQgDp33Ctce7jB9XRRwxmRHkzLJcg9mPLU4PExAM=";
|
||||
cargoHash = "sha256-EJ8yk11H1QB+7CGjJYY5BjBAFTDK4d02/DJOQTVGFho=";
|
||||
|
||||
checkFlags = [
|
||||
"--skip=version_check"
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
let
|
||||
pname = "mendeley";
|
||||
version = "2.130.0";
|
||||
version = "2.130.2";
|
||||
|
||||
executableName = "${pname}-reference-manager";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://static.mendeley.com/bin/desktop/mendeley-reference-manager-${version}-x86_64.AppImage";
|
||||
hash = "sha256-ldlMWitLe3pcA1ip+/NZuswKvPdpn9l8tVSCOOr4pbc=";
|
||||
hash = "sha256-HLUUoW+j0W9iEGu0Irbd/y7Vgj2rCGT7tDGMzmMh3qI=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
, libsecret
|
||||
, libgcrypt
|
||||
, libgpg-error
|
||||
, ninja
|
||||
|
||||
, util-linux
|
||||
, libselinux
|
||||
@@ -45,6 +46,8 @@
|
||||
, opencascade-occt_7_6
|
||||
, libngspice
|
||||
, valgrind
|
||||
, protobuf
|
||||
, nng
|
||||
|
||||
, stable
|
||||
, testing
|
||||
@@ -92,13 +95,17 @@ stdenv.mkDerivation rec {
|
||||
--replace "0000000000000000000000000000000000000000" "${src.rev}"
|
||||
'';
|
||||
|
||||
makeFlags = optionals (debug) [ "CFLAGS+=-Og" "CFLAGS+=-ggdb" ];
|
||||
preConfigure = optional (debug) ''
|
||||
export CFLAGS="''${CFLAGS:-} -Og -ggdb"
|
||||
export CXXFLAGS="''${CXXFLAGS:-} -Og -ggdb"
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DKICAD_USE_EGL=ON"
|
||||
"-DOCC_INCLUDE_DIR=${opencascade-occt}/include/opencascade"
|
||||
# https://gitlab.com/kicad/code/kicad/-/issues/17133
|
||||
"-DCMAKE_CTEST_ARGUMENTS='--exclude-regex;qa_spice'"
|
||||
"-DKICAD_USE_CMAKE_FINDPROTOBUF=OFF"
|
||||
]
|
||||
++ optional (stdenv.hostPlatform.system == "aarch64-linux")
|
||||
"-DCMAKE_CTEST_ARGUMENTS=--exclude-regex;'qa_spice|qa_cli'"
|
||||
@@ -127,6 +134,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
doxygen
|
||||
graphviz
|
||||
pkg-config
|
||||
@@ -173,6 +181,10 @@ stdenv.mkDerivation rec {
|
||||
unixODBC
|
||||
libdeflate
|
||||
opencascade-occt
|
||||
protobuf
|
||||
|
||||
# This would otherwise cause a linking requirement for mbedtls.
|
||||
(nng.override { mbedtlsSupport = false; })
|
||||
]
|
||||
++ optional (withScripting) wxPython
|
||||
++ optional (withNgspice) libngspice
|
||||
|
||||
@@ -229,9 +229,9 @@ stdenv.mkDerivation rec {
|
||||
"--prefix GIO_EXTRA_MODULES : ${dconf}/lib/gio/modules"
|
||||
# required to open a bug report link in firefox-wayland
|
||||
"--set-default MOZ_DBUS_REMOTE 1"
|
||||
"--set-default KICAD8_FOOTPRINT_DIR ${footprints}/share/kicad/footprints"
|
||||
"--set-default KICAD8_SYMBOL_DIR ${symbols}/share/kicad/symbols"
|
||||
"--set-default KICAD8_TEMPLATE_DIR ${template_dir}"
|
||||
"--set-default KICAD9_FOOTPRINT_DIR ${footprints}/share/kicad/footprints"
|
||||
"--set-default KICAD9_SYMBOL_DIR ${symbols}/share/kicad/symbols"
|
||||
"--set-default KICAD9_TEMPLATE_DIR ${template_dir}"
|
||||
]
|
||||
++ optionals (addons != [ ]) (
|
||||
let
|
||||
@@ -243,10 +243,10 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
};
|
||||
in
|
||||
[ "--set-default NIX_KICAD8_STOCK_DATA_PATH ${stockDataPath}" ]
|
||||
[ "--set-default NIX_KICAD9_STOCK_DATA_PATH ${stockDataPath}" ]
|
||||
)
|
||||
++ optionals (with3d) [
|
||||
"--set-default KICAD8_3DMODEL_DIR ${packages3d}/share/kicad/3dmodels"
|
||||
"--set-default KICAD9_3DMODEL_DIR ${packages3d}/share/kicad/3dmodels"
|
||||
]
|
||||
++ optionals (withNgspice) [ "--prefix LD_LIBRARY_PATH : ${libngspice}/lib" ]
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ index a74cdd9..790cc58 100644
|
||||
{
|
||||
wxString path;
|
||||
|
||||
+ if( wxGetEnv( wxT( "NIX_KICAD8_STOCK_DATA_PATH" ), &path ) ) {
|
||||
+ if( wxGetEnv( wxT( "NIX_KICAD9_STOCK_DATA_PATH" ), &path ) ) {
|
||||
+ return path;
|
||||
+ }
|
||||
+
|
||||
|
||||
@@ -3,67 +3,67 @@
|
||||
{
|
||||
"kicad" = {
|
||||
kicadVersion = {
|
||||
version = "8.0.8";
|
||||
version = "9.0.0";
|
||||
src = {
|
||||
rev = "069af84a1114b28d967dbdb15ac21ef39fc5273f";
|
||||
sha256 = "1672aii6902m1njgrh9hsfywcz0m7ryjsc2mkngr3frg6pg4yqp2";
|
||||
rev = "ccafeabf1503a778a283eabe40fa0760aa5bc83c";
|
||||
sha256 = "0rr4k5hx4kjbfi4q3jdhamv1gjb0b1nwmmrrdg7ig18335bpw14s";
|
||||
};
|
||||
};
|
||||
libVersion = {
|
||||
version = "8.0.8";
|
||||
version = "9.0.0";
|
||||
libSources = {
|
||||
symbols.rev = "b408fec68c5bee64b76d4e28829870f5932f7748";
|
||||
symbols.sha256 = "090pvx28sk0nkqzdm8xxlshqgfrmp7y7r1bblv4sz0k1iab4wd9l";
|
||||
templates.rev = "4a7825ea3365318e9d943e855b45d0da0708b287";
|
||||
templates.sha256 = "1vpfh7ihi00c2cjla24a2dm4cwlrklivbig5zihrylj3185p01cr";
|
||||
footprints.rev = "3cb185423ec819cc0808cef440c1567fe45bb3f5";
|
||||
footprints.sha256 = "1z5bnvavjaxy52ydlp6dbqbr7dxiddhnmn56g0l58iva1xsr9gvj";
|
||||
packages3d.rev = "f0a2e3b29f57d39f4c8a5e4d622e2eda90719385";
|
||||
packages3d.sha256 = "1cqj6lnqj0qa4j203wrny8bsxp2zsfgpf96xy7nq4i968la6b88z";
|
||||
symbols.rev = "e1c3371228f97b36c6fd61b66d056184930f078e";
|
||||
symbols.sha256 = "0l8da2ix917jlsj6v5zclc1cb5pvjaxwmys0gjdv55ic31hhfyyw";
|
||||
templates.rev = "3ed4538b0f965d821df63a5fffc4441e723cfe7f";
|
||||
templates.sha256 = "0zs29zn8qjgxv0w1vyr8yxmj02m8752zagn4vcraqgik46dwg2id";
|
||||
footprints.rev = "ef91963f57028aa095f2d0c4239ba994ea822f73";
|
||||
footprints.sha256 = "16zslgvjg4swgkkvnd9fmiks3wzg63364d03hixiyzcpjlgk2bbk";
|
||||
packages3d.rev = "b40831fd7ea2ca8f9c7282143dbb7d2f5015cd69";
|
||||
packages3d.sha256 = "0bg54lg1iw01gw06ajg34y7x4y36wm6ls3jnpjy13i18d4ik77g4";
|
||||
};
|
||||
};
|
||||
};
|
||||
"kicad-testing" = {
|
||||
kicadVersion = {
|
||||
version = "8.0-2024-02-23";
|
||||
version = "9.0-2025-02-21";
|
||||
src = {
|
||||
rev = "14d71c8ca6b48d2eb956bb069acf05a37b1b2652";
|
||||
sha256 = "0xqd0xbpnvsvba75526nwgzr8l2cfxy99sjmg13sjxfx7rq16kqi";
|
||||
rev = "c4c32aa7bbadd3862fb720457b71e7a19420604c";
|
||||
sha256 = "01zbvg6n8kajilj3q1sp0zpaqz94bq28wrxjax1968wvwv05g0dp";
|
||||
};
|
||||
};
|
||||
libVersion = {
|
||||
version = "8.0-2024-02-23";
|
||||
version = "9.0-2025-02-21";
|
||||
libSources = {
|
||||
symbols.rev = "e228d4e8b295364e90e36c57f4023d8285ba88cd";
|
||||
symbols.sha256 = "049h2a7yn6ks8sybppixa872dbvyd0rwf9r6nixvdg6d13fl6rwf";
|
||||
templates.rev = "2e00c233b67e35323f90d04c190bf70237a252f2";
|
||||
templates.sha256 = "0m9bggz3cm27kqpjjwxy19mqzk0c69bywcjkqcni7kafr21c6k4z";
|
||||
footprints.rev = "6e5329a6d4aaa81290e23af3eba88f505c2f61b0";
|
||||
footprints.sha256 = "0ypjlbmzmcl3pha3q2361va70c988b1drxy8320gm66jkzfc21a1";
|
||||
packages3d.rev = "d1e521228d9f5888836b1a6a35fb05fb925456fa";
|
||||
packages3d.sha256 = "0lcy1av7ixg1f7arflk50jllpc1749sfvf3h62hkxsz97wkr97xj";
|
||||
symbols.rev = "e1c3371228f97b36c6fd61b66d056184930f078e";
|
||||
symbols.sha256 = "0l8da2ix917jlsj6v5zclc1cb5pvjaxwmys0gjdv55ic31hhfyyw";
|
||||
templates.rev = "3ed4538b0f965d821df63a5fffc4441e723cfe7f";
|
||||
templates.sha256 = "0zs29zn8qjgxv0w1vyr8yxmj02m8752zagn4vcraqgik46dwg2id";
|
||||
footprints.rev = "ef91963f57028aa095f2d0c4239ba994ea822f73";
|
||||
footprints.sha256 = "16zslgvjg4swgkkvnd9fmiks3wzg63364d03hixiyzcpjlgk2bbk";
|
||||
packages3d.rev = "b40831fd7ea2ca8f9c7282143dbb7d2f5015cd69";
|
||||
packages3d.sha256 = "0bg54lg1iw01gw06ajg34y7x4y36wm6ls3jnpjy13i18d4ik77g4";
|
||||
};
|
||||
};
|
||||
};
|
||||
"kicad-unstable" = {
|
||||
kicadVersion = {
|
||||
version = "2024-02-23";
|
||||
version = "2025-02-21";
|
||||
src = {
|
||||
rev = "b7b64d959f37f00bb0d14b007c3b3908196e1024";
|
||||
sha256 = "1gl7mjqpmqq4m55z6crwb77983g00gi2161ichsc7hsfhs4c8grh";
|
||||
rev = "878cf768d6552131494aa792dc20e6ccf67baf75";
|
||||
sha256 = "0ky0a7y6gf409y8bwpngiirqin4ivbcjnk8gjdj1a6w79x559sr8";
|
||||
};
|
||||
};
|
||||
libVersion = {
|
||||
version = "2024-02-23";
|
||||
version = "2025-02-21";
|
||||
libSources = {
|
||||
symbols.rev = "8b0c343d8694fe0a968e5c4af69fd161bacf7da1";
|
||||
symbols.sha256 = "049h2a7yn6ks8sybppixa872dbvyd0rwf9r6nixvdg6d13fl6rwf";
|
||||
templates.rev = "0a6c4f798a68a5c639d54b4d3093460ab9267816";
|
||||
templates.sha256 = "0m9bggz3cm27kqpjjwxy19mqzk0c69bywcjkqcni7kafr21c6k4z";
|
||||
footprints.rev = "ded6b053460faae5783c538a38e91e2b4bddcf2e";
|
||||
footprints.sha256 = "035bf37n4vrihaj4zfdncisdx9fly1vya7lhkxhlsbv5blpi4a5y";
|
||||
packages3d.rev = "984667325076d4e50dab14e755aeacf97f42194c";
|
||||
packages3d.sha256 = "0lkaxv02h4sxrnm8zr17wl9d07mazlisad78r35gry741i362cdg";
|
||||
symbols.rev = "da86acd48809fd61876223c8bf0e4e7793c52e9a";
|
||||
symbols.sha256 = "1sdpg58wbyyrghjd0jqw5iw2094mjy2v9jmwn5zrj4jm6f51g1kd";
|
||||
templates.rev = "3ed4538b0f965d821df63a5fffc4441e723cfe7f";
|
||||
templates.sha256 = "0zs29zn8qjgxv0w1vyr8yxmj02m8752zagn4vcraqgik46dwg2id";
|
||||
footprints.rev = "e515f1c3213317d436e492c8c06620ef4caca84e";
|
||||
footprints.sha256 = "16zslgvjg4swgkkvnd9fmiks3wzg63364d03hixiyzcpjlgk2bbk";
|
||||
packages3d.rev = "d5db5cea003fe2b4b1c9b145f5fcbd5fdb48f8ca";
|
||||
packages3d.sha256 = "0bg54lg1iw01gw06ajg34y7x4y36wm6ls3jnpjy13i18d4ik77g4";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
perl,
|
||||
perlPackages,
|
||||
pkg-config,
|
||||
poppler_utils,
|
||||
poppler-utils,
|
||||
python3Packages,
|
||||
qtbase,
|
||||
qttools,
|
||||
@@ -57,7 +57,7 @@ let
|
||||
groff = groff;
|
||||
gunzip = gzip;
|
||||
iconv = libiconv;
|
||||
pdftotext = poppler_utils;
|
||||
pdftotext = poppler-utils;
|
||||
ps2ascii = ghostscript;
|
||||
sed = gnused;
|
||||
tar = gnutar;
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "go2tv" + lib.optionalString (!withGui) "-lite";
|
||||
version = "1.18.0";
|
||||
version = "1.18.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "alexballas";
|
||||
repo = "go2tv";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-WAJGnHKfNOqignMQ7v8H+g3x+dRrM3Jzfq32ClB1raY=";
|
||||
hash = "sha256-Ic4Kcc5Vx1QXFt28o5ItGwcvsKCB2HdZvILPRoEKbgI=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-xp/zdkNV4z3rQMV0b/7TD+ApiaDWxR/aqOKvakGKAcI=";
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
}:
|
||||
buildLua (finalAttrs: {
|
||||
pname = "modernz";
|
||||
version = "0.2.5";
|
||||
version = "0.2.6";
|
||||
|
||||
scriptPath = "modernz.lua";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Samillion";
|
||||
repo = "ModernZ";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-7qzN9GiZbqzQMY2a0+CgXWirv7FUwIQbmH7ZzknlHlU=";
|
||||
hash = "sha256-Ni3Rd7omNv7GGS/fF9JBERpwi1CwlFg/ju3OIQmZNmQ=";
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
|
||||
@@ -110,6 +110,16 @@ rec {
|
||||
|
||||
runAsRoot = ''
|
||||
mkdir -p /data
|
||||
cat >/bin/healthcheck <<-'EOF'
|
||||
set -x
|
||||
probe="$(/bin/redis-cli ping)"
|
||||
echo "$probe"
|
||||
if [ "$probe" = 'PONG' ]; then
|
||||
exit 0
|
||||
fi
|
||||
exit 1
|
||||
EOF
|
||||
chmod +x /bin/healthcheck
|
||||
'';
|
||||
|
||||
config = {
|
||||
@@ -118,6 +128,15 @@ rec {
|
||||
Volumes = {
|
||||
"/data" = { };
|
||||
};
|
||||
Healthcheck = {
|
||||
Test = [
|
||||
"CMD-SHELL"
|
||||
"/bin/healthcheck"
|
||||
];
|
||||
Interval = 30000000000;
|
||||
Timeout = 10000000000;
|
||||
Retries = 3;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -34,6 +34,10 @@
|
||||
] ++ orig.args or ["-e" ../../stdenv/generic/source-stdenv.sh (orig.builder or ../../stdenv/generic/default-builder.sh)];
|
||||
});
|
||||
|
||||
# See https://nixos.org/manual/nixpkgs/unstable/#tester-testBuildFailurePrime
|
||||
# or doc/build-helpers/testers.chapter.md
|
||||
testBuildFailure' = callPackage ./testBuildFailurePrime { };
|
||||
|
||||
# See https://nixos.org/manual/nixpkgs/unstable/#tester-testEqualDerivation
|
||||
# or doc/build-helpers/testers.chapter.md
|
||||
testEqualDerivation = callPackage ./test-equal-derivation.nix { };
|
||||
|
||||
@@ -220,6 +220,10 @@ lib.recurseIntoAttrs {
|
||||
sideEffectStructuredAttrs = overrideStructuredAttrs true sideEffects;
|
||||
};
|
||||
|
||||
testBuildFailure' = lib.recurseIntoAttrs (
|
||||
pkgs.callPackages ../testBuildFailurePrime/tests.nix { inherit overrideStructuredAttrs; }
|
||||
);
|
||||
|
||||
testEqualContents = lib.recurseIntoAttrs {
|
||||
equalDir = testers.testEqualContents {
|
||||
assertion = "The same directory contents at different paths are recognized as equal";
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
# shellcheck shell=bash
|
||||
|
||||
set -eu
|
||||
|
||||
declare -ag preScriptHooks=(testBuilderExitCode)
|
||||
# shellcheck disable=SC2154
|
||||
((${#expectedBuilderLogEntries[@]})) && preScriptHooks+=(testBuilderLogEntries)
|
||||
|
||||
testBuilderExitCode() {
|
||||
nixLog "checking original builder exit code"
|
||||
local -ir builderExitCode=$(<"${failed:?}/testBuildFailure.exit")
|
||||
# shellcheck disable=SC2154
|
||||
if ((expectedBuilderExitCode == builderExitCode)); then
|
||||
nixLog "original builder exit code matches expected value of $expectedBuilderExitCode"
|
||||
return 0
|
||||
else
|
||||
nixErrorLog "original builder produced exit code $builderExitCode but was expected to produce $expectedBuilderExitCode"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
testBuilderLogEntries() {
|
||||
nixLog "checking original builder log"
|
||||
local -r builderLogEntries="$(<"${failed:?}/testBuildFailure.log")"
|
||||
local -i shouldExit=0
|
||||
local expectedBuilderLogEntry
|
||||
for expectedBuilderLogEntry in "${expectedBuilderLogEntries[@]}"; do
|
||||
if [[ ${builderLogEntries} == *"$expectedBuilderLogEntry"* ]]; then
|
||||
nixLog "original builder log contains ${expectedBuilderLogEntry@Q}"
|
||||
else
|
||||
nixErrorLog "original builder log does not contain ${expectedBuilderLogEntry@Q}"
|
||||
shouldExit=1
|
||||
fi
|
||||
done
|
||||
return $shouldExit
|
||||
}
|
||||
|
||||
scriptPhase() {
|
||||
runHook preScript
|
||||
|
||||
runHook script
|
||||
|
||||
runHook postScript
|
||||
}
|
||||
|
||||
runHook scriptPhase
|
||||
touch "${out:?}"
|
||||
37
pkgs/build-support/testers/testBuildFailurePrime/default.nix
Normal file
37
pkgs/build-support/testers/testBuildFailurePrime/default.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
testers,
|
||||
}:
|
||||
# See https://nixos.org/manual/nixpkgs/unstable/#tester-testBuildFailurePrime
|
||||
# or doc/build-helpers/testers.chapter.md
|
||||
lib.makeOverridable (
|
||||
{
|
||||
drv,
|
||||
name ? "testBuildFailure-${drv.name}",
|
||||
expectedBuilderExitCode ? 1,
|
||||
expectedBuilderLogEntries ? [ ],
|
||||
script ? "",
|
||||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
|
||||
inherit name;
|
||||
|
||||
nativeBuildInputs = [ finalAttrs.failed ];
|
||||
|
||||
failed = testers.testBuildFailure drv;
|
||||
|
||||
inherit expectedBuilderExitCode expectedBuilderLogEntries;
|
||||
|
||||
inherit script;
|
||||
|
||||
buildCommandPath = ./build-command.sh;
|
||||
|
||||
meta = {
|
||||
description = "A wrapper around testers.testBuildFailure to simplify common use cases";
|
||||
maintainers = [ lib.maintainers.connorbaker ];
|
||||
};
|
||||
})
|
||||
)
|
||||
149
pkgs/build-support/testers/testBuildFailurePrime/tests.nix
Normal file
149
pkgs/build-support/testers/testBuildFailurePrime/tests.nix
Normal file
@@ -0,0 +1,149 @@
|
||||
{
|
||||
emptyDirectory,
|
||||
hello,
|
||||
lib,
|
||||
overrideStructuredAttrs,
|
||||
runCommand,
|
||||
stdenvNoCC,
|
||||
testers,
|
||||
}:
|
||||
let
|
||||
inherit (lib.attrsets) recurseIntoAttrs;
|
||||
final = {
|
||||
# NOTE: This example is used in the docs.
|
||||
# See https://nixos.org/manual/nixpkgs/unstable/#tester-testBuildFailurePrime
|
||||
# or doc/build-helpers/testers.chapter.md
|
||||
doc-example = testers.testBuildFailure' {
|
||||
drv = runCommand "doc-example" { } ''
|
||||
echo ok-ish >"$out"
|
||||
echo failing though
|
||||
exit 3
|
||||
'';
|
||||
expectedBuilderExitCode = 3;
|
||||
expectedBuilderLogEntries = [ "failing though" ];
|
||||
script = ''
|
||||
grep --silent -F 'ok-ish' "$failed/result"
|
||||
'';
|
||||
};
|
||||
|
||||
happy = testers.testBuildFailure' {
|
||||
drv = runCommand "happy" { } ''
|
||||
echo ok-ish >$out
|
||||
|
||||
echo failing though
|
||||
echo also stderr 1>&2
|
||||
echo 'line\nwith-\bbackslashes'
|
||||
printf "incomplete line - no newline"
|
||||
|
||||
exit 3
|
||||
'';
|
||||
expectedBuilderExitCode = 3;
|
||||
expectedBuilderLogEntries = [
|
||||
"failing though"
|
||||
"also stderr"
|
||||
''line\nwith-\bbackslashes''
|
||||
"incomplete line - no newline"
|
||||
];
|
||||
script = ''
|
||||
grep --silent -F 'ok-ish' "$failed/result"
|
||||
'';
|
||||
};
|
||||
|
||||
happyStructuredAttrs = overrideStructuredAttrs true final.happy;
|
||||
|
||||
helloDoesNotFail = testers.testBuildFailure' {
|
||||
drv = testers.testBuildFailure hello;
|
||||
expectedBuilderLogEntries = [
|
||||
"testBuildFailure: The builder did not fail, but a failure was expected"
|
||||
];
|
||||
};
|
||||
|
||||
multiOutput = testers.testBuildFailure' {
|
||||
drv =
|
||||
runCommand "multiOutput"
|
||||
{
|
||||
# dev will be the default output
|
||||
outputs = [
|
||||
"dev"
|
||||
"doc"
|
||||
"out"
|
||||
];
|
||||
}
|
||||
''
|
||||
echo i am failing
|
||||
exit 1
|
||||
'';
|
||||
expectedBuilderLogEntries = [
|
||||
"i am failing"
|
||||
];
|
||||
script = ''
|
||||
# Checking our note that dev is the default output
|
||||
echo $failed/_ | grep -- '-dev/_' >/dev/null
|
||||
echo 'All good.'
|
||||
'';
|
||||
};
|
||||
|
||||
multiOutputStructuredAttrs = overrideStructuredAttrs true final.multiOutput;
|
||||
|
||||
sideEffects = testers.testBuildFailure' {
|
||||
drv = stdenvNoCC.mkDerivation {
|
||||
name = "fail-with-side-effects";
|
||||
src = emptyDirectory;
|
||||
|
||||
postHook = ''
|
||||
echo touching side-effect...
|
||||
# Assert that the side-effect doesn't exist yet...
|
||||
# We're checking that this hook isn't run by expect-failure.sh
|
||||
if [[ -e side-effect ]]; then
|
||||
echo "side-effect already exists"
|
||||
exit 1
|
||||
fi
|
||||
touch side-effect
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
echo i am failing
|
||||
exit 1
|
||||
'';
|
||||
};
|
||||
expectedBuilderLogEntries = [
|
||||
"touching side-effect..."
|
||||
"i am failing"
|
||||
];
|
||||
script = ''
|
||||
[[ ! -e side-effect ]]
|
||||
'';
|
||||
};
|
||||
|
||||
sideEffectsStructuredAttrs = overrideStructuredAttrs true final.sideEffects;
|
||||
|
||||
exitCodeNegativeTest = testers.testBuildFailure' {
|
||||
drv = testers.testBuildFailure' {
|
||||
drv = runCommand "exit-code" { } "exit 3";
|
||||
# Default expected exit code is 1
|
||||
};
|
||||
expectedBuilderLogEntries = [
|
||||
"ERROR: testBuilderExitCode: original builder produced exit code 3 but was expected to produce 1"
|
||||
];
|
||||
};
|
||||
|
||||
exitCodeNegativeTestStructuredAttrs = overrideStructuredAttrs true final.exitCodeNegativeTest;
|
||||
|
||||
logNegativeTest = testers.testBuildFailure' {
|
||||
drv = testers.testBuildFailure' {
|
||||
drv = runCommand "exit-code" { } ''
|
||||
nixLog "apples"
|
||||
exit 3
|
||||
'';
|
||||
expectedBuilderExitCode = 3;
|
||||
expectedBuilderLogEntries = [ "bees" ];
|
||||
};
|
||||
expectedBuilderLogEntries = [
|
||||
"ERROR: testBuilderLogEntries: original builder log does not contain 'bees'"
|
||||
];
|
||||
};
|
||||
|
||||
logNegativeTestStructuredAttrs = overrideStructuredAttrs true final.logNegativeTest;
|
||||
};
|
||||
in
|
||||
recurseIntoAttrs final
|
||||
84
pkgs/by-name/ai/air-formatter/cargo-lock.patch
Normal file
84
pkgs/by-name/ai/air-formatter/cargo-lock.patch
Normal file
@@ -0,0 +1,84 @@
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index df5a6e9..0cf72e2 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -382,7 +382,7 @@ dependencies = [
|
||||
"anyhow",
|
||||
"biome_rowan",
|
||||
"rustc-hash",
|
||||
- "tower-lsp 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "tower-lsp",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1369,7 +1369,7 @@ dependencies = [
|
||||
"time",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
- "tower-lsp 0.20.0 (git+https://github.com/lionel-/tower-lsp?branch=bugfix%2Fpatches)",
|
||||
+ "tower-lsp",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
"tree-sitter",
|
||||
@@ -1406,7 +1406,7 @@ dependencies = [
|
||||
"serde_json",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
- "tower-lsp 0.20.0 (git+https://github.com/lionel-/tower-lsp?branch=bugfix%2Fpatches)",
|
||||
+ "tower-lsp",
|
||||
"tracing",
|
||||
"url",
|
||||
]
|
||||
@@ -2311,29 +2311,6 @@ version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
|
||||
|
||||
-[[package]]
|
||||
-name = "tower-lsp"
|
||||
-version = "0.20.0"
|
||||
-source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "d4ba052b54a6627628d9b3c34c176e7eda8359b7da9acd497b9f20998d118508"
|
||||
-dependencies = [
|
||||
- "async-trait",
|
||||
- "auto_impl",
|
||||
- "bytes",
|
||||
- "dashmap 5.5.3",
|
||||
- "futures",
|
||||
- "httparse",
|
||||
- "lsp-types",
|
||||
- "memchr",
|
||||
- "serde",
|
||||
- "serde_json",
|
||||
- "tokio",
|
||||
- "tokio-util",
|
||||
- "tower",
|
||||
- "tower-lsp-macros 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "tracing",
|
||||
-]
|
||||
-
|
||||
[[package]]
|
||||
name = "tower-lsp"
|
||||
version = "0.20.0"
|
||||
@@ -2352,21 +2329,10 @@ dependencies = [
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"tower",
|
||||
- "tower-lsp-macros 0.9.0 (git+https://github.com/lionel-/tower-lsp?branch=bugfix%2Fpatches)",
|
||||
+ "tower-lsp-macros",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
-[[package]]
|
||||
-name = "tower-lsp-macros"
|
||||
-version = "0.9.0"
|
||||
-source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "84fd902d4e0b9a4b27f2f440108dc034e1758628a9b702f8ec61ad66355422fa"
|
||||
-dependencies = [
|
||||
- "proc-macro2",
|
||||
- "quote",
|
||||
- "syn 2.0.90",
|
||||
-]
|
||||
-
|
||||
[[package]]
|
||||
name = "tower-lsp-macros"
|
||||
version = "0.9.0"
|
||||
33
pkgs/by-name/ai/air-formatter/package.nix
Normal file
33
pkgs/by-name/ai/air-formatter/package.nix
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
lib,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
rustPlatform.buildRustPackage (attrs: {
|
||||
pname = "air-formatter";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "posit-dev";
|
||||
repo = "air";
|
||||
rev = attrs.version;
|
||||
hash = "sha256-BUbOG4D5UD+Z8Cpr4qodUrM3FFcMwjBd4M/YdPZPtpM=";
|
||||
};
|
||||
|
||||
# Remove duplicate entries from cargo lock
|
||||
cargoPatches = [ ./cargo-lock.patch ];
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-EnvhqAZK76O6g99OgLruQDBUe9m9bn5ier3bgHI/f+A=";
|
||||
|
||||
useNextest = true;
|
||||
|
||||
meta = {
|
||||
description = "An extremely fast R code formatter";
|
||||
homepage = "https://posit-dev.github.io/air";
|
||||
changelog = "https://github.com/posit-dev/air/blob/" + attrs.version + "/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.kupac ];
|
||||
mainProgram = "air";
|
||||
};
|
||||
})
|
||||
@@ -3,20 +3,19 @@
|
||||
python3,
|
||||
fetchFromGitHub,
|
||||
testers,
|
||||
deltachat-cursed,
|
||||
arcanechat-tui,
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "deltachat-cursed";
|
||||
version = "0.10.0";
|
||||
|
||||
pname = "arcanechat-tui";
|
||||
version = "0.11.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "adbenitez";
|
||||
repo = "deltachat-cursed";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-KCPIZf/8Acp9syFN1IHbf8hQrjk0yzniff+dVSSM/Ro=";
|
||||
owner = "ArcaneChat";
|
||||
repo = "arcanechat-tui";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-ARk0WkpJ2VhIdOHQzYmmsuherABNgqwjwnPWk92y9yA=";
|
||||
};
|
||||
|
||||
build-system = with python3.pythonOnBuildForHost.pkgs; [
|
||||
@@ -35,18 +34,18 @@ python3.pkgs.buildPythonApplication rec {
|
||||
|
||||
passthru.tests = {
|
||||
version = testers.testVersion rec {
|
||||
package = deltachat-cursed;
|
||||
package = arcanechat-tui;
|
||||
command = ''
|
||||
HOME="$TEMP" ${lib.getExe package} --version
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Lightweight Delta Chat client";
|
||||
homepage = "https://github.com/adbenitez/deltachat-cursed";
|
||||
license = licenses.gpl3Plus;
|
||||
mainProgram = "curseddelta";
|
||||
maintainers = with maintainers; [ dotlambda ];
|
||||
homepage = "https://github.com/ArcaneChat/arcanechat-tui";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
mainProgram = "arcanechat-tui";
|
||||
maintainers = with lib.maintainers; [ dotlambda ];
|
||||
};
|
||||
}
|
||||
62
pkgs/by-name/ar/archtika/package.nix
Normal file
62
pkgs/by-name/ar/archtika/package.nix
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildNpmPackage,
|
||||
importNpmLock,
|
||||
symlinkJoin,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
let
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "archtika";
|
||||
repo = "archtika";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-ba9da7LqCE/e2lhRVHD7GOhwOj1fNTBbN/pARPMzIg4=";
|
||||
};
|
||||
|
||||
web = buildNpmPackage {
|
||||
name = "web-app";
|
||||
src = "${src}/web-app";
|
||||
npmDepsHash = "sha256-RTyo7K/Hr1hBGtcBKynrziUInl91JqZl84NkJg16ufA=";
|
||||
npmFlags = [ "--legacy-peer-deps" ];
|
||||
installPhase = ''
|
||||
mkdir -p $out/web-app
|
||||
cp package.json $out/web-app
|
||||
cp -r node_modules $out/web-app
|
||||
cp -r build/* $out/web-app
|
||||
cp -r template-styles $out/web-app
|
||||
'';
|
||||
};
|
||||
|
||||
api = stdenv.mkDerivation {
|
||||
name = "api";
|
||||
src = "${src}/rest-api";
|
||||
installPhase = ''
|
||||
mkdir -p $out/rest-api/db/migrations
|
||||
cp -r db/migrations/* $out/rest-api/db/migrations
|
||||
'';
|
||||
};
|
||||
in
|
||||
symlinkJoin {
|
||||
pname = "archtika";
|
||||
inherit version;
|
||||
|
||||
paths = [
|
||||
web
|
||||
api
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Modern, performant and lightweight CMS";
|
||||
homepage = "https://archtika.com";
|
||||
license = lib.licenses.gpl3;
|
||||
maintainers = [ lib.maintainers.thiloho ];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
}
|
||||
@@ -18,7 +18,7 @@
|
||||
pantheon,
|
||||
pkg-config,
|
||||
poppler,
|
||||
poppler_utils,
|
||||
poppler-utils,
|
||||
python3,
|
||||
sqlite,
|
||||
unar,
|
||||
@@ -75,7 +75,7 @@ stdenv.mkDerivation rec {
|
||||
lib.makeBinPath [
|
||||
unzip
|
||||
unar
|
||||
poppler_utils
|
||||
poppler-utils
|
||||
html2text
|
||||
coreutils
|
||||
curl
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
piper-tts,
|
||||
pkg-config,
|
||||
podofo,
|
||||
poppler_utils,
|
||||
poppler-utils,
|
||||
python3Packages,
|
||||
qt6,
|
||||
speechd-minimal,
|
||||
@@ -90,7 +90,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
libusb1
|
||||
piper-tts
|
||||
podofo
|
||||
poppler_utils
|
||||
poppler-utils
|
||||
qt6.qtbase
|
||||
qt6.qtwayland
|
||||
sqlite
|
||||
@@ -149,8 +149,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
runHook preInstall
|
||||
|
||||
export HOME=$TMPDIR/fakehome
|
||||
export POPPLER_INC_DIR=${poppler_utils.dev}/include/poppler
|
||||
export POPPLER_LIB_DIR=${poppler_utils.out}/lib
|
||||
export POPPLER_INC_DIR=${poppler-utils.dev}/include/poppler
|
||||
export POPPLER_LIB_DIR=${poppler-utils.out}/lib
|
||||
export MAGICK_INC=${imagemagick.dev}/include/ImageMagick
|
||||
export MAGICK_LIB=${imagemagick.out}/lib
|
||||
export FC_INC_DIR=${fontconfig.dev}/include/fontconfig
|
||||
@@ -187,7 +187,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
preFixup =
|
||||
let
|
||||
popplerArgs = "--prefix PATH : ${poppler_utils.out}/bin";
|
||||
popplerArgs = "--prefix PATH : ${poppler-utils.out}/bin";
|
||||
in
|
||||
''
|
||||
for program in $out/bin/*; do
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
writeTextFile,
|
||||
writeScript,
|
||||
fetchurl,
|
||||
unzip,
|
||||
autoconf,
|
||||
@@ -61,6 +63,43 @@ let
|
||||
cairo
|
||||
atk
|
||||
];
|
||||
|
||||
convertSpec = writeTextFile {
|
||||
name = "convert-spec.awk";
|
||||
checkPhase = "awk -f $target < /dev/null";
|
||||
text = ''
|
||||
$1 == "%" phase { inPhase = 1; next }
|
||||
inPhase && /^%/ { exit }
|
||||
|
||||
inPhase {
|
||||
gsub("[$]{RPM_BUILD_DIR}", "$sourceRoot");
|
||||
gsub("[$]{RPM_BUILD_ROOT}", "");
|
||||
gsub("%{nobuild}", "0");
|
||||
gsub("%{_builddir}", "$sourceRoot");
|
||||
gsub("%{_prefix}", "$out");
|
||||
gsub("%{_libsarch}", "libs64/${system}");
|
||||
gsub("%{_libdir}", "$out/lib");
|
||||
gsub("%{locallibs}", "$out/lib");
|
||||
gsub("%{_bindir}", "$out/bin");
|
||||
gsub("%{_includedir}", "$out/include");
|
||||
gsub("%{_cflags}", "");
|
||||
gsub("%{_machine_type}", "MACHINETYPE=${stdenv.hostPlatform.parsed.cpu.name}");
|
||||
gsub("%{common_dir}", "cnrdrvcups-common-${version}");
|
||||
gsub("%{driver_dir}", "cnrdrvcups-lb-${version}");
|
||||
gsub("%{utility_dir}", "cnrdrvcups-utility-${version}");
|
||||
gsub("%{b_lib_dir}", "$sourceRoot/lib");
|
||||
gsub("%{b_include_dir}", "$sourceRoot/include");
|
||||
gsub("-m 4755", "-m 755"); # no setuid
|
||||
|
||||
if (/%/) {
|
||||
print "error: variable not replaced:", $0 > "/dev/stderr"
|
||||
print "exit 1"
|
||||
exit 1
|
||||
}
|
||||
print
|
||||
}
|
||||
'';
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "canon-cups-ufr2";
|
||||
@@ -71,28 +110,32 @@ stdenv.mkDerivation rec {
|
||||
dontPatchELF = true;
|
||||
|
||||
postUnpack = ''
|
||||
export sourceRoot=$PWD/$sourceRoot
|
||||
(
|
||||
cd $sourceRoot
|
||||
tar -xf Sources/cnrdrvcups-lb-${version}-1.${suffix2}.tar.xz
|
||||
sed -i -e "s@_prefix=/usr@_prefix=$out@" cnrdrvcups-common-${version}/allgen.sh
|
||||
sed -i -e "s@_libdir=/usr/lib@_libdir=$out/lib@" cnrdrvcups-common-${version}/allgen.sh
|
||||
sed -i -e "s@_bindir=/usr/bin@_bindir=$out/bin@" cnrdrvcups-common-${version}/allgen.sh
|
||||
sed -i -e "s@/usr@$out@" cnrdrvcups-common-${version}/{{backend,rasterfilter}/Makefile.am,rasterfilter/cnrasterproc.h}
|
||||
sed -i -e "s@etc/cngplp@$out/etc/cngplp@" cnrdrvcups-common-${version}/cngplp/Makefile.am
|
||||
sed -i -e "s@usr/share/cngplp@$out/usr/share/cngplp@" cnrdrvcups-common-${version}/cngplp/src/Makefile.am
|
||||
patchShebangs cnrdrvcups-common-${version}
|
||||
|
||||
sed -i -e "s@_prefix=/usr@_prefix=$out@" cnrdrvcups-lb-${version}/allgen.sh
|
||||
sed -i -e "s@_libdir=/usr/lib@_libdir=$out/lib@" cnrdrvcups-lb-${version}/allgen.sh
|
||||
sed -i -e "s@_bindir=/usr/bin@_bindir=$out/bin@" cnrdrvcups-lb-${version}/allgen.sh
|
||||
sed -i -e '/^cd \.\.\/cngplp/,/^cd files/{/^cd files/!{d}}' cnrdrvcups-lb-${version}/allgen.sh
|
||||
sed -i -e "s@cd \.\./pdftocpca@cd pdftocpca@" cnrdrvcups-lb-${version}/allgen.sh
|
||||
sed -i -e "s@/usr@$out@" cnrdrvcups-lb-${version}/pdftocpca/Makefile.am
|
||||
sed -i "/CNGPLPDIR/d" cnrdrvcups-lb-${version}/Makefile
|
||||
patchShebangs cnrdrvcups-lb-${version}
|
||||
)
|
||||
'';
|
||||
|
||||
patches = [
|
||||
./replace_incorrect_int_with_char.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace $(find cnrdrvcups-lb-${version}/cngplp -name Makefile.am) \
|
||||
--replace-quiet /usr/include/libxml2/ ${libxml2.dev}/include/libxml2/
|
||||
|
||||
substituteInPlace \
|
||||
cnrdrvcups-common-${version}/{{backend,cngplp/src,rasterfilter}/Makefile.am,rasterfilter/cnrasterproc.h} \
|
||||
cnrdrvcups-lb-${version}/{cngplp/files,pdftocpca}/Makefile.am \
|
||||
--replace-fail /usr "$out"
|
||||
|
||||
substituteInPlace cnrdrvcups-common-${version}/cngplp/Makefile.am \
|
||||
--replace-fail etc/cngplp "$out/etc/cngplp"
|
||||
|
||||
patchShebangs cnrdrvcups-common-${version} cnrdrvcups-lb-${version}
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
unzip
|
||||
@@ -104,78 +147,39 @@ stdenv.mkDerivation rec {
|
||||
|
||||
inherit buildInputs;
|
||||
|
||||
configureScript = writeScript "canon-cups-ufr2-configure" ''
|
||||
set -eu
|
||||
# Update old automake files
|
||||
for dir in \
|
||||
cnrdrvcups-common-${version}/{backend,buftool,cngplp,cnjbig,rasterfilter} \
|
||||
cnrdrvcups-lb-${version}/{cngplp/files,cngplp,cpca,pdftocpca}
|
||||
do
|
||||
echo autoreconf $dir
|
||||
pushd "$dir"
|
||||
# For some reason, autoreconf fails to create ltmain.sh on first run.
|
||||
autoreconf --force --install --warnings=none || autoreconf --force --install --warnings=none
|
||||
popd
|
||||
done
|
||||
|
||||
awk -f ${convertSpec} -v phase=setup cnrdrvcups-lb.spec | bash -eux
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
awk -f ${convertSpec} -v phase=build cnrdrvcups-lb.spec | bash -eux
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
(
|
||||
cd cnrdrvcups-common-${version}
|
||||
./allgen.sh
|
||||
make install
|
||||
)
|
||||
(
|
||||
cd cnrdrvcups-common-${version}/Rule
|
||||
mkdir -p $out/share/cups/usb
|
||||
install -m 644 *.usb-quirks $out/share/cups/usb
|
||||
)
|
||||
(
|
||||
cd cnrdrvcups-lb-${version}
|
||||
./allgen.sh
|
||||
make install
|
||||
|
||||
mkdir -p $out/share/cups/model
|
||||
install -m 644 ppd/*.ppd $out/share/cups/model/
|
||||
)
|
||||
|
||||
(
|
||||
cd lib
|
||||
mkdir -p $out/lib
|
||||
install -m 755 libs64/${system}/libColorGearCufr2.so.2.0.0 $out/lib
|
||||
install -m 755 libs64/${system}/libcaepcmufr2.so.1.0 $out/lib
|
||||
install -m 755 libs64/${system}/libcaiocnpkbidir.so.1.0.0 $out/lib
|
||||
install -m 755 libs64/${system}/libcaiousb.so.1.0.0 $out/lib
|
||||
install -m 755 libs64/${system}/libcaiowrapufr2.so.1.0.0 $out/lib
|
||||
install -m 755 libs64/${system}/libcanon_slimufr2.so.1.0.0 $out/lib
|
||||
install -m 755 libs64/${system}/libcanonufr2r.so.1.0.0 $out/lib
|
||||
install -m 755 libs64/${system}/libcnaccm.so.1.0 $out/lib
|
||||
install -m 755 libs64/${system}/libcnlbcmr.so.1.0 $out/lib
|
||||
install -m 755 libs64/${system}/libcnncapcmr.so.1.0 $out/lib
|
||||
install -m 755 libs64/${system}/libufr2filterr.so.1.0.0 $out/lib
|
||||
|
||||
install -m 755 libs64/${system}/cnpdfdrv $out/bin
|
||||
install -m 755 libs64/${system}/cnpkbidir $out/bin
|
||||
install -m 755 libs64/${system}/cnpkmoduleufr2r $out/bin
|
||||
install -m 755 libs64/${system}/cnrsdrvufr2 $out/bin
|
||||
install -m 755 libs64/${system}/cnsetuputil2 $out/bin/cnsetuputil2
|
||||
|
||||
mkdir -p $out/share/cnpkbidir
|
||||
install -m 644 libs64/${system}/cnpkbidir_info* $out/share/cnpkbidir
|
||||
|
||||
mkdir -p $out/share/ufr2filter
|
||||
install -m 644 libs64/${system}/ThLB* $out/share/ufr2filter
|
||||
)
|
||||
awk -f ${convertSpec} -v phase=install cnrdrvcups-lb.spec | bash -eux
|
||||
|
||||
(
|
||||
cd $out/lib
|
||||
|
||||
ln -sf libColorGearCufr2.so.2.0.0 libColorGearCufr2.so
|
||||
ln -sf libColorGearCufr2.so.2.0.0 libColorGearCufr2.so.2
|
||||
ln -sf libcaepcmufr2.so.1.0 libcaepcmufr2.so
|
||||
ln -sf libcaepcmufr2.so.1.0 libcaepcmufr2.so.1
|
||||
ln -sf libcaiocnpkbidir.so.1.0.0 libcaiocnpkbidir.so
|
||||
ln -sf libcaiocnpkbidir.so.1.0.0 libcaiocnpkbidir.so.1
|
||||
ln -sf libcaiowrapufr2.so.1.0.0 libcaiowrapufr2.so
|
||||
ln -sf libcaiowrapufr2.so.1.0.0 libcaiowrapufr2.so.1
|
||||
ln -sf libcanon_slimufr2.so.1.0.0 libcanon_slimufr2.so
|
||||
ln -sf libcanon_slimufr2.so.1.0.0 libcanon_slimufr2.so.1
|
||||
ln -sf libcanonufr2r.so.1.0.0 libcanonufr2r.so
|
||||
ln -sf libcanonufr2r.so.1.0.0 libcanonufr2r.so.1
|
||||
ln -sf libcnlbcmr.so.1.0 libcnlbcmr.so
|
||||
ln -sf libcnlbcmr.so.1.0 libcnlbcmr.so.1
|
||||
ln -sf libufr2filterr.so.1.0.0 libufr2filterr.so
|
||||
ln -sf libufr2filterr.so.1.0.0 libufr2filterr.so.1
|
||||
ln -sf libuictlufr2r.so.1.0.0 libuictlufr2r.so
|
||||
ln -sf libuictlufr2r.so.1.0.0 libuictlufr2r.so.1
|
||||
|
||||
patchelf --set-rpath "$(cat $NIX_CC/nix-support/orig-cc)/lib:${libs pkgs}:${lib.getLib stdenv.cc.cc}/lib64:${stdenv.cc.libc}/lib64:$out/lib" libcanonufr2r.so.1.0.0
|
||||
patchelf --set-rpath "$(cat $NIX_CC/nix-support/orig-cc)/lib:${libs pkgs}:${lib.getLib stdenv.cc.cc}/lib64:${stdenv.cc.libc}/lib64" libcaepcmufr2.so.1.0
|
||||
patchelf --set-rpath "$(cat $NIX_CC/nix-support/orig-cc)/lib:${libs pkgs}:${lib.getLib stdenv.cc.cc}/lib64:${stdenv.cc.libc}/lib64" libColorGearCufr2.so.2.0.0
|
||||
@@ -196,21 +200,6 @@ stdenv.mkDerivation rec {
|
||||
--set NIX_REDIRECTS /usr/share/cnsetuputil2=$out/usr/share/cnsetuputil2
|
||||
)
|
||||
|
||||
(
|
||||
cd lib/data/ufr2
|
||||
mkdir -p $out/share/caepcm
|
||||
install -m 644 *.ICC $out/share/caepcm
|
||||
install -m 644 *.icc $out/share/caepcm
|
||||
install -m 644 *.PRF $out/share/caepcm
|
||||
install -m 644 CnLB* $out/share/caepcm
|
||||
)
|
||||
|
||||
(
|
||||
cd cnrdrvcups-utility-${version}/data
|
||||
mkdir -p $out/usr/share/cnsetuputil2
|
||||
install -m 644 cnsetuputil* $out/usr/share/cnsetuputil2
|
||||
)
|
||||
|
||||
makeWrapper "${ghostscript}/bin/gs" "$out/bin/gs" \
|
||||
--prefix LD_LIBRARY_PATH ":" "$out/lib" \
|
||||
--prefix PATH ":" "$out/bin"
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
--- ./cnrdrvcups-lb-6.00/cngplp/cngplpmod/execjob.c 2024-01-08 04:18:42.000000000 +0100
|
||||
+++ ./cnrdrvcups-lb-6.00/cngplp/cngplpmod/execjob.c 2024-08-06 17:13:52.234522912 +0200
|
||||
@@ -1161,7 +1161,7 @@
|
||||
ptr_param += num;
|
||||
list_num += num;
|
||||
if (strlen(ppd_opt->job_result_notice_address) > 0){
|
||||
- num = add_param_int(ptr_param, kPPD_Items_CNJobResultNoticeAddress, ppd_opt->job_result_notice_address);
|
||||
+ num = add_param_char(ptr_param, kPPD_Items_CNJobResultNoticeAddress, ppd_opt->job_result_notice_address);
|
||||
ptr_param += num;
|
||||
list_num += num;
|
||||
}
|
||||
@@ -39,7 +39,7 @@ let
|
||||
};
|
||||
variantName = { palette, color }: palette + color;
|
||||
variants = lib.mapCartesianProduct variantName dimensions;
|
||||
version = "1.0.2";
|
||||
version = "2.0.0";
|
||||
in
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "catppuccin-cursors";
|
||||
@@ -49,7 +49,7 @@ stdenvNoCC.mkDerivation {
|
||||
owner = "catppuccin";
|
||||
repo = "cursors";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Mm0fRh/Shem65E/Cl0yyw+efEHOEt/OJ+MzL+3Mcbwc=";
|
||||
hash = "sha256-qis6p+/m7+DdRDYzLq9yB2eZGpfZe5z5xRsa/1HoIG4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "cdncheck";
|
||||
version = "1.1.6";
|
||||
version = "1.1.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "projectdiscovery";
|
||||
repo = "cdncheck";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-4dW0HcJuEJt9Yf3SccCJbPGYQMRo+eGAxhUhfbdcYD8=";
|
||||
hash = "sha256-VoDp+lHqVEI7xtSt4oLNDmbX0iwarQ+pZ2U6HRtNr/I=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-/1REkZ5+sz/H4T4lXhloz7fu5cLv1GoaD3dlttN+Qd4=";
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cglm";
|
||||
version = "0.9.5";
|
||||
version = "0.9.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "recp";
|
||||
repo = "cglm";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-yc8UFKl0q+QZ9helTzrxfZdk7yeRSb3bUVyIL+uRWdQ=";
|
||||
sha256 = "sha256-caDw9Sqf4hS2JNbNxG/xaFIvO6oIlvT+hZQhdX37BKw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
@@ -25,14 +25,14 @@ with py.pkgs;
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "checkov";
|
||||
version = "3.2.373";
|
||||
version = "3.2.377";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bridgecrewio";
|
||||
repo = "checkov";
|
||||
tag = version;
|
||||
hash = "sha256-5WSrmqKH4EtuXRG9tjC3K0tHhm+BNSm4Kbsg1oiBs9k=";
|
||||
hash = "sha256-lZJ4BKssV1stsclXwc3ymiQjA4XyGIWS+zw/gtOCd4Y=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [
|
||||
|
||||
12
pkgs/by-name/cl/claude-code/package-lock.json
generated
12
pkgs/by-name/cl/claude-code/package-lock.json
generated
@@ -5,17 +5,15 @@
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"@anthropic-ai/claude-code": "^0.2.14"
|
||||
"@anthropic-ai/claude-code": "^0.2.19"
|
||||
}
|
||||
},
|
||||
"node_modules/@anthropic-ai/claude-code": {
|
||||
"version": "0.2.14",
|
||||
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-0.2.14.tgz",
|
||||
"integrity": "sha512-p729wIUq9/K/TecpE64nzWKEZJ1qddn20eQg1nUoMdEQtwWjwWYiecwJ6lDxCmNRWr0ukC7ovu0Kgtmh+uOPYg==",
|
||||
"version": "0.2.19",
|
||||
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-0.2.19.tgz",
|
||||
"integrity": "sha512-3A9K8438+eYysRjdq2NLGkyETwKOR5CIKh/I03kMahRFnB3h/YwL/b9M1JX38qR1Chna1hNgZRurFOK9Z+pofg==",
|
||||
"hasInstallScript": true,
|
||||
"license": "SEE LICENSE IN README.md",
|
||||
"os": [
|
||||
"!win32"
|
||||
],
|
||||
"bin": {
|
||||
"claude": "cli.mjs"
|
||||
},
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "claude-code";
|
||||
version = "0.2.14";
|
||||
version = "0.2.19";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz";
|
||||
hash = "sha256-Q/+Wa3RhY2XZc/0afAvCczLtnSVjoAWvhf2VEDHk+D8=";
|
||||
hash = "sha256-6uCywxu8ji7+Hx/qqxf5IgvifFKwkBn1O/JtFk8wUQE=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-61JgKMXN03LIWcCi9CrSGhtOUJmRurnSSdt2iYHYkEs=";
|
||||
npmDepsHash = "sha256-SjQ0fNAqqESQjXImIrY2hq065MXofJP6n9MyjQnMXeI=";
|
||||
|
||||
postPatch = ''
|
||||
cp ${./package-lock.json} package-lock.json
|
||||
|
||||
@@ -1,22 +1,18 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
rustPlatform,
|
||||
libcosmicAppHook,
|
||||
just,
|
||||
pkg-config,
|
||||
alsa-lib,
|
||||
ffmpeg,
|
||||
glib,
|
||||
gst_all_1,
|
||||
just,
|
||||
pkg-config,
|
||||
libxkbcommon,
|
||||
stdenv,
|
||||
cosmic-icons,
|
||||
libglvnd,
|
||||
libgbm,
|
||||
wayland,
|
||||
xorg,
|
||||
vulkan-loader,
|
||||
makeBinaryWrapper,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
@@ -25,8 +21,8 @@ rustPlatform.buildRustPackage rec {
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = pname;
|
||||
rev = "epoch-${version}";
|
||||
repo = "cosmic-player";
|
||||
tag = "epoch-${version}";
|
||||
hash = "sha256-Ebjj+C+yLCRomZy2W8mYDig1pv7aQcD3A9V2M53RM5U=";
|
||||
};
|
||||
|
||||
@@ -40,7 +36,8 @@ rustPlatform.buildRustPackage rec {
|
||||
nativeBuildInputs = [
|
||||
just
|
||||
pkg-config
|
||||
makeBinaryWrapper
|
||||
libcosmicAppHook
|
||||
rustPlatform.bindgenHook
|
||||
];
|
||||
|
||||
# Largely based on lilyinstarlight's work linked below
|
||||
@@ -54,15 +51,12 @@ rustPlatform.buildRustPackage rec {
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good
|
||||
gst_all_1.gst-plugins-bad
|
||||
libxkbcommon
|
||||
libgbm
|
||||
wayland
|
||||
vulkan-loader
|
||||
xorg.libX11
|
||||
libglvnd
|
||||
];
|
||||
|
||||
dontUseJustBuild = true;
|
||||
dontUseJustCheck = true;
|
||||
|
||||
justFlags = [
|
||||
"--set"
|
||||
@@ -73,37 +67,27 @@ rustPlatform.buildRustPackage rec {
|
||||
"target/${stdenv.hostPlatform.rust.cargoShortTarget}/release/cosmic-player"
|
||||
];
|
||||
|
||||
# Force linking to libEGL, which is always dlopen()ed, and to
|
||||
# libwayland-client, which is always dlopen()ed except by the
|
||||
# obscure winit backend.
|
||||
RUSTFLAGS = map (a: "-C link-arg=${a}") [
|
||||
"-Wl,--push-state,--no-as-needed"
|
||||
"-lEGL"
|
||||
"-lwayland-client"
|
||||
"-Wl,--pop-state"
|
||||
];
|
||||
|
||||
# LD_LIBRARY_PATH can be removed once tiny-xlib is bumped above 0.2.2
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/cosmic-player" \
|
||||
--suffix XDG_DATA_DIRS : "${cosmic-icons}/share" \
|
||||
--prefix LD_LIBRARY_PATH : ${
|
||||
lib.makeLibraryPath [
|
||||
xorg.libX11
|
||||
xorg.libXcursor
|
||||
xorg.libXi
|
||||
vulkan-loader
|
||||
libxkbcommon
|
||||
wayland
|
||||
]
|
||||
}
|
||||
libcosmicAppWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"--version"
|
||||
"unstable"
|
||||
"--version-regex"
|
||||
"epoch-(.*)"
|
||||
];
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/pop-os/cosmic-player";
|
||||
description = "Media player for the COSMIC Desktop Environment";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ ahoneybun ];
|
||||
maintainers = with lib.maintainers; [
|
||||
ahoneybun
|
||||
HeitorAugustoLN
|
||||
];
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "cosmic-player";
|
||||
};
|
||||
|
||||
@@ -2,25 +2,14 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
rustPlatform,
|
||||
appstream,
|
||||
makeBinaryWrapper,
|
||||
cosmic-icons,
|
||||
glib,
|
||||
just,
|
||||
libcosmicAppHook,
|
||||
pkg-config,
|
||||
libglvnd,
|
||||
libxkbcommon,
|
||||
libinput,
|
||||
fontconfig,
|
||||
just,
|
||||
glib,
|
||||
flatpak,
|
||||
freetype,
|
||||
openssl,
|
||||
wayland,
|
||||
xorg,
|
||||
vulkan-loader,
|
||||
vulkan-validation-layers,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
@@ -32,38 +21,25 @@ rustPlatform.buildRustPackage rec {
|
||||
repo = "cosmic-store";
|
||||
tag = "epoch-${version}";
|
||||
hash = "sha256-ce7PaHBhRFUoujAS6j10XWbD2PxzK6XXIk/ENclT1iY=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-kPCE6F8/UsTJOmIjwxBLISk/Jhfljwa666WhXuKkkDE=";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace justfile --replace '#!/usr/bin/env' "#!$(command -v env)"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
just
|
||||
pkg-config
|
||||
makeBinaryWrapper
|
||||
libcosmicAppHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
appstream
|
||||
glib
|
||||
libxkbcommon
|
||||
libinput
|
||||
libglvnd
|
||||
fontconfig
|
||||
flatpak
|
||||
freetype
|
||||
openssl
|
||||
xorg.libX11
|
||||
wayland
|
||||
vulkan-loader
|
||||
vulkan-validation-layers
|
||||
];
|
||||
|
||||
dontUseJustBuild = true;
|
||||
dontUseJustCheck = true;
|
||||
|
||||
justFlags = [
|
||||
"--set"
|
||||
@@ -74,47 +50,26 @@ rustPlatform.buildRustPackage rec {
|
||||
"target/${stdenv.hostPlatform.rust.cargoShortTarget}/release/cosmic-store"
|
||||
];
|
||||
|
||||
# Force linking to libEGL, which is always dlopen()ed, and to
|
||||
# libwayland-client, which is always dlopen()ed except by the
|
||||
# obscure winit backend.
|
||||
RUSTFLAGS = map (a: "-C link-arg=${a}") [
|
||||
"-Wl,--push-state,--no-as-needed"
|
||||
"-lEGL"
|
||||
"-lwayland-client"
|
||||
"-Wl,--pop-state"
|
||||
];
|
||||
|
||||
# LD_LIBRARY_PATH can be removed once tiny-xlib is bumped above 0.2.2
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/cosmic-store" \
|
||||
--suffix XDG_DATA_DIRS : "${cosmic-icons}/share" \
|
||||
--prefix LD_LIBRARY_PATH : ${
|
||||
lib.makeLibraryPath [
|
||||
xorg.libX11
|
||||
xorg.libXcursor
|
||||
xorg.libXi
|
||||
xorg.libXrandr
|
||||
libxkbcommon
|
||||
vulkan-loader
|
||||
]
|
||||
}
|
||||
'';
|
||||
|
||||
env.VERGEN_GIT_COMMIT_DATE = "2025-02-21";
|
||||
env.VERGEN_GIT_SHA = src.rev;
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"--version"
|
||||
"unstable"
|
||||
"--version-regex"
|
||||
"epoch-(.*)"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
homepage = "https://github.com/pop-os/cosmic-store";
|
||||
description = "App Store for the COSMIC Desktop Environment";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [
|
||||
ahoneybun
|
||||
nyabinary
|
||||
HeitorAugustoLN
|
||||
];
|
||||
platforms = platforms.linux;
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cpustat";
|
||||
version = "0.02.21";
|
||||
version = "0.03.00";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ColinIanKing";
|
||||
repo = "cpustat";
|
||||
tag = "V${version}";
|
||||
hash = "sha256-Rxoj2pnQ/tEUzcsFT1F+rU960b4Th3hqZU2YR6YGwZQ=";
|
||||
hash = "sha256-wvCaMmWKEzanwgDBL2+8qAIIIKfGNi0O2J+SUXOx508=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
dune_3,
|
||||
makeWrapper,
|
||||
pandoc,
|
||||
poppler_utils,
|
||||
poppler-utils,
|
||||
testers,
|
||||
docfd,
|
||||
}:
|
||||
@@ -61,7 +61,7 @@ buildDunePackage' rec {
|
||||
wrapProgram $out/bin/docfd --prefix PATH : "${
|
||||
lib.makeBinPath [
|
||||
pandoc
|
||||
poppler_utils
|
||||
poppler-utils
|
||||
]
|
||||
}"
|
||||
'';
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
}:
|
||||
buildNpmPackage rec {
|
||||
pname = "factoriolab";
|
||||
version = "3.11.4";
|
||||
version = "3.12.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "factoriolab";
|
||||
repo = "factoriolab";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-fn9qvUC14a37vQJJiu5jf+wOpeMFsUeR47TDmemNdEc=";
|
||||
hash = "sha256-4J7WDYvKAAb6If/dRDED1BOiqpBEugIrNRPLwuWjh8Q=";
|
||||
};
|
||||
buildInputs = [ vips ];
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -28,10 +28,10 @@ stdenv.mkDerivation rec {
|
||||
cmake
|
||||
extra-cmake-modules
|
||||
gettext
|
||||
gtest
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
extra-cmake-modules
|
||||
fcitx5
|
||||
fmt
|
||||
gtest
|
||||
@@ -39,6 +39,8 @@ stdenv.mkDerivation rec {
|
||||
json_c
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
];
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
enablePython ? true,
|
||||
addBinToPathHook,
|
||||
python3Packages,
|
||||
testers,
|
||||
versionCheckHook,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -54,14 +54,19 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
]
|
||||
++ [
|
||||
addBinToPathHook
|
||||
versionCheckHook
|
||||
];
|
||||
versionCheckProgramArg = [ "--version" ];
|
||||
|
||||
disabledTests = lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
|
||||
# Numerical precision error
|
||||
# self.assertTrue(numpy.allclose(data_f, abs(asu_val), atol=5e-5, rtol=0))
|
||||
# AssertionError: False is not true
|
||||
"test_reading"
|
||||
];
|
||||
|
||||
pytestFlagsArray = [ "../tests" ];
|
||||
|
||||
passthru.tests = {
|
||||
version = testers.testVersion { package = finalAttrs.finalPackage; };
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Macromolecular crystallography library and utilities";
|
||||
homepage = "https://github.com/project-gemmi/gemmi";
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "glow";
|
||||
version = "2.0.0";
|
||||
version = "2.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "charmbracelet";
|
||||
repo = "glow";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-gPy3MnQHmBJl06oVOpwQB4qIpJ10kUNMNMPkpsIujeI=";
|
||||
hash = "sha256-pYXzm6HEqxJRPDdiUb+yij3iA2FhFYZOdRvQ69grcuU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-vxw8yqY6MxIIWeSX1D+unb0VbBmIpz1431N7UNORJP0=";
|
||||
vendorHash = "sha256-lnD3SdPqZO+xfsR5YhvIAr9Gy1sA1LXi4SP/d/Rv/6g=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
imagemagick,
|
||||
libtiff,
|
||||
djvulibre,
|
||||
poppler_utils,
|
||||
poppler-utils,
|
||||
ghostscript,
|
||||
unpaper,
|
||||
pdftk,
|
||||
@@ -98,7 +98,7 @@ perlPackages.buildPerlPackage rec {
|
||||
--prefix PATH : "${imagemagick}/bin" \
|
||||
--prefix PATH : "${libtiff}/bin" \
|
||||
--prefix PATH : "${djvulibre}/bin" \
|
||||
--prefix PATH : "${poppler_utils}/bin" \
|
||||
--prefix PATH : "${poppler-utils}/bin" \
|
||||
--prefix PATH : "${ghostscript}/bin" \
|
||||
--prefix PATH : "${unpaper}/bin" \
|
||||
--prefix PATH : "${pdftk}/bin"
|
||||
@@ -118,7 +118,7 @@ perlPackages.buildPerlPackage rec {
|
||||
imagemagick
|
||||
libtiff
|
||||
djvulibre
|
||||
poppler_utils
|
||||
poppler-utils
|
||||
ghostscript
|
||||
unpaper
|
||||
pdftk
|
||||
|
||||
39
pkgs/by-name/ha/har-to-k6/package.nix
Normal file
39
pkgs/by-name/ha/har-to-k6/package.nix
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
lib,
|
||||
buildNpmPackage,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
versionCheckHook,
|
||||
}:
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "har-to-k6";
|
||||
version = "0.14.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "grafana";
|
||||
repo = "har-to-k6";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-eBy5rBZt9v8XFOSGQPhJWAGy2XuhyuG013A6ex2AxE4=";
|
||||
};
|
||||
|
||||
dontNpmBuild = true;
|
||||
|
||||
npmDepsHash = "sha256-RuK3CzcMkPt5MFEZpYBDtMMShHTT/115pRk1CmRkiek=";
|
||||
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
versionCheckProgramArg = "--version";
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Converts LI-HAR and HAR to K6 script";
|
||||
homepage = "https://github.com/grafana/har-to-k6";
|
||||
changelog = "https://github.com/grafana/har-to-k6/releases/tag/v${version}";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ cterence ];
|
||||
mainProgram = "har-to-k6";
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
};
|
||||
}
|
||||
@@ -84,12 +84,12 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hey-mail";
|
||||
version = "1.2.16";
|
||||
rev = "27";
|
||||
version = "1.2.17";
|
||||
rev = "28";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://api.snapcraft.io/api/v1/snaps/download/lfWUNpR7PrPGsDfuxIhVxbj0wZHoH7bK_${finalAttrs.rev}.snap";
|
||||
hash = "sha512-kq/AkJMzhd4B82TZ9r1JYOd+QJLDtdp3IEvkiACNVgVVOMSbfKHd93a38X9SGxntmnuwoFGZVYh18KjAkOU6XA==";
|
||||
hash = "sha512-X4iJ8r0VFHD+dtFkyABUEFeoI3CSpmT70JjgJGsW7nqzCLriF4eekdHKJgySusnLW250RlEVtEO5wKMW+2bqCQ==";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "interactsh";
|
||||
version = "1.2.3";
|
||||
version = "1.2.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "projectdiscovery";
|
||||
repo = pname;
|
||||
tag = "v${version}";
|
||||
hash = "sha256-ugrcGOlVRPTWhIX6Bpzl9iVydiVY5BWN3yNK/CaZS6A=";
|
||||
hash = "sha256-28d+ghJ/A/dg6aeypqPF4EAhDp8k3yXLYylxnQR/J+M=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-HgYaSjg4oFNOTOiUd2YXpdUWdpKqJFF5KDejxp0J4cU=";
|
||||
vendorHash = "sha256-1ZTvIGgFEXxW//d3bD4kYRYj5+n/NzJW2oSnbjyXLGA=";
|
||||
|
||||
modRoot = ".";
|
||||
subPackages = [
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
fetchpatch,
|
||||
ghostscript,
|
||||
imagemagick,
|
||||
poppler_utils,
|
||||
poppler-utils,
|
||||
python3,
|
||||
tesseract5,
|
||||
}:
|
||||
@@ -50,7 +50,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
ghostscript
|
||||
imagemagick
|
||||
tesseract5
|
||||
poppler_utils
|
||||
poppler-utils
|
||||
])
|
||||
];
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
version = "0.1.0";
|
||||
version = "0.1.2";
|
||||
in
|
||||
buildGoModule {
|
||||
pname = "izrss";
|
||||
@@ -15,7 +15,7 @@ buildGoModule {
|
||||
owner = "isabelroses";
|
||||
repo = "izrss";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-Op9aiCQrBH8TuhMTt+3Wthd8UY3lU2g9yJ110v7TtXA=";
|
||||
hash = "sha256-t/YvSl6JoYLHsCPkRlbaM8OlAMQc83cb4sOKF7S/CFw=";
|
||||
};
|
||||
|
||||
ldflags = [
|
||||
@@ -24,7 +24,7 @@ buildGoModule {
|
||||
"-X main.version=${version}"
|
||||
];
|
||||
|
||||
vendorHash = "sha256-/TRCD6akZV2qDqJz62p7UzFIGuTAKLnUtYqqvdw3rCI=";
|
||||
vendorHash = "sha256-bB6oxIbFqY0rPoGetIGfKEdfPsX9cqeb9WcjtgjAAJA=";
|
||||
|
||||
meta = {
|
||||
description = "RSS feed reader for the terminal written in Go";
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
}:
|
||||
let
|
||||
pname = "jetbrains-toolbox";
|
||||
version = "2.5.3.37797";
|
||||
version = "2.5.4.38621";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${version}.tar.gz";
|
||||
hash = "sha256-BMSVigKiR7HgBqaebKvBk0OnyqiYQk562IIzN/6xu2I=";
|
||||
hash = "sha256-FQTw6LPLJV+lV546rFOi/503PuErJs4T5q9MNWwGYEs=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "k0sctl";
|
||||
version = "0.22.0";
|
||||
version = "0.23.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "k0sproject";
|
||||
repo = "k0sctl";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-/PwJg+bwgoKXxpn/afbk+eATtvqVANh+bfBER1gW0Fo=";
|
||||
hash = "sha256-KhbS7nO/NW7tX6G/MfM92krOHq8cj08515E9h78MJrI=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-0KaLwu91U5LcvJIoC7FDvhfRlfNIjOp1LokykclOgBY=";
|
||||
vendorHash = "sha256-ehTwgvnnL0Hl/xu/o2rwILKDzD0i3rZ73ogjpLcyJ0I=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchzip
|
||||
, fetchurl
|
||||
, cacert
|
||||
, unicode-emoji
|
||||
, unicode-character-database
|
||||
, cmake
|
||||
, ninja
|
||||
, pkg-config
|
||||
, curl
|
||||
, libavif
|
||||
, libGL
|
||||
, libjxl
|
||||
, libpulseaudio
|
||||
, libwebp
|
||||
, libxcrypt
|
||||
, openssl
|
||||
, python3
|
||||
, qt6Packages
|
||||
, woff2
|
||||
, ffmpeg
|
||||
, fontconfig
|
||||
, simdutf
|
||||
, skia
|
||||
, nixosTests
|
||||
, unstableGitUpdater
|
||||
, apple-sdk_14
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
fetchurl,
|
||||
cacert,
|
||||
unicode-emoji,
|
||||
unicode-character-database,
|
||||
cmake,
|
||||
ninja,
|
||||
pkg-config,
|
||||
curl,
|
||||
libavif,
|
||||
libGL,
|
||||
libjxl,
|
||||
libpulseaudio,
|
||||
libwebp,
|
||||
libxcrypt,
|
||||
openssl,
|
||||
python3,
|
||||
qt6Packages,
|
||||
woff2,
|
||||
ffmpeg,
|
||||
fontconfig,
|
||||
simdutf,
|
||||
skia,
|
||||
nixosTests,
|
||||
unstableGitUpdater,
|
||||
apple-sdk_14,
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -96,50 +96,55 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
chmod +w build/Caches/AdobeICCProfiles
|
||||
'';
|
||||
|
||||
nativeBuildInputs = with qt6Packages; [
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
pkg-config
|
||||
python3
|
||||
wrapQtAppsHook
|
||||
qt6Packages.wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = with qt6Packages; [
|
||||
curl
|
||||
ffmpeg
|
||||
fontconfig
|
||||
libavif
|
||||
libGL
|
||||
libjxl
|
||||
libwebp
|
||||
libxcrypt
|
||||
openssl
|
||||
qtbase
|
||||
qtmultimedia
|
||||
simdutf
|
||||
(skia.overrideAttrs (prev: {
|
||||
gnFlags = prev.gnFlags ++ [
|
||||
# https://github.com/LadybirdBrowser/ladybird/commit/af3d46dc06829dad65309306be5ea6fbc6a587ec
|
||||
# https://github.com/LadybirdBrowser/ladybird/commit/4d7b7178f9d50fff97101ea18277ebc9b60e2c7c
|
||||
# Remove when/if this gets upstreamed in skia.
|
||||
"extra_cflags+=[\"-DSKCMS_API=__attribute__((visibility(\\\"default\\\")))\"]"
|
||||
];
|
||||
}))
|
||||
woff2
|
||||
] ++ lib.optional stdenv.hostPlatform.isLinux [
|
||||
libpulseaudio.dev
|
||||
qtwayland
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
apple-sdk_14
|
||||
];
|
||||
buildInputs =
|
||||
[
|
||||
curl
|
||||
ffmpeg
|
||||
fontconfig
|
||||
libavif
|
||||
libGL
|
||||
libjxl
|
||||
libwebp
|
||||
libxcrypt
|
||||
openssl
|
||||
qt6Packages.qtbase
|
||||
qt6Packages.qtmultimedia
|
||||
simdutf
|
||||
(skia.overrideAttrs (prev: {
|
||||
gnFlags = prev.gnFlags ++ [
|
||||
# https://github.com/LadybirdBrowser/ladybird/commit/af3d46dc06829dad65309306be5ea6fbc6a587ec
|
||||
# https://github.com/LadybirdBrowser/ladybird/commit/4d7b7178f9d50fff97101ea18277ebc9b60e2c7c
|
||||
# Remove when/if this gets upstreamed in skia.
|
||||
"extra_cflags+=[\"-DSKCMS_API=__attribute__((visibility(\\\"default\\\")))\"]"
|
||||
];
|
||||
}))
|
||||
woff2
|
||||
]
|
||||
++ lib.optional stdenv.hostPlatform.isLinux [
|
||||
libpulseaudio.dev
|
||||
qt6Packages.qtwayland
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
apple-sdk_14
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
# Disable network operations
|
||||
"-DSERENITY_CACHE_DIR=Caches"
|
||||
"-DENABLE_NETWORK_DOWNLOADS=OFF"
|
||||
] ++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
"-DCMAKE_INSTALL_LIBEXECDIR=libexec"
|
||||
];
|
||||
cmakeFlags =
|
||||
[
|
||||
# Disable network operations
|
||||
"-DSERENITY_CACHE_DIR=Caches"
|
||||
"-DENABLE_NETWORK_DOWNLOADS=OFF"
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
"-DCMAKE_INSTALL_LIBEXECDIR=libexec"
|
||||
];
|
||||
|
||||
# FIXME: Add an option to -DENABLE_QT=ON on macOS to use Qt rather than Cocoa for the GUI
|
||||
|
||||
@@ -168,7 +173,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
homepage = "https://ladybird.org";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [ fgaz ];
|
||||
platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
mainProgram = "Ladybird";
|
||||
};
|
||||
})
|
||||
@@ -38,7 +38,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
homepage = "https://lava.gitlab.io/lavacli/";
|
||||
changelog = "https://gitlab.com/lava/lavacli/-/commits/v${version}?ref_type=tags";
|
||||
license = lib.licenses.agpl3Only;
|
||||
maintainers = with lib.maintainers; [ snu ];
|
||||
maintainers = lib.teams.cyberus.members;
|
||||
mainProgram = "lavacli";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
{ lib, stdenv
|
||||
, fetchurl
|
||||
, python3
|
||||
, pkg-config
|
||||
, readline
|
||||
, tdb
|
||||
, talloc
|
||||
, tevent
|
||||
, popt
|
||||
, libxslt
|
||||
, docbook-xsl-nons
|
||||
, docbook_xml_dtd_42
|
||||
, cmocka
|
||||
, wafHook
|
||||
, buildPackages
|
||||
, libxcrypt
|
||||
, testers
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
python3,
|
||||
pkg-config,
|
||||
readline,
|
||||
tdb,
|
||||
talloc,
|
||||
tevent,
|
||||
popt,
|
||||
libxslt,
|
||||
docbook-xsl-nons,
|
||||
docbook_xml_dtd_42,
|
||||
cmocka,
|
||||
wafHook,
|
||||
buildPackages,
|
||||
libxcrypt,
|
||||
testers,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -26,7 +28,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-0VWIQALHnbscPYZC+LEBPy5SCzru/W6WQSrexbjWy8A=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
@@ -59,21 +64,32 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
wafPath = "buildtools/bin/waf";
|
||||
|
||||
wafConfigureFlags = [
|
||||
"--bundled-libraries=NONE"
|
||||
"--builtin-libraries=replace"
|
||||
"--without-ldb-lmdb"
|
||||
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
"--cross-compile"
|
||||
"--cross-execute=${stdenv.hostPlatform.emulator buildPackages}"
|
||||
];
|
||||
wafConfigureFlags =
|
||||
[
|
||||
"--bundled-libraries=NONE"
|
||||
"--builtin-libraries=replace"
|
||||
"--without-ldb-lmdb"
|
||||
]
|
||||
++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
"--cross-compile"
|
||||
"--cross-execute=${stdenv.hostPlatform.emulator buildPackages}"
|
||||
];
|
||||
|
||||
# python-config from build Python gives incorrect values when cross-compiling.
|
||||
# If python-config is not found, the build falls back to using the sysconfig
|
||||
# module, which works correctly in all cases.
|
||||
PYTHON_CONFIG = "/invalid";
|
||||
|
||||
stripDebugList = [ "bin" "lib" "modules" ];
|
||||
# https://reviews.llvm.org/D135402
|
||||
NIX_LDFLAGS = lib.optional (
|
||||
stdenv.cc.bintools.isLLVM && lib.versionAtLeast stdenv.cc.bintools.version "17"
|
||||
) "--undefined-version";
|
||||
|
||||
stripDebugList = [
|
||||
"bin"
|
||||
"lib"
|
||||
"modules"
|
||||
];
|
||||
|
||||
passthru.tests.pkg-config = testers.hasPkgConfigModules {
|
||||
package = finalAttrs.finalPackage;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
mupdf,
|
||||
pkg-config,
|
||||
poppler,
|
||||
poppler_utils,
|
||||
poppler-utils,
|
||||
qpdf,
|
||||
stdenv,
|
||||
}:
|
||||
@@ -47,7 +47,7 @@ stdenv.mkDerivation rec {
|
||||
libtiff
|
||||
mupdf
|
||||
poppler
|
||||
poppler_utils
|
||||
poppler-utils
|
||||
qpdf
|
||||
];
|
||||
configureFlags = [
|
||||
|
||||
@@ -4,9 +4,25 @@
|
||||
libguestfs-appliance,
|
||||
}:
|
||||
|
||||
let
|
||||
appliance = libguestfs-appliance;
|
||||
# check explicit forward compatibility declaration:
|
||||
# then do not warn if older appliance if known to work fine with newer libguestfs
|
||||
libguestfsCompatible =
|
||||
if lib.hasAttr "libguestfsCompatible" appliance then
|
||||
appliance.libguestfsCompatible libguestfs
|
||||
else
|
||||
false;
|
||||
in
|
||||
# https://github.com/NixOS/nixpkgs/issues/280881
|
||||
lib.warnIf (builtins.compareVersions libguestfs.version libguestfs-appliance.version > 0)
|
||||
"libguestfs has a higher version than libguestfs-appliance (${libguestfs.version} > ${libguestfs-appliance.version}), runtime errors may occur!"
|
||||
lib.warnIf
|
||||
(
|
||||
builtins.compareVersions (lib.versions.majorMinor libguestfs.version) (
|
||||
lib.versions.majorMinor appliance.version
|
||||
) > 0
|
||||
&& !libguestfsCompatible
|
||||
)
|
||||
"libguestfs has a different version than ${appliance.pname} (${libguestfs.version} > ${appliance.version}), runtime errors may occur!"
|
||||
|
||||
libguestfs.override
|
||||
{ appliance = libguestfs-appliance; }
|
||||
{ inherit appliance; }
|
||||
|
||||
@@ -47,12 +47,11 @@ assert appliance == null || lib.isDerivation appliance;
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "libguestfs";
|
||||
|
||||
version = "1.54.0";
|
||||
version = "1.54.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://libguestfs.org/download/${lib.versions.majorMinor finalAttrs.version}-stable/${finalAttrs.pname}-${finalAttrs.version}.tar.gz";
|
||||
sha256 = "sha256-tK+g+P1YAgXqVUjUaLxuQ8O+y5leL2DmMmVSemMFQkY=";
|
||||
url = "https://libguestfs.org/download/${lib.versions.majorMinor finalAttrs.version}-stable/libguestfs-${finalAttrs.version}.tar.gz";
|
||||
sha256 = "sha256-bj/GrBkmdfe8KEClYbs2o209Wo36f4jqL1P4z2AqF34=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
libz,
|
||||
mupdf,
|
||||
pkg-config,
|
||||
poppler_utils,
|
||||
poppler-utils,
|
||||
stdenv,
|
||||
}:
|
||||
|
||||
@@ -37,9 +37,9 @@ stdenv.mkDerivation rec {
|
||||
configureFlags = [
|
||||
"--with-mutool-path=${mupdf}/bin/mutool"
|
||||
"--with-pdftops=pdftops"
|
||||
"--with-pdftops-path=${poppler_utils}/bin/pdftops"
|
||||
"--with-pdftops-path=${poppler-utils}/bin/pdftops"
|
||||
"--with-gs-path=${ghostscript}/bin/gs"
|
||||
"--with-pdftocairo-path=${poppler_utils}/bin/pdftocairo"
|
||||
"--with-pdftocairo-path=${poppler-utils}/bin/pdftocairo"
|
||||
];
|
||||
makeFlags = [
|
||||
"CUPS_SERVERBIN=$(out)/lib/cups"
|
||||
|
||||
@@ -95,7 +95,7 @@ else
|
||||
|
||||
''
|
||||
+ lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
|
||||
# dylib will be rejected unless dylib rpath gets explictly set
|
||||
# dylib will be rejected unless dylib rpath gets explicitly set
|
||||
install_name_tool \
|
||||
-change $libName $out/lib/$libName \
|
||||
$out/lib/$libName
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libx86emu";
|
||||
version = "3.5";
|
||||
version = "3.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wfeldt";
|
||||
repo = "libx86emu";
|
||||
rev = version;
|
||||
sha256 = "sha256-dKT/Ey+vardXu/+coaC69TTUXjJLsLBKgCx9VY8f0oY=";
|
||||
sha256 = "sha256-ilAmGlkMeuG0FlygMdE3NreFPJJF6g/26C8C5grvjrk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ perl ];
|
||||
|
||||
@@ -6,17 +6,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "lintspec";
|
||||
version = "0.2.0";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "beeb";
|
||||
repo = "lintspec";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-qxr3gRJx7n11KJ09lMDUhvgMXh79DNeG7NYNFe1qYRY=";
|
||||
hash = "sha256-88NPB9aikjHFCqmZpwvPtYECeWv/TYAY9S+YqP5xzNA=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-qn7Z99wEGiR79vDj6Zpr+TLw6FTgL/ka9YIei66cOds=";
|
||||
cargoHash = "sha256-2G/ycPcyJX1uImqvI+Us5i5GmemuSNW3pQ+dVNk11lg=";
|
||||
|
||||
meta = {
|
||||
description = "Blazingly fast linter for NatSpec comments in Solidity code";
|
||||
|
||||
@@ -11,13 +11,13 @@ telegram-desktop.override {
|
||||
unwrapped = telegram-desktop.unwrapped.overrideAttrs (
|
||||
finalAttrs: previousAttrs: {
|
||||
pname = "materialgram-unwrapped";
|
||||
version = "5.10.3.1";
|
||||
version = "5.11.1.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kukuruzka165";
|
||||
repo = "materialgram";
|
||||
rev = "refs/tags/v${finalAttrs.version}";
|
||||
hash = "sha256-vnsQHvBQLc5ZCeGDW3msAPNHgWB7llgEIraNpdb/Fks=";
|
||||
hash = "sha256-vloirkfA+BXTOSMgg7epcn5CM798HI3ATQHCf/i99TE=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
rustPlatform,
|
||||
rustc,
|
||||
nixosTests,
|
||||
callPackage,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -17,20 +17,20 @@ let
|
||||
in
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "matrix-synapse";
|
||||
version = "1.124.0";
|
||||
version = "1.125.0";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "element-hq";
|
||||
repo = "synapse";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-hL1MdngaAVqgdN8GS9m3jn4twsbX0GPFa5cq+SCJ1oI=";
|
||||
hash = "sha256-eo4JxNhVdAUeUmh0yUDE7+6csNbgdrYvf7UU/AMce7U=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit src;
|
||||
name = "${pname}-${version}";
|
||||
hash = "sha256-OIrjBhjSavJubpcMtHLrfuK7uhfNd+AHKUmHno32yo4=";
|
||||
hash = "sha256-eAlybi5yDlnhdvVet5Xab4s1emyJrlQuEf3YzusU2M4=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -178,6 +178,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
tests = { inherit (nixosTests) matrix-synapse matrix-synapse-workers; };
|
||||
inherit plugins;
|
||||
python = python3;
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
||||
@@ -44,7 +44,7 @@ stdenv.mkDerivation {
|
||||
unwrapped = matrix-synapse-unwrapped;
|
||||
|
||||
# for backward compatibility
|
||||
inherit (matrix-synapse-unwrapped) plugins tests tools;
|
||||
inherit (matrix-synapse-unwrapped) plugins tests;
|
||||
};
|
||||
|
||||
# Carry the maintainer, licenses, and various useful information.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
fetchFromSourcehut,
|
||||
gobject-introspection,
|
||||
gst_all_1,
|
||||
poppler_utils,
|
||||
poppler-utils,
|
||||
python3,
|
||||
xorg,
|
||||
}:
|
||||
@@ -137,7 +137,7 @@ python.pkgs.buildPythonApplication rec {
|
||||
pytestCheckHook
|
||||
webtest
|
||||
|
||||
poppler_utils
|
||||
poppler-utils
|
||||
]
|
||||
++ lib.flatten (lib.attrValues optional-dependencies);
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ let
|
||||
systemd
|
||||
];
|
||||
|
||||
version = "2025.2";
|
||||
version = "2025.3";
|
||||
|
||||
selectSystem =
|
||||
attrs:
|
||||
@@ -79,8 +79,8 @@ let
|
||||
};
|
||||
|
||||
hash = selectSystem {
|
||||
x86_64-linux = "sha256-jOE6Nsna1R6kNp/wXaY60rNmgy4y2UViHiK+KphSNFo=";
|
||||
aarch64-linux = "sha256-yemy1Eajq7uHfGGEf3bgnp2Uz+NcI0cSp65ZvKUQAEg=";
|
||||
x86_64-linux = "sha256-yELDdBoa8/Z4ttE/zR6246RBlNzq4YPWo3jcYWsF6M4=";
|
||||
aarch64-linux = "sha256-0KmJGfee+YwiWU3r1G3f6u1bNLyup2Qt97ra4ChRSAs=";
|
||||
};
|
||||
in
|
||||
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
installShellFiles,
|
||||
pkg-config,
|
||||
sphinx,
|
||||
python3Packages,
|
||||
glib,
|
||||
pcre,
|
||||
pcre2,
|
||||
@@ -25,13 +24,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mydumper";
|
||||
version = "0.17.1-1";
|
||||
version = "0.18.1-1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
tag = "v${version}";
|
||||
hash = "sha256-PidivIe9zzLeRpn9ECfF6qVmkP/Xd+6kIYQXo64V9fM=";
|
||||
hash = "sha256-7CnNcaZ2jLlLx211DA5Zk3uf724yCMpt/0zgjvZl3fM=";
|
||||
# as of mydumper v0.16.5-1, mydumper extracted its docs into a submodule
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
@@ -45,11 +44,7 @@ stdenv.mkDerivation rec {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
# for docs
|
||||
sphinx
|
||||
python3Packages.furo
|
||||
python3Packages.sphinx-copybutton
|
||||
python3Packages.sphinx-inline-tabs
|
||||
installShellFiles
|
||||
];
|
||||
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
@@ -73,7 +68,6 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBUILD_DOCS=ON"
|
||||
"-DCMAKE_SKIP_BUILD_RPATH=ON"
|
||||
"-DMYSQL_INCLUDE_DIR=${lib.getDev libmysqlclient}/include/mysql"
|
||||
];
|
||||
@@ -92,14 +86,13 @@ stdenv.mkDerivation rec {
|
||||
# as of mydumper v0.14.5-1, mydumper tries to install its config to /etc
|
||||
substituteInPlace CMakeLists.txt\
|
||||
--replace-fail "/etc" "$out/etc"
|
||||
|
||||
# as of mydumper v0.16.5-1, mydumper disables building docs by default
|
||||
substituteInPlace CMakeLists.txt\
|
||||
--replace-fail "# add_subdirectory(docs)" "add_subdirectory(docs)"
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
cp -r $src/docs/images ./docs
|
||||
# copy man files & docs over
|
||||
postInstall = ''
|
||||
installManPage $src/docs/man/*
|
||||
mkdir -p $doc/share/doc/mydumper
|
||||
cp -r $src/docs/html/* $doc/share/doc/mydumper
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script {
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "nix-search-tv";
|
||||
version = "2.0.0";
|
||||
version = "2.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "3timeslazy";
|
||||
repo = "nix-search-tv";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-C8RTUwTkMgROipLgoDrm3L5aTBwOJ+cVr38xx1+sJCQ=";
|
||||
hash = "sha256-bQrn7tX1Pe1glH84OSO96Ud0bG/aq+HxdzQwyNFB3R4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-0spLr6Qn2eQZC5Wwe6d+0o6B3r9CIgJt2X5/E/UMvg8=";
|
||||
vendorHash = "sha256-hgZWppiy+P3BfoKOMClzCot1shKcGTZnsMCJ/ItxckE=";
|
||||
|
||||
subPackages = [ "cmd/nix-search-tv" ];
|
||||
|
||||
|
||||
@@ -7,19 +7,19 @@
|
||||
}:
|
||||
let
|
||||
pname = "open-webui";
|
||||
version = "0.5.16";
|
||||
version = "0.5.18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "open-webui";
|
||||
repo = "open-webui";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-ki8Ac/xMs+wD5GWEgPTe+uIXrYnWtaOwLIxmxscz5sw=";
|
||||
hash = "sha256-SFw5bCzMSBuzIzZmhA+ylXXkouZ+OSsMBfc7QG7OSLU=";
|
||||
};
|
||||
|
||||
frontend = buildNpmPackage {
|
||||
inherit pname version src;
|
||||
|
||||
npmDepsHash = "sha256-e6pVy06h3QjFTSV62ZsaBrZO+atZbKGsBcCY/gQ2mQo=";
|
||||
npmDepsHash = "sha256-rEV68SizR7NyYsRzlndg/ulvr8BeiDq3MpiBmaCUn2M=";
|
||||
|
||||
# Disabling `pyodide:fetch` as it downloads packages during `buildPhase`
|
||||
# Until this is solved, running python packages from the browser will not work.
|
||||
@@ -74,8 +74,10 @@ python312.pkgs.buildPythonApplication rec {
|
||||
anthropic
|
||||
apscheduler
|
||||
argon2-cffi
|
||||
asgiref
|
||||
async-timeout
|
||||
authlib
|
||||
azure-ai-documentintelligence
|
||||
azure-identity
|
||||
azure-storage-blob
|
||||
bcrypt
|
||||
@@ -107,6 +109,7 @@ python312.pkgs.buildPythonApplication rec {
|
||||
langdetect
|
||||
langfuse
|
||||
ldap3
|
||||
loguru
|
||||
markdown
|
||||
moto
|
||||
nltk
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user