mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-06 17:13:24 -05:00
Merge staging-next into staging
This commit is contained in:
commit
aac123ef69
155 changed files with 2186 additions and 902 deletions
|
|
@ -1,85 +0,0 @@
|
|||
# This expression will, as efficiently as possible, dump a
|
||||
# *superset* of all attrpaths of derivations which might be
|
||||
# part of a release on *any* platform.
|
||||
#
|
||||
# This expression runs single-threaded under all current Nix
|
||||
# implementations, but much faster and with much less memory
|
||||
# used than ./outpaths.nix itself.
|
||||
#
|
||||
# Once you have the list of attrnames you can split it up into
|
||||
# $NUM_CORES batches and evaluate the outpaths separately for each
|
||||
# batch, in parallel.
|
||||
#
|
||||
# To dump the attrnames:
|
||||
#
|
||||
# nix-instantiate --eval --strict --json ci/eval/attrpaths.nix -A names
|
||||
#
|
||||
{
|
||||
lib ? import (path + "/lib"),
|
||||
trace ? false,
|
||||
path ? ./../..,
|
||||
extraNixpkgsConfigJson ? "{}",
|
||||
}:
|
||||
let
|
||||
|
||||
# TODO: Use mapAttrsToListRecursiveCond when this PR lands:
|
||||
# https://github.com/NixOS/nixpkgs/pull/395160
|
||||
justAttrNames =
|
||||
path: value:
|
||||
let
|
||||
result =
|
||||
if path == [ "AAAAAASomeThingsFailToEvaluate" ] || !(lib.isAttrs value) then
|
||||
[ ]
|
||||
else if lib.isDerivation value then
|
||||
[ path ]
|
||||
else
|
||||
lib.pipe value [
|
||||
(lib.mapAttrsToList (
|
||||
name: value:
|
||||
lib.addErrorContext "while evaluating package set attribute path '${
|
||||
lib.showAttrPath (path ++ [ name ])
|
||||
}'" (justAttrNames (path ++ [ name ]) value)
|
||||
))
|
||||
lib.concatLists
|
||||
];
|
||||
in
|
||||
lib.traceIf trace "** ${lib.showAttrPath path}" result;
|
||||
|
||||
outpaths = import ./outpaths.nix {
|
||||
inherit path;
|
||||
extraNixpkgsConfig = builtins.fromJSON extraNixpkgsConfigJson;
|
||||
attrNamesOnly = true;
|
||||
};
|
||||
|
||||
paths = [
|
||||
# Some of the following are based on variants, which are disabled with `attrNamesOnly = true`.
|
||||
# Until these have been removed from release.nix / hydra, we manually add them to the list.
|
||||
[
|
||||
"pkgsLLVM"
|
||||
"stdenv"
|
||||
]
|
||||
[
|
||||
"pkgsArocc"
|
||||
"stdenv"
|
||||
]
|
||||
[
|
||||
"pkgsZig"
|
||||
"stdenv"
|
||||
]
|
||||
[
|
||||
"pkgsStatic"
|
||||
"stdenv"
|
||||
]
|
||||
[
|
||||
"pkgsMusl"
|
||||
"stdenv"
|
||||
]
|
||||
]
|
||||
++ justAttrNames [ ] outpaths;
|
||||
|
||||
names = map lib.showAttrPath paths;
|
||||
|
||||
in
|
||||
{
|
||||
inherit paths names;
|
||||
}
|
||||
|
|
@ -2,8 +2,8 @@
|
|||
{
|
||||
lib ? import ../../lib,
|
||||
path ? ../..,
|
||||
# The file containing all available attribute paths, which are split into chunks here
|
||||
attrpathFile,
|
||||
# The file containing the preEval result
|
||||
preEvalFile,
|
||||
chunkSize,
|
||||
myChunk,
|
||||
includeBroken,
|
||||
|
|
@ -12,12 +12,13 @@
|
|||
}:
|
||||
|
||||
let
|
||||
attrpaths = lib.importJSON attrpathFile;
|
||||
myAttrpaths = lib.sublist (chunkSize * myChunk) chunkSize attrpaths;
|
||||
preEvalResult = lib.importJSON preEvalFile;
|
||||
myAttrpaths = lib.sublist (chunkSize * myChunk) chunkSize preEvalResult.paths;
|
||||
|
||||
unfiltered = import ./outpaths.nix {
|
||||
inherit path;
|
||||
inherit includeBroken systems;
|
||||
inherit (preEvalResult) attrPathsDisallowedForInternalUse;
|
||||
extraNixpkgsConfig = builtins.fromJSON extraNixpkgsConfigJson;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ let
|
|||
fileset = unions (
|
||||
map (lib.path.append ../..) [
|
||||
".version"
|
||||
"ci/eval/attrpaths.nix"
|
||||
"ci/eval/pre-eval.nix"
|
||||
"ci/eval/chunk.nix"
|
||||
"ci/eval/outpaths.nix"
|
||||
"default.nix"
|
||||
|
|
@ -56,11 +56,11 @@ let
|
|||
builtins.readFile ../../pkgs/top-level/release-supported-systems.json
|
||||
);
|
||||
|
||||
attrpathsSuperset =
|
||||
preEval =
|
||||
{
|
||||
evalSystem,
|
||||
}:
|
||||
runCommand "attrpaths-superset.json"
|
||||
runCommand "pre-eval"
|
||||
{
|
||||
src = nixpkgs;
|
||||
# Don't depend on -dev outputs to reduce closure size for CI.
|
||||
|
|
@ -73,15 +73,15 @@ let
|
|||
export NIX_STATE_DIR=$(mktemp -d)
|
||||
mkdir $out
|
||||
export GC_INITIAL_HEAP_SIZE=4g
|
||||
command time -f "Attribute eval done [%MKB max resident, %Es elapsed] %C" \
|
||||
command time -f "Pre-eval done [%MKB max resident, %Es elapsed] %C" \
|
||||
nix-instantiate --eval --strict --json --show-trace \
|
||||
"$src/ci/eval/attrpaths.nix" \
|
||||
-A paths \
|
||||
"$src/ci/eval/pre-eval.nix" \
|
||||
-A result \
|
||||
-I "$src" \
|
||||
--argstr extraNixpkgsConfigJson ${lib.escapeShellArg (builtins.toJSON extraNixpkgsConfig)} \
|
||||
--option restrict-eval true \
|
||||
--option allow-import-from-derivation false \
|
||||
--option eval-system "${evalSystem}" > $out/paths.json
|
||||
--option eval-system "${evalSystem}" > $out/result.json
|
||||
'';
|
||||
|
||||
singleSystem =
|
||||
|
|
@ -90,8 +90,8 @@ let
|
|||
# Note that this is intentionally not called `system`,
|
||||
# because `--argstr system` would only be passed to the ci/default.nix file!
|
||||
evalSystem ? builtins.currentSystem,
|
||||
# The path to the `paths.json` file from `attrpathsSuperset`
|
||||
attrpathFile ? "${attrpathsSuperset { inherit evalSystem; }}/paths.json",
|
||||
# The path to the `result.json` file from `preEval`
|
||||
preEvalFile ? "${preEval { inherit evalSystem; }}/result.json",
|
||||
}:
|
||||
let
|
||||
singleChunk = writeShellScript "single-chunk" ''
|
||||
|
|
@ -121,12 +121,12 @@ let
|
|||
--show-trace \
|
||||
--arg chunkSize "$chunkSize" \
|
||||
--arg myChunk "$myChunk" \
|
||||
--arg attrpathFile "${attrpathFile}" \
|
||||
--arg preEvalFile "${preEvalFile}" \
|
||||
--arg systems "[ \"$system\" ]" \
|
||||
--arg includeBroken ${lib.boolToString includeBroken} \
|
||||
--argstr extraNixpkgsConfigJson ${lib.escapeShellArg (builtins.toJSON extraNixpkgsConfig)} \
|
||||
-I ${nixpkgs} \
|
||||
-I ${attrpathFile} \
|
||||
-I ${preEvalFile} \
|
||||
> "$outputDir/result/$myChunk" \
|
||||
2> "$outputDir/stderr/$myChunk"
|
||||
exitCode=$?
|
||||
|
|
@ -164,7 +164,7 @@ let
|
|||
echo "System: $evalSystem"
|
||||
cores=$NIX_BUILD_CORES
|
||||
echo "Cores: $cores"
|
||||
attrCount=$(jq length "${attrpathFile}")
|
||||
attrCount=$(jq '.paths | length' "${preEvalFile}")
|
||||
echo "Attribute count: $attrCount"
|
||||
echo "Chunk size: $chunkSize"
|
||||
# Same as `attrCount / chunkSize` but rounded up
|
||||
|
|
@ -316,7 +316,7 @@ let
|
|||
in
|
||||
{
|
||||
inherit
|
||||
attrpathsSuperset
|
||||
preEval
|
||||
singleSystem
|
||||
diff
|
||||
combine
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
includeBroken ? true, # set this to false to exclude meta.broken packages from the output
|
||||
path ? ./../..,
|
||||
|
||||
# used by ./attrpaths.nix
|
||||
# used by ./pre-eval.nix
|
||||
attrNamesOnly ? false,
|
||||
|
||||
# Set this to `null` to build for builtins.currentSystem only
|
||||
|
|
@ -14,6 +14,8 @@
|
|||
builtins.readFile (path + "/pkgs/top-level/release-supported-systems.json")
|
||||
),
|
||||
|
||||
attrPathsDisallowedForInternalUse ? [ ],
|
||||
|
||||
# Customize the config used to evaluate nixpkgs
|
||||
extraNixpkgsConfig ? { },
|
||||
}:
|
||||
|
|
@ -35,6 +37,22 @@ let
|
|||
allowVariants = !attrNamesOnly;
|
||||
checkMeta = true;
|
||||
|
||||
# We don't need to care about problems being caught using the
|
||||
# standard mechanism, because any problems whose kind is not
|
||||
# nixpkgsInternalUseAllowed cause the corresponding attributes to
|
||||
# be disallowed entirely for internal use with
|
||||
# attrPathsDisallowedForInternalUse, see also ./pre-eval.nix
|
||||
problems.matchers = lib.mkForce [
|
||||
# We only need to set the broken handler to error, so that CI
|
||||
# doesn't evaluate those. No reason it couldn't evaluate them
|
||||
# afaik, but this is how it's been before.
|
||||
{
|
||||
kind = "broken";
|
||||
handler = "error";
|
||||
}
|
||||
];
|
||||
inherit attrPathsDisallowedForInternalUse;
|
||||
|
||||
# Silence the `x86_64-darwin` deprecation warning.
|
||||
allowDeprecatedx86_64Darwin = true;
|
||||
|
||||
|
|
|
|||
128
ci/eval/pre-eval.nix
Normal file
128
ci/eval/pre-eval.nix
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
# This file does a fast pre-evaluation of Nixpkgs to determine:
|
||||
# - paths: A *superset* of all attrpaths of derivations which might be part of a release on *any* platform.
|
||||
# - attrPathsDisallowedForInternalUse: Attribute paths whose meta.problems has problems whose kinds should not be used internally in Nixpkgs
|
||||
#
|
||||
# This expression runs single-threaded under all current Nix
|
||||
# implementations, but much faster and with much less memory
|
||||
# used than ./outpaths.nix itself.
|
||||
#
|
||||
# Once you have the list of attrnames you can split it up into
|
||||
# $NUM_CORES batches and evaluate the outpaths separately for each
|
||||
# batch, in parallel.
|
||||
#
|
||||
# To dump the result:
|
||||
#
|
||||
# nix-instantiate --eval --strict --json ci/eval/pre-eval.nix -A result
|
||||
#
|
||||
{
|
||||
lib ? import (path + "/lib"),
|
||||
trace ? false,
|
||||
path ? ./../..,
|
||||
extraNixpkgsConfigJson ? "{}",
|
||||
}:
|
||||
let
|
||||
|
||||
# TODO: Use mapAttrsToListRecursiveCond when this PR lands:
|
||||
# https://github.com/NixOS/nixpkgs/pull/395160
|
||||
listAttrs =
|
||||
path: value:
|
||||
let
|
||||
result =
|
||||
if path == [ "AAAAAASomeThingsFailToEvaluate" ] || !(lib.isAttrs value) then
|
||||
[ ]
|
||||
else if lib.isDerivation value then
|
||||
[
|
||||
{
|
||||
inherit path value;
|
||||
}
|
||||
]
|
||||
else
|
||||
lib.pipe value [
|
||||
(lib.mapAttrsToList (
|
||||
name: value:
|
||||
lib.addErrorContext "while evaluating package set attribute path '${
|
||||
lib.showAttrPath (path ++ [ name ])
|
||||
}'" (listAttrs (path ++ [ name ]) value)
|
||||
))
|
||||
lib.concatLists
|
||||
];
|
||||
in
|
||||
lib.traceIf trace "** ${lib.showAttrPath path}" result;
|
||||
|
||||
outpaths = import ./outpaths.nix {
|
||||
inherit path;
|
||||
extraNixpkgsConfig = builtins.fromJSON extraNixpkgsConfigJson;
|
||||
attrNamesOnly = true;
|
||||
};
|
||||
|
||||
list =
|
||||
map
|
||||
(path: {
|
||||
inherit path;
|
||||
# This looks a bit weird, but the only reason we care about this value
|
||||
# is for the meta.problems check below, and stdenv's certainly don't
|
||||
# have any problems, so this is fine :)
|
||||
value = { };
|
||||
})
|
||||
[
|
||||
# Some of the following are based on variants, which are disabled with `attrNamesOnly = true`.
|
||||
# Until these have been removed from release.nix / hydra, we manually add them to the list.
|
||||
[
|
||||
"pkgsLLVM"
|
||||
"stdenv"
|
||||
]
|
||||
[
|
||||
"pkgsArocc"
|
||||
"stdenv"
|
||||
]
|
||||
[
|
||||
"pkgsZig"
|
||||
"stdenv"
|
||||
]
|
||||
[
|
||||
"pkgsStatic"
|
||||
"stdenv"
|
||||
]
|
||||
[
|
||||
"pkgsMusl"
|
||||
"stdenv"
|
||||
]
|
||||
]
|
||||
++ listAttrs [ ] outpaths;
|
||||
paths = map (attrs: attrs.path) list;
|
||||
names = map lib.showAttrPath paths;
|
||||
|
||||
inherit (import ../../pkgs/stdenv/generic/problems.nix { inherit lib; })
|
||||
disallowNixpkgsInternalUseKinds
|
||||
;
|
||||
|
||||
# Determine the list of attributes whose packages have any meta.problems
|
||||
# with a kind that's disallowed from internal Nixpkgs use
|
||||
attrPathsDisallowedForInternalUse = lib.pipe list [
|
||||
(lib.map (
|
||||
attrs:
|
||||
attrs
|
||||
// {
|
||||
problematicProblems = builtins.tryEval (
|
||||
lib.filterAttrs (name: problem: disallowNixpkgsInternalUseKinds ? ${problem.kind}) (
|
||||
attrs.value.meta.problems or { }
|
||||
)
|
||||
);
|
||||
}
|
||||
))
|
||||
(lib.filter (attrs: attrs.problematicProblems.success && attrs.problematicProblems.value != { }))
|
||||
(lib.map (attrs: {
|
||||
attrPath = attrs.path;
|
||||
reason = "it has certain meta.problems whose kinds are disallowed: ${
|
||||
lib.generators.toPretty { } attrs.problematicProblems.value
|
||||
}";
|
||||
}))
|
||||
];
|
||||
in
|
||||
{
|
||||
# TODO: Do we still need these? Probably not
|
||||
inherit paths names;
|
||||
result = {
|
||||
inherit paths attrPathsDisallowedForInternalUse;
|
||||
};
|
||||
}
|
||||
|
|
@ -248,6 +248,43 @@ You can install the standalone parsers and queries directly without installing `
|
|||
})
|
||||
```
|
||||
|
||||
### Treesitter setup using WASM parsers and queries {#neovim-plugin-treesitter-wasm}
|
||||
|
||||
Neovim can load WASM parsers when it is built with Wasmtime support.
|
||||
In nixpkgs, WASM parser plugins are available from the `wasi32` cross package set:
|
||||
|
||||
```nix
|
||||
(pkgs.wrapNeovim (pkgs.neovim-unwrapped.override { wasmSupport = true; }) {
|
||||
configure = {
|
||||
packages.myPlugins =
|
||||
with pkgs.pkgsCross.wasi32.vimPlugins;
|
||||
let
|
||||
# Select the grammars you need
|
||||
treesitter-grammars = with nvim-treesitter-parsers; [
|
||||
nix
|
||||
python
|
||||
];
|
||||
# Queries are needed for treesitter based syntax highlighting and folds.
|
||||
treesitter-queries = map (p: p.associatedQuery) treesitter-grammars;
|
||||
in
|
||||
{
|
||||
start = [
|
||||
# regular plugins
|
||||
]
|
||||
++ treesitter-grammars
|
||||
++ treesitter-queries;
|
||||
};
|
||||
};
|
||||
})
|
||||
```
|
||||
|
||||
Do not install both native and WASM parsers for the same language.
|
||||
For example, installing both `pkgs.vimPlugins.nvim-treesitter-parsers.nix` and
|
||||
`pkgs.pkgsCross.wasi32.vimPlugins.nvim-treesitter-parsers.nix` is invalid because Neovim
|
||||
loads the first `parser/nix.*` found on `runtimepath`.
|
||||
|
||||
Use `:checkhealth vim.treesitter` to verify Nix-managed WASM parsers.
|
||||
|
||||
You can enable treesitter features for installed grammars in a `FileType` autocommand
|
||||
or in an `ftplugin/<language>.lua` script, e.g.
|
||||
|
||||
|
|
|
|||
|
|
@ -224,6 +224,9 @@
|
|||
"neovim-luarocks-based-plugins": [
|
||||
"index.html#neovim-luarocks-based-plugins"
|
||||
],
|
||||
"neovim-plugin-treesitter-wasm": [
|
||||
"index.html#neovim-plugin-treesitter-wasm"
|
||||
],
|
||||
"nixpkgs-manual": [
|
||||
"index.html#nixpkgs-manual"
|
||||
],
|
||||
|
|
|
|||
|
|
@ -4396,6 +4396,13 @@
|
|||
githubId = 48105979;
|
||||
name = "Caitlin Davitt";
|
||||
};
|
||||
cakeforcat = {
|
||||
email = "julia@cakeforcat.dev";
|
||||
github = "cakeforcat";
|
||||
githubId = 37912991;
|
||||
name = "Julia Czarny";
|
||||
matrix = "@cakeforcat:matrix.org";
|
||||
};
|
||||
calavera = {
|
||||
email = "david.calavera@gmail.com";
|
||||
github = "calavera";
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@
|
|||
|
||||
- [Stump](https://www.stumpapp.dev/), a free and open source comics, manga and digital book server with OPDS support. Available as [services.stump](#opt-services.stump.enable).
|
||||
|
||||
- [Freescout](https://freescout.net/), a free, open source Helpdesk and shared mailbox. Available as [services.freescout](#opt-services.freescout.enable).
|
||||
|
||||
- [FlapAlerted](https://github.com/Kioubit/FlapAlerted), detects BGP flapping events and provides statistics based on BGP update messages. Available as [services.flap-alerted](#opt-services.flap-alerted.enable).
|
||||
|
||||
- [Unpackerr](https://unpackerr.zip), extracts downloads for Radarr, Sonarr, Lidarr, Readarr, and/or a Watch folder. Available as [services.unpackerr](#opt-services.unpackerr.enable).
|
||||
|
|
|
|||
|
|
@ -1664,6 +1664,7 @@
|
|||
./services/web-apps/firefly-iii.nix
|
||||
./services/web-apps/flarum.nix
|
||||
./services/web-apps/fluidd.nix
|
||||
./services/web-apps/freescout.nix
|
||||
./services/web-apps/freshrss.nix
|
||||
./services/web-apps/froide-govplan.nix
|
||||
./services/web-apps/galene.nix
|
||||
|
|
|
|||
487
nixos/modules/services/web-apps/freescout.nix
Normal file
487
nixos/modules/services/web-apps/freescout.nix
Normal file
|
|
@ -0,0 +1,487 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
# Simple alias variables
|
||||
user = "freescout";
|
||||
group = user;
|
||||
cfg = config.services.freescout;
|
||||
datadir = "/var/lib/freescout";
|
||||
cachedir = "/var/cache/freescout";
|
||||
fpmService = "phpfpm-${user}";
|
||||
|
||||
# Generated config and more complex templates / default variables
|
||||
autoDb = if !cfg.databaseSetup.enable then false else cfg.databaseSetup.kind;
|
||||
dbService = lib.optional (autoDb != false) (
|
||||
if autoDb == "mysql" then "mysql.service" else "postgresql.service"
|
||||
);
|
||||
db_config = lib.optionalAttrs (autoDb != false) (
|
||||
if autoDb == "mysql" then
|
||||
{
|
||||
DB_CONNECTION = "mysql";
|
||||
DB_HOST = "";
|
||||
DB_SOCKET = "/run/mysqld/mysqld.sock";
|
||||
DB_USERNAME = user;
|
||||
DB_DATABASE = user;
|
||||
}
|
||||
else
|
||||
{
|
||||
DB_CONNECTION = "pgsql";
|
||||
DB_HOST = "/run/postgresql";
|
||||
DB_DATABASE = user;
|
||||
DB_USERNAME = user;
|
||||
}
|
||||
);
|
||||
|
||||
raw_config = {
|
||||
APP_ENV = "production";
|
||||
APP_FORCE_HTTPS = true;
|
||||
APP_URL = "https://${cfg.domain}";
|
||||
APP_TIMEZONE = config.time.timeZone;
|
||||
APP_DISABLE_UPDATING = true;
|
||||
}
|
||||
// cfg.settings
|
||||
// db_config;
|
||||
app_config = dropNull raw_config;
|
||||
baseService = {
|
||||
path = [
|
||||
pkgs.ps
|
||||
artisanWrapped
|
||||
];
|
||||
requires = [
|
||||
# Using requires (instead of wants) since a failing config
|
||||
# is indeed critical and should not allow this service to continue
|
||||
"freescout-setup.service"
|
||||
]
|
||||
++ dbService;
|
||||
serviceConfig = {
|
||||
User = user;
|
||||
Group = group;
|
||||
};
|
||||
};
|
||||
|
||||
# Custom built packages / files / scripts
|
||||
phpPackage = cfg.phpPackage.buildEnv {
|
||||
# As of php8.5 opcache is required and automatically compiled in and thus is not available in
|
||||
# all anymore. To keep compatibility with older versions, still add if available.
|
||||
extensions =
|
||||
{ all, enabled }: enabled ++ [ all.iconv ] ++ (lib.optional (all ? opcache) all.opcache);
|
||||
# Don't log anything because we are not sure, if this may leak secrets
|
||||
# Logging can be increased, if we have time to check the logging library
|
||||
extraConfig = ''
|
||||
error_reporting = 0
|
||||
'';
|
||||
};
|
||||
|
||||
package = cfg.package.overrideAttrs (prev: {
|
||||
pname = "${prev.pname}-${cfg.domain}";
|
||||
postInstall = prev.postInstall or "" + ''
|
||||
ln -s ${datadir} $out/share/freescout/data
|
||||
'';
|
||||
});
|
||||
|
||||
artisanWrapped = pkgs.writeShellApplication {
|
||||
name = "artisan-wrapped";
|
||||
runtimeInputs = with pkgs; [
|
||||
util-linux
|
||||
];
|
||||
text = ''
|
||||
cd ${datadir}
|
||||
_runuser='exec'
|
||||
if [[ "$USER" != ${user} ]]; then
|
||||
_runuser='exec runuser --user ${user}'
|
||||
fi
|
||||
''${_runuser} ${lib.getExe phpPackage} ${package}/share/freescout/artisan "$@"
|
||||
'';
|
||||
};
|
||||
configFile = mkEnvFile "freescout.env" app_config;
|
||||
allSecrets = lib.catAttrs "_secret" (lib.collect isSecret app_config);
|
||||
|
||||
configSetupScript = pkgs.writeShellScript "freescout-config-setup" ''
|
||||
set -o errexit -o pipefail -o nounset -o errtrace
|
||||
shopt -s inherit_errexit
|
||||
PATH=${lib.makeBinPath [ pkgs.replace-secret ]}:$PATH
|
||||
cp ${configFile} "/tmp/raw.env";
|
||||
${mkSecretsReplacement "/tmp/raw.env" allSecrets}
|
||||
install -T --mode 400 -o ${user} -g ${group} "/tmp/raw.env" "${datadir}/.env"
|
||||
rm "/tmp/raw.env"
|
||||
'';
|
||||
|
||||
freescoutSetupScript =
|
||||
let
|
||||
rwPaths = [
|
||||
"storage/app"
|
||||
"storage/framework"
|
||||
"storage/framework/sessions"
|
||||
"storage/framework/views"
|
||||
"storage/framework/cache/data"
|
||||
"storage/logs"
|
||||
"bootstrap/cache"
|
||||
"public/css/builds"
|
||||
"public/js/builds"
|
||||
"Modules"
|
||||
"public/modules"
|
||||
];
|
||||
in
|
||||
''
|
||||
set -x
|
||||
umask 027
|
||||
# Working arround https://github.com/freescout-helpdesk/freescout/issues/2547
|
||||
# and having to manually clear cache when migrating from something around
|
||||
# ~1.8.159 (╯°□°)╯︵ ┻━┻
|
||||
# See: https://github.com/freescout-help-desk/freescout/issues/4366#issuecomment-2495993397
|
||||
rm -f ${datadir}/bootstrap/cache.php ${datadir}/bootstrap/cache/{config,packages,services}.php
|
||||
|
||||
ln -sf "${artisanWrapped}/bin/artisan-wrapped" "${datadir}/artisan"
|
||||
${lib.concatMapStringsSep "\n" (p: "mkdir -p ${datadir}/${p}") rwPaths}
|
||||
|
||||
# Migrate database and stuff
|
||||
# This does migrate, cache:clear, queue:restart
|
||||
${lib.getExe artisanWrapped} freescout:after-app-update
|
||||
'';
|
||||
|
||||
# Helper functions
|
||||
isSecret = v: lib.isAttrs v && v ? _secret && lib.strings.isConvertibleWithToString v._secret;
|
||||
hashSecret = p: builtins.hashString "sha256" (toString p);
|
||||
dropNull = lib.filterAttrsRecursive (
|
||||
_: v:
|
||||
!lib.elem v [
|
||||
null
|
||||
[ ]
|
||||
{ }
|
||||
]
|
||||
);
|
||||
mkEnvVars = lib.generators.toKeyValue {
|
||||
mkKeyValue =
|
||||
k: v:
|
||||
let
|
||||
value =
|
||||
with builtins;
|
||||
if isInt v then
|
||||
toString v
|
||||
else if isString v then
|
||||
v
|
||||
else if isBool v then
|
||||
lib.boolToString v
|
||||
else if isSecret v then
|
||||
hashSecret v._secret
|
||||
else
|
||||
throw "freescout: ${k} has unsupported type ${typeOf v}: ${(lib.generators.toPretty { }) v}";
|
||||
in
|
||||
"${k}=${value}";
|
||||
};
|
||||
mkEnvFile = fname: values: pkgs.writeText fname (mkEnvVars values);
|
||||
mkSecretsReplacement =
|
||||
filePath:
|
||||
lib.concatMapStringsSep "\n" (
|
||||
sp:
|
||||
"replace-secret ${
|
||||
lib.escapeShellArgs [
|
||||
(hashSecret sp)
|
||||
sp
|
||||
]
|
||||
} ${filePath}"
|
||||
);
|
||||
in
|
||||
{
|
||||
options.services.freescout = with lib; {
|
||||
enable = mkEnableOption "FreeScout helpdesk application";
|
||||
|
||||
package = mkPackageOption pkgs "freescout" { };
|
||||
|
||||
phpPackage = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.php;
|
||||
description = "The php package to use";
|
||||
defaultText = literalExpression "pkgs.php";
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
type = types.str;
|
||||
description = "Domain the freescout installation will run under";
|
||||
example = "support.mydomain.net";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = with types; attrsOf anything;
|
||||
apply = mapAttrs' (
|
||||
k: v: {
|
||||
name = toUpper k;
|
||||
value = v;
|
||||
}
|
||||
);
|
||||
default = { };
|
||||
description = ''
|
||||
Settings to be set in the `.env` file. See
|
||||
<https://github.com/freescout-help-desk/freescout/blob/master/.env.example>
|
||||
for reference on available environment variables.
|
||||
|
||||
Will be merged with the shown defaults.
|
||||
'';
|
||||
defaultText = lib.literalExpression ''
|
||||
{
|
||||
APP_ENV = "production";
|
||||
APP_FORCE_HTTPS = true;
|
||||
APP_URL = "https://''${config.services.freescout.domain}";
|
||||
APP_TIMEZONE = config.time.timeZone;
|
||||
APP_DISABLE_UPDATING = true;
|
||||
}
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
# NOTE: MUST be 256 bits (32 bytes) in length, the form of base64:<base64 encoded key> is recommended.
|
||||
# You can generate a valid one using `echo "base64:$(openssl rand -base64 32)"`
|
||||
APP_KEY_FILE = "/run/secret/freescout/app_key";
|
||||
DB_CONNECTION = "mysql";
|
||||
DB_HOST = "localhost";
|
||||
DB_PORT = 3306;
|
||||
DB_DATABASE = "freescout";
|
||||
DB_USERNAME = "freescout";
|
||||
DB_PASSWORD._secret = "/run/secret/freescout/db_pass";
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
poolConfig = mkOption {
|
||||
type =
|
||||
with types;
|
||||
attrsOf (oneOf [
|
||||
str
|
||||
int
|
||||
bool
|
||||
]);
|
||||
default = {
|
||||
"pm" = "ondemand";
|
||||
"pm.max_children" = 32;
|
||||
"pm.process_idle_timeout" = "120s";
|
||||
"pm.max_requests" = 500;
|
||||
};
|
||||
description = ''
|
||||
Options for the freescout PHP pool. See the documentation on `php-fpm.conf`
|
||||
for details on configuration directives.
|
||||
'';
|
||||
};
|
||||
|
||||
databaseSetup = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
description = "Whether to enable automatic database setup and configuration";
|
||||
default = true;
|
||||
};
|
||||
|
||||
kind = mkOption {
|
||||
type = types.enum [
|
||||
"mysql"
|
||||
"pgsql"
|
||||
];
|
||||
default = "pgsql";
|
||||
example = "mysql";
|
||||
description = "Type of database to automatically set up";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = (app_config ? "APP_KEY" || app_config ? "APP_KEY_FILE");
|
||||
message = "`services.freescout.settings.APP_KEY_FILE` is required!";
|
||||
}
|
||||
];
|
||||
|
||||
warnings =
|
||||
lib.optional (app_config ? "APP_KEY" && lib.isString app_config.APP_KEY)
|
||||
"`services.freescout.settings.APP_KEY` will be stored in the world readable nix store. Use `APP_KEY._secret` or `APP_KEY_FILE` instead!";
|
||||
|
||||
users.users.${user} = {
|
||||
inherit group;
|
||||
isSystemUser = true;
|
||||
createHome = true;
|
||||
home = datadir;
|
||||
homeMode = "750";
|
||||
};
|
||||
users.users.${config.services.nginx.user}.extraGroups = [ group ];
|
||||
users.groups.${group} = { };
|
||||
|
||||
services.postgresql = lib.mkIf (autoDb == "pgsql") {
|
||||
enable = true;
|
||||
ensureUsers = [
|
||||
{
|
||||
name = user;
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
ensureDatabases = [
|
||||
app_config.DB_DATABASE
|
||||
];
|
||||
};
|
||||
|
||||
services.mysql = lib.mkIf (autoDb == "mysql") {
|
||||
enable = true;
|
||||
package = lib.mkDefault pkgs.mariadb;
|
||||
ensureUsers = [
|
||||
{
|
||||
name = user;
|
||||
ensurePermissions = {
|
||||
"${app_config.DB_DATABASE}.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}
|
||||
];
|
||||
ensureDatabases = [
|
||||
app_config.DB_DATABASE
|
||||
];
|
||||
};
|
||||
|
||||
services.phpfpm.pools.${user} = {
|
||||
inherit phpPackage user group;
|
||||
|
||||
phpOptions = ''
|
||||
display_errors = On
|
||||
display_startup_errors = On
|
||||
'';
|
||||
settings = {
|
||||
"listen.owner" = user;
|
||||
"listen.group" = config.services.nginx.group;
|
||||
"catch_workers_output" = true;
|
||||
}
|
||||
// cfg.poolConfig;
|
||||
};
|
||||
|
||||
systemd.services.${fpmService} = {
|
||||
# Somehow the webinterface shows
|
||||
inherit (baseService) path;
|
||||
};
|
||||
|
||||
systemd.services.freescout-setup = lib.recursiveUpdate baseService {
|
||||
description = "Preparational tasks for freescout";
|
||||
requires = dbService;
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = dbService;
|
||||
script = freescoutSetupScript;
|
||||
serviceConfig = {
|
||||
PrivateTmp = true;
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
ExecStartPre = "+${configSetupScript}";
|
||||
};
|
||||
};
|
||||
|
||||
# This needs to be manually started again and again
|
||||
# Freescout has its own scheduler built in to ensure tasks run at the desired frequency
|
||||
# --no-interaction makes sure, that the queue worker is not executed.
|
||||
# This is needed, because otherweise the queue worker process would continue running
|
||||
# thus block further schedule invocations until the queue worker terminates.
|
||||
# See https://github.com/freescout-help-desk/freescout/blob/74fa4b7d4f8288f8d3fb1d343308d3289c4d72e2/app/Console/Kernel.php#L195-L267
|
||||
systemd.services."freescout-schedule-run" = baseService // {
|
||||
startAt = "minutely";
|
||||
script = "${lib.getExe artisanWrapped} schedule:run --no-interaction";
|
||||
};
|
||||
|
||||
# This is both long-running but also stops quite frequently.
|
||||
# Seeing job restart counts in the thousands here is normal.
|
||||
systemd.services."freescout-queue" = lib.recursiveUpdate baseService {
|
||||
# Copying the output to storage/logs because it makes
|
||||
# debugging connection issues easier for the user.
|
||||
script = ''
|
||||
${lib.getExe artisanWrapped} \
|
||||
queue:work \
|
||||
--queue emails,default \
|
||||
--sleep=5 \
|
||||
-vv \
|
||||
--tries=20 \
|
||||
| tee -a ${datadir}/storage/logs/queue-jobs.log
|
||||
'';
|
||||
serviceConfig = {
|
||||
RestartSec = "15s";
|
||||
RuntimeMaxSec = "1h";
|
||||
Restart = "always";
|
||||
};
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "freescout-setup.service" ] ++ dbService;
|
||||
};
|
||||
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
virtualHosts.${cfg.domain} =
|
||||
let
|
||||
vhostCfg = config.services.nginx.virtualHosts.${cfg.domain};
|
||||
optSsl = lib.optionalString (vhostCfg.forceSSL || vhostCfg.onlySSL) "fastcgi_param HTTPS on;";
|
||||
in
|
||||
{
|
||||
root = lib.mkForce "${package}/share/freescout/public";
|
||||
|
||||
locations = {
|
||||
"/" = {
|
||||
index = "index.php";
|
||||
tryFiles = "$uri $uri/ /index.php$is_args$args";
|
||||
|
||||
extraConfig = ''
|
||||
# Defeats E-Mail open tracking or possibly "real" exploits
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
||||
add_header Content-Security-Policy "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'";
|
||||
'';
|
||||
};
|
||||
|
||||
"~ \\.php$" = {
|
||||
tryFiles = "$uri $uri/ =404";
|
||||
extraConfig = ''
|
||||
fastcgi_index index.php;
|
||||
include ${pkgs.nginx}/conf/fastcgi_params;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_pass unix:${config.services.phpfpm.pools.${user}.socket};
|
||||
${optSsl}
|
||||
|
||||
# Defeats E-Mail open tracking or possibly "real" exploits
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
||||
add_header Content-Security-Policy "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'";
|
||||
'';
|
||||
};
|
||||
|
||||
"~* ^/storage/attachment/" = {
|
||||
tryFiles = "$uri $uri/ /index.php?$query_string";
|
||||
extraConfig = ''
|
||||
expires 1M;
|
||||
access_log off;
|
||||
'';
|
||||
};
|
||||
|
||||
"~* ^/(?:css|js)/.*\\.(?:css|js)$".extraConfig = ''
|
||||
expires 2d;
|
||||
access_log off;
|
||||
add_header Cache-Control "public, must-revalidate";
|
||||
# Defeats E-Mail open tracking or possibly "real" exploits
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
||||
add_header Content-Security-Policy "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'";
|
||||
'';
|
||||
|
||||
"~* ^/(?:css|fonts|img|installer|js|modules)$".extraConfig = ''
|
||||
expires 1M;
|
||||
access_log off;
|
||||
add_header Cache-Control "public, must-revalidate";
|
||||
'';
|
||||
|
||||
"~ /\\.".extraConfig = ''
|
||||
deny all;
|
||||
'';
|
||||
"^~ /(css|js)/builds/".root = "${cachedir}/public/";
|
||||
"^~ /storage/app/attachment/" = {
|
||||
alias = "${datadir}/storage/app/attachment/";
|
||||
extraConfig = ''
|
||||
internal;
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -632,6 +632,9 @@ in
|
|||
forgejoPackage = pkgs.forgejo-lts;
|
||||
};
|
||||
freenet = runTest ./freenet.nix;
|
||||
freescout = import ./freescout {
|
||||
inherit runTest;
|
||||
};
|
||||
freeswitch = runTest ./freeswitch.nix;
|
||||
freetube = discoverTests (import ./freetube.nix);
|
||||
freshrss = import ./freshrss { inherit runTest; };
|
||||
|
|
|
|||
5
nixos/tests/freescout/default.nix
Normal file
5
nixos/tests/freescout/default.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{ runTest }:
|
||||
{
|
||||
integration = runTest ./integration.nix;
|
||||
upgrade = runTest ./upgrade.nix;
|
||||
}
|
||||
195
nixos/tests/freescout/integration.nix
Normal file
195
nixos/tests/freescout/integration.nix
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
# This tests runs freescout and performs the following tests:
|
||||
# - Create amin user via the CLI
|
||||
# - Create mailbox, configured for sending and receiving
|
||||
# - Test if receiving, sending and notifications work
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
mailDomain = "freemail.local";
|
||||
freescoutDomain = "freescout.local";
|
||||
sendInitial = pkgs.writeShellScriptBin "send-initial" ''
|
||||
exec ${pkgs.dovecot}/libexec/dovecot/deliver -d freescout <<MAIL
|
||||
From: root@localhost
|
||||
To: freescout@localhost
|
||||
Subject: Hello NixOS!
|
||||
Message-ID: initialtestmail-$(date +%s)@localhost
|
||||
|
||||
I am just a test E-Mail to see if freescout is (somewhat) working.
|
||||
MAIL
|
||||
'';
|
||||
|
||||
keyFile = pkgs.writeText "freescout-app-key" "base64:J8ZgK5LZkhVKpmZvjjA700sNL7+Y6aQTus8ZnUNNAaE=";
|
||||
|
||||
baseTestNode =
|
||||
{
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
virtualisation.memorySize = 1024;
|
||||
environment.systemPackages = with pkgs; [
|
||||
curl
|
||||
sendInitial
|
||||
jq
|
||||
];
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
80
|
||||
8025
|
||||
];
|
||||
networking.extraHosts = ''
|
||||
127.0.0.1 ${mailDomain} ${freescoutDomain}
|
||||
'';
|
||||
|
||||
services.mailhog = {
|
||||
enable = true;
|
||||
setSendmail = false;
|
||||
};
|
||||
|
||||
users.users.alice = {
|
||||
isNormalUser = true;
|
||||
description = "Alice Foobar";
|
||||
password = "foobar";
|
||||
uid = 1000;
|
||||
};
|
||||
|
||||
users.users.bob = {
|
||||
isNormalUser = true;
|
||||
description = "Bob Foobar";
|
||||
password = "foobar";
|
||||
};
|
||||
|
||||
# Taken from from the parsedmarc.nix test
|
||||
services.postfix.enable = true;
|
||||
services.dovecot2 = {
|
||||
enable = true;
|
||||
settings = {
|
||||
dovecot_config_version = "2.4.4";
|
||||
dovecot_storage_version = "2.4.4";
|
||||
mail_uid = "vmail";
|
||||
mail_gid = "vmail";
|
||||
protocols = [
|
||||
"imap"
|
||||
"lmtp"
|
||||
];
|
||||
mail_driver = "maildir";
|
||||
mail_home = "${config.services.postfix.settings.main.mail_spool_directory}/{user}";
|
||||
"passdb static" = {
|
||||
fields = {
|
||||
nopassword = true;
|
||||
allow_nets = "local,0.0.0.0/0,::/0";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
users.users.freescout = {
|
||||
password = "foobar2342";
|
||||
};
|
||||
|
||||
services.freescout = {
|
||||
enable = true;
|
||||
domain = freescoutDomain;
|
||||
settings = {
|
||||
APP_KEY._secret = toString keyFile;
|
||||
APP_FORCE_HTTPS = false;
|
||||
APP_URL = "http://${freescoutDomain}";
|
||||
APP_REMOTE_HOST_WHITE_LIST = "localhost,127.0.0.1,::1";
|
||||
APP_DEBUG = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
mkNode =
|
||||
dbType:
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
baseTestNode
|
||||
];
|
||||
services.freescout.databaseSetup = {
|
||||
enable = true;
|
||||
kind = dbType;
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "freescout-integration";
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
e1mo
|
||||
];
|
||||
|
||||
nodes = {
|
||||
# This may lead to duplicate tests, but ensures that
|
||||
# it's always tested on the current default version
|
||||
# even if the tests are not updated
|
||||
freescout_pgsql = mkNode "pgsql";
|
||||
|
||||
# Same as the freescout_pgsql_default node
|
||||
freescout_mysql = mkNode "mysql";
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
for machine in [freescout_pgsql]:
|
||||
machine.wait_for_unit("postgresql")
|
||||
|
||||
for machine in [freescout_mysql]:
|
||||
machine.wait_for_unit("mysql")
|
||||
|
||||
all=[
|
||||
freescout_pgsql,
|
||||
freescout_mysql
|
||||
]
|
||||
|
||||
for machine in all:
|
||||
machine.wait_for_unit("nginx")
|
||||
machine.wait_for_unit("dovecot")
|
||||
machine.wait_for_unit("mailhog")
|
||||
machine.wait_for_open_port(1025)
|
||||
machine.wait_for_open_port(8025)
|
||||
machine.wait_for_unit("freescout-setup")
|
||||
|
||||
with subtest("Login works"):
|
||||
machine.succeed("/var/lib/freescout/artisan freescout:create-user --role=admin --firstName=Xenia --lastName=TheFox --email xenia@${freescoutDomain} --no-interaction --password=foo | grep 'User created with id'")
|
||||
token=machine.succeed("curl -fsSL --cookie-jar cjar 'http://${freescoutDomain}/login' | grep -Po '(?<= name=\"_token\" value=\")(\\w+)(?=\")'").strip()
|
||||
data=f"email=xenia%40${freescoutDomain}&password=foo&_token={token}&remember=on"
|
||||
machine.succeed(f"curl -sSfX POST --cookie-jar cjar --cookie cjar --data-raw '{data}' 'http://${freescoutDomain}/login' | grep 'Redirecting to'")
|
||||
machine.succeed("curl -fsSL --cookie-jar cjar --cookie cjar 'http://${freescoutDomain}' | grep 'Dashboard'")
|
||||
# Enable all (most except following) notifications
|
||||
to_enable=list(range(1, 9))
|
||||
enable_data="&".join(map(lambda n: "subscriptions%5B1%5D%5B%5D=" + str(n), range(1,9)))
|
||||
data=f"_token={token}&{enable_data}"
|
||||
machine.succeed(f"curl -sSfX POST --cookie-jar cjar --cookie cjar --data-raw '{data}' 'http://${freescoutDomain}/users/notifications/1'")
|
||||
|
||||
with subtest("Create and edit Mailbox"):
|
||||
data=f"email=freescout%40${mailDomain}&name=Test+Mailbox&_token={token}"
|
||||
machine.succeed(f"curl -sSfX POST --cookie-jar cjar --cookie cjar --data-raw '{data}' 'http://${freescoutDomain}/mailbox/new'")
|
||||
machine.succeed("curl -fsSL --cookie-jar cjar --cookie cjar 'http://${freescoutDomain}' | grep 'Test Mailbox'")
|
||||
machine.succeed("curl -sSf --cookie-jar cjar --cookie cjar 'http://${freescoutDomain}/mailbox/1' | grep 'freescout@${mailDomain}'")
|
||||
data=f"out_method=3&out_server=localhost&out_port=1025&out_username=&out_password=&out_encryption=1&_token={token}"
|
||||
machine.succeed(f"curl -sSfX POST --cookie-jar cjar --cookie cjar --data-raw '{data}' 'http://${freescoutDomain}/mailbox/connection-settings/1/outgoing'")
|
||||
data=f"&in_protocol=1&in_server=localhost&in_port=143&in_username=freescout&in_password=super_secret&in_encryption=1&in_imap_folders%5B%5D=INBOX&imap_sent_folder=&_token={token}"
|
||||
machine.succeed(f"curl -fsSX POST --cookie-jar cjar --cookie cjar --data-raw '{data}' 'http://${freescoutDomain}/mailbox/connection-settings/1/incoming'")
|
||||
data="&action=fetch_test&mailbox_id=1"
|
||||
machine.succeed(f"test $(curl -sSfX POST --cookie-jar cjar --cookie cjar -H 'X-CSRF-TOKEN: {token}' --data-raw '{data}' 'http://${freescoutDomain}/mailbox/ajax' | jq -r '.status') = 'success'")
|
||||
|
||||
with subtest("Send E-Mails"):
|
||||
machine.succeed("send-initial")
|
||||
|
||||
# Doing a second loop so that we won't have to wait that much
|
||||
for machine in all:
|
||||
with subtest("E-Mails ae received"):
|
||||
machine.wait_until_succeeds("curl -sSf --cookie-jar cjar --cookie cjar 'http://${freescoutDomain}/mailbox/1' | grep 'Hello NixOS'", timeout=180)
|
||||
# Notifactions to users are being sent
|
||||
|
||||
for machine in all:
|
||||
with subtest("Notifications are sent"):
|
||||
machine.wait_until_succeeds("test $(curl -sSf http://127.0.0.1:8025/api/v2/messages | jq '.total') -eq 1", timeout=180)
|
||||
machine.succeed("curl -sSf http://127.0.0.1:8025/api/v2/messages | jq '.items[].Content.Headers[\"X-FreeScout-Mail-Type\"] | .[0]'")
|
||||
|
||||
with subtest("Ensure vars are being generated"):
|
||||
machine.succeed("curl -sSf 'http://${freescoutDomain}/'")
|
||||
machine.succeed("curl -sSf 'http://${freescoutDomain}/storage/js/vars.js'")
|
||||
'';
|
||||
}
|
||||
94
nixos/tests/freescout/upgrade.nix
Normal file
94
nixos/tests/freescout/upgrade.nix
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
# This tests checks, wether upgrading between versions works fine
|
||||
# In the past, there have been releases that would require manual deletion of specific
|
||||
# cache files, otherwise bricking the installation.
|
||||
# This test should catch similar instances in the future.
|
||||
# The oldFreescoutVersion may need a bump from time to time as there may be incompatibilities
|
||||
# with up-to-date databases on older freescout versions.
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
freescoutDomain = "freescout.local";
|
||||
|
||||
oldFreescoutVersion = pkgs.freescout.overrideAttrs (oa: rec {
|
||||
version = "1.8.220";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "freescout-help-desk";
|
||||
repo = "freescout";
|
||||
tag = version;
|
||||
hash = "sha256-bOkazBcd9EKzQdZZA6YMn4+UNYhpDFV9hDMHR5kXke0=";
|
||||
};
|
||||
});
|
||||
newFreescoutVersion = pkgs.freescout;
|
||||
in
|
||||
{
|
||||
name = "freescout-upgrade";
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
e1mo
|
||||
];
|
||||
|
||||
nodes.machine =
|
||||
{ config, lib, ... }:
|
||||
{
|
||||
networking.extraHosts = ''
|
||||
127.0.0.1 ${freescoutDomain}
|
||||
'';
|
||||
virtualisation.memorySize = 1024;
|
||||
environment.systemPackages = with pkgs; [
|
||||
curl
|
||||
jq
|
||||
];
|
||||
services.freescout = {
|
||||
package = oldFreescoutVersion;
|
||||
enable = true;
|
||||
domain = freescoutDomain;
|
||||
settings = {
|
||||
APP_KEY = "base64:J8ZgK5LZkhVKpmZvjjA700sNL7+Y6aQTus8ZnUNNAaE=";
|
||||
APP_FORCE_HTTPS = false;
|
||||
APP_URL = "http://${freescoutDomain}:8888";
|
||||
APP_DEBUG = true;
|
||||
};
|
||||
databaseSetup = {
|
||||
enable = true;
|
||||
kind = "pgsql";
|
||||
};
|
||||
};
|
||||
specialisation.upgrade.configuration.services.freescout.package = lib.mkForce newFreescoutVersion;
|
||||
};
|
||||
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
oldVersion = nodes.machine.services.freescout.package.version;
|
||||
newVersion = nodes.machine.specialisation.upgrade.configuration.services.freescout.package.version;
|
||||
in
|
||||
''
|
||||
machine.start()
|
||||
machine.wait_for_unit("nginx")
|
||||
machine.wait_for_unit("postgresql")
|
||||
machine.wait_for_unit("freescout-setup")
|
||||
|
||||
with subtest("Create user and log in"):
|
||||
# Create uesr
|
||||
machine.succeed("/var/lib/freescout/artisan freescout:create-user --role=admin --firstName=Xenia --lastName=TheFox --email xenia@${freescoutDomain} --no-interaction --password=foo | grep 'User created with id'")
|
||||
# Obtain CSRF token
|
||||
token=machine.succeed("curl -fsSL --cookie-jar cjar 'http://${freescoutDomain}/login' | grep -Po '(?<= name=\"_token\" value=\")(\w+)(?=\")'").strip()
|
||||
# Actually log in
|
||||
data=f"email=xenia%40${freescoutDomain}&password=foo&_token={token}&remember=on"
|
||||
machine.succeed(f"curl -sSfX POST --cookie-jar cjar --cookie cjar --data-raw '{data}' 'http://${freescoutDomain}/login' | grep 'Redirecting to'")
|
||||
|
||||
with subtest("Check old API version"):
|
||||
machine.succeed("curl -fsSL --cookie-jar cjar --cookie cjar 'http://${freescoutDomain}/system/status' | grep ${oldVersion}")
|
||||
|
||||
machine.execute("${nodes.machine.system.build.toplevel}/specialisation/upgrade/bin/switch-to-configuration test >&2")
|
||||
|
||||
machine.wait_for_unit("nginx")
|
||||
machine.wait_for_unit("freescout-setup")
|
||||
|
||||
with subtest("Check new API version"):
|
||||
machine.succeed("curl -fsSL --cookie-jar cjar --cookie cjar 'http://${freescoutDomain}/system/status' | grep ${newVersion}")
|
||||
'';
|
||||
}
|
||||
|
|
@ -230,13 +230,11 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
"aarch64-linux"
|
||||
"x86_64-linux"
|
||||
];
|
||||
# FIXME: gated behind allowAliases to workaround https://github.com/NixOS/nixpkgs/issues/523712
|
||||
problems =
|
||||
lib.optionalAttrs config.allowAliases {
|
||||
removal.message = "We have removed Python 3.3 package support ahead of upstream schedule but if you do not use any old packages, this should just work.";
|
||||
}
|
||||
// lib.optionalAttrs (lib.versionOlder buildVersion "4205") {
|
||||
broken.message = "Packages, including core ones, do not run without plug-in host depending on insecure OpenSSL.";
|
||||
};
|
||||
problems = {
|
||||
removal.message = "We have removed Python 3.3 package support ahead of upstream schedule but if you do not use any old packages, this should just work.";
|
||||
}
|
||||
// lib.optionalAttrs (lib.versionOlder buildVersion "4205") {
|
||||
broken.message = "Packages, including core ones, do not run without plug-in host depending on insecure OpenSSL.";
|
||||
};
|
||||
};
|
||||
})
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@
|
|||
vimPlugins,
|
||||
vimUtils,
|
||||
makeWrapper,
|
||||
pkgs,
|
||||
perl,
|
||||
}:
|
||||
let
|
||||
version = "0.0.27-unstable-2026-03-11";
|
||||
version = "release-v0.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "yetone";
|
||||
repo = "avante.nvim";
|
||||
rev = "9a7793461549939f1d52b2b309a1aa44680170c8";
|
||||
hash = "sha256-EEkAoufj29P46RIUrRNG0xJL9Wu4X7LZCS1fer4/nZQ=";
|
||||
rev = "2033b42ab72fb9f27b35769f9cb7a9f4f1993db4";
|
||||
hash = "sha256-Ql/17DSHpBVbihUHssyZe3MGC5fgasbjgxdABp8xk24=";
|
||||
};
|
||||
avante-nvim-lib = rustPlatform.buildRustPackage {
|
||||
pname = "avante-nvim-lib";
|
||||
|
|
@ -28,7 +28,7 @@ let
|
|||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
makeWrapper
|
||||
pkgs.perl
|
||||
perl
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
|
@ -66,15 +66,12 @@ vimUtils.buildVimPlugin {
|
|||
ext = stdenv.hostPlatform.extensions.sharedLibrary;
|
||||
in
|
||||
''
|
||||
mkdir -p $out/build
|
||||
cp ${avante-nvim-lib}/lib/libavante_repo_map${ext} $out/build/avante_repo_map${ext}
|
||||
cp ${avante-nvim-lib}/lib/libavante_templates${ext} $out/build/avante_templates${ext}
|
||||
cp ${avante-nvim-lib}/lib/libavante_tokenizers${ext} $out/build/avante_tokenizers${ext}
|
||||
cp ${avante-nvim-lib}/lib/libavante_html2md${ext} $out/build/avante_html2md${ext}
|
||||
|
||||
# Fixes PKCE auth flows not finding libcrypto
|
||||
substituteInPlace "$out/lua/avante/auth/pkce.lua" \
|
||||
--replace-fail 'pcall(ffi.load, "crypto")' 'pcall(ffi.load, "${lib.getLib openssl}/lib/libcrypto${ext}")'
|
||||
# place dynamic shared libraries directly into lua/ for native C-module discovery
|
||||
mkdir -p $out/lua
|
||||
cp ${avante-nvim-lib}/lib/libavante_repo_map${ext} $out/lua/avante_repo_map${ext}
|
||||
cp ${avante-nvim-lib}/lib/libavante_templates${ext} $out/lua/avante_templates${ext}
|
||||
cp ${avante-nvim-lib}/lib/libavante_tokenizers${ext} $out/lua/avante_tokenizers${ext}
|
||||
cp ${avante-nvim-lib}/lib/libavante_html2md${ext} $out/lua/avante_html2md${ext}
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
|
|
|
|||
|
|
@ -2031,8 +2031,8 @@ let
|
|||
mktplcRef = {
|
||||
name = "gleam";
|
||||
publisher = "gleam";
|
||||
version = "2.12.2";
|
||||
hash = "sha256-41HgkDcgyStJtyeE0x1H9rFOZ18imcKF7XQixDOmurE=";
|
||||
version = "2.13.0";
|
||||
hash = "sha256-eCiBbdKMeXcRS4kyI2rH1iAT0CmQmo2SybeW+Y7FRio=";
|
||||
};
|
||||
meta = {
|
||||
description = "Support for the Gleam programming language";
|
||||
|
|
|
|||
|
|
@ -7,19 +7,19 @@
|
|||
let
|
||||
supported = {
|
||||
x86_64-linux = {
|
||||
hash = "sha256-8KZE2+kpzU7fRRBsroZtCnJyPyUHPuysZrggZojpG98=";
|
||||
hash = "sha256-YLic8tKnb6WSx4rdwTu8B2ybfjoSbXc+QfEZ0Vc4umo=";
|
||||
arch = "linux-x64";
|
||||
};
|
||||
x86_64-darwin = {
|
||||
hash = "sha256-Zf/O2KRDlzCi4qWnmT5CctagjJoLiNgZfnh5+gQWRAA=";
|
||||
hash = "sha256-nbftXgjEAxGfT4sfTjd+bp+Ti/rWJGHLkaSXQWlRGBM=";
|
||||
arch = "darwin-x64";
|
||||
};
|
||||
aarch64-linux = {
|
||||
hash = "sha256-zN49L+gLrLNL7XM3+POgBgSX64IMUYtNZ54+i8lpLqE=";
|
||||
hash = "sha256-FG6OIoeeDenMbgwM/ZE8YyTySt/XcoFJj1RxvlrPsXc=";
|
||||
arch = "linux-arm64";
|
||||
};
|
||||
aarch64-darwin = {
|
||||
hash = "sha256-vTf86rNeS/97//1D2e1h5DpnAFb1cceIuF5XyCCq520=";
|
||||
hash = "sha256-FW+pmz8YTw6pYxx1x3UsT3Dtp00GT804MJX4HBarMZo=";
|
||||
arch = "darwin-arm64";
|
||||
};
|
||||
};
|
||||
|
|
@ -34,7 +34,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
|||
mktplcRef = base // {
|
||||
name = "tombi";
|
||||
publisher = "tombi-toml";
|
||||
version = "1.1.3";
|
||||
version = "1.1.5";
|
||||
};
|
||||
meta = {
|
||||
description = "TOML Language Server";
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"chromium": {
|
||||
"version": "149.0.7827.196",
|
||||
"version": "149.0.7827.200",
|
||||
"chromedriver": {
|
||||
"version": "149.0.7827.197",
|
||||
"hash_darwin": "sha256-tN7s6s/pbfAGRCMcoT3QWYHD8QRq2gcHfFSXoSG9V5Y=",
|
||||
"hash_darwin_aarch64": "sha256-DZ8CZ4Obp67Zo2m4iyqUnShyhTK8+/75cJ/WmZZqQhE="
|
||||
"version": "149.0.7827.201",
|
||||
"hash_darwin": "sha256-MHCcid+7wdYm8uIdrUIlXrk8ADHNUUXzPyMPFGP98WY=",
|
||||
"hash_darwin_aarch64": "sha256-Gwmdo9qNyV/BnCj18f0BFpNgDf28e8vjNF98e5/vVjQ="
|
||||
},
|
||||
"deps": {
|
||||
"depot_tools": {
|
||||
|
|
@ -21,8 +21,8 @@
|
|||
"DEPS": {
|
||||
"src": {
|
||||
"url": "https://chromium.googlesource.com/chromium/src.git",
|
||||
"rev": "43eb30368c6ca3d14d540487954abb2780aeae3a",
|
||||
"hash": "sha256-pwSfASgR4SiQTJBERhOVyR8mANYJk67f+u2pmCCW6ko=",
|
||||
"rev": "c35c164b1b6d1adca9eddf914ed6d0d0743dba6a",
|
||||
"hash": "sha256-b2gBRUzRjqVZEb/tWUL1JF6Afq5gHJ3aOM02My1FyYU=",
|
||||
"recompress": true
|
||||
},
|
||||
"src/third_party/clang-format/script": {
|
||||
|
|
@ -823,7 +823,7 @@
|
|||
}
|
||||
},
|
||||
"ungoogled-chromium": {
|
||||
"version": "149.0.7827.196",
|
||||
"version": "149.0.7827.200",
|
||||
"deps": {
|
||||
"depot_tools": {
|
||||
"rev": "45dedc4c3b87c982fd846b3dc599b233ed3aff90",
|
||||
|
|
@ -835,16 +835,16 @@
|
|||
"hash": "sha256-oFs7fZAZEs/gQ7X1A4uigo9+Y+iEN9sMMQYwAjEuD04="
|
||||
},
|
||||
"ungoogled-patches": {
|
||||
"rev": "149.0.7827.196-1",
|
||||
"hash": "sha256-nRcMTP+su+mFP/JkyLBIDrG+dKYhvPANFw0Y8qVWzrA="
|
||||
"rev": "149.0.7827.200-1",
|
||||
"hash": "sha256-D7c1ToAoUzAMpXoe60YPimRqe6/LRe0T95TduXUeTFo="
|
||||
},
|
||||
"npmHash": "sha256-pF0JtwFpPC4/fodbhSJnQKkczA9WlDg4VqEAy9aDVLg="
|
||||
},
|
||||
"DEPS": {
|
||||
"src": {
|
||||
"url": "https://chromium.googlesource.com/chromium/src.git",
|
||||
"rev": "43eb30368c6ca3d14d540487954abb2780aeae3a",
|
||||
"hash": "sha256-pwSfASgR4SiQTJBERhOVyR8mANYJk67f+u2pmCCW6ko=",
|
||||
"rev": "c35c164b1b6d1adca9eddf914ed6d0d0743dba6a",
|
||||
"hash": "sha256-b2gBRUzRjqVZEb/tWUL1JF6Afq5gHJ3aOM02My1FyYU=",
|
||||
"recompress": true
|
||||
},
|
||||
"src/third_party/clang-format/script": {
|
||||
|
|
|
|||
|
|
@ -1067,11 +1067,11 @@
|
|||
"vendorHash": null
|
||||
},
|
||||
"ovh_ovh": {
|
||||
"hash": "sha256-rNJ6ibD8VbvUopKYc6Ao6I7lJqTw6gw8A71YzW8OYJE=",
|
||||
"hash": "sha256-JaZdCten+5mV8aKCRhkoifqP4EwNrytK25TLJl1eQjQ=",
|
||||
"homepage": "https://registry.terraform.io/providers/ovh/ovh",
|
||||
"owner": "ovh",
|
||||
"repo": "terraform-provider-ovh",
|
||||
"rev": "v2.14.0",
|
||||
"rev": "v2.15.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "ab-av1";
|
||||
version = "0.11.3";
|
||||
version = "0.11.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "alexheretic";
|
||||
repo = "ab-av1";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-lLZAECwF8V19Qx/FugbjLeVns7lhVlwWDTK9cdYb0xo=";
|
||||
hash = "sha256-830STu0YfEhsYr4EU3ATF6kgH5J/tUEhm4b47VOwMEQ=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-AONJz1BoDi6weHT7W9DmzwoPW5khfgYjDqLNl7OM5bY=";
|
||||
cargoHash = "sha256-mKtP+QoG0MjbBB4kMLlioyxshlgVyhqLH4C5GKx9Hes=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
|||
|
||||
dependencies = with python3Packages; [
|
||||
configobj
|
||||
gpgme
|
||||
gpg
|
||||
notmuch2
|
||||
python-magic
|
||||
standard-mailcap
|
||||
|
|
|
|||
|
|
@ -9,14 +9,14 @@
|
|||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "ansible-doctor";
|
||||
version = "8.3.2";
|
||||
version = "8.3.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "thegeeklab";
|
||||
repo = "ansible-doctor";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Asp26tGyzFPOCLESXe2Je4i+0u8OGX2GSaGy/cQC3AI=";
|
||||
hash = "sha256-3xdMTuy6Rtb2VwfzN6SV73UZmp+9fmU9SfPySHCayJg=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
fetchurl,
|
||||
makeWrapper,
|
||||
makeDesktopItem,
|
||||
genericUpdater,
|
||||
writeShellScript,
|
||||
jq,
|
||||
atk,
|
||||
cairo,
|
||||
gdk-pixbuf,
|
||||
|
|
@ -164,24 +164,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = genericUpdater {
|
||||
versionLister =
|
||||
let
|
||||
arch =
|
||||
if system == "x86_64-linux" then
|
||||
"amd64"
|
||||
else if system == "aarch64-linux" then
|
||||
"arm64"
|
||||
else
|
||||
throw "cannot update AnyDesk on ${system}";
|
||||
in
|
||||
writeShellScript "anydesk-versionLister" ''
|
||||
curl -s https://anydesk.com/en/downloads/linux \
|
||||
| grep "https://[a-z0-9._/-]*-${arch}.tar.gz" -o \
|
||||
| uniq \
|
||||
| sed 's,.*/anydesk-\(.*\)-${arch}.tar.gz,\1,g'
|
||||
'';
|
||||
};
|
||||
updateScript = ./update.sh;
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "8.0.2",
|
||||
"x86_64-linux": "sha256-6noMPfe0x6kx/whyd66qcmk7WhEivx3xK5q58Se9Ij0=",
|
||||
"aarch64-linux": "sha256-wfY+OCx9OyLCmiA29RjnYzcg/pApMIXWT5UrcdcyRYM="
|
||||
"version": "8.0.3",
|
||||
"x86_64-linux": "sha256-Mjl17hh5A/pwRAi7giL1SJYlQ61O0SXX+KeH8STZ4bs=",
|
||||
"aarch64-linux": "sha256-MhAj5cy81uBMoNeFPvOyhBOlJzBgNRHXyCXrpdvF8nE="
|
||||
}
|
||||
|
|
|
|||
39
pkgs/by-name/an/anydesk/update.sh
Executable file
39
pkgs/by-name/an/anydesk/update.sh
Executable file
|
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/env -S nix shell nixpkgs#curl nixpkgs#jq nixpkgs#nix --command bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
directory="$(dirname $0 | xargs realpath)"
|
||||
|
||||
new_version=$(
|
||||
curl -s https://rpm.anydesk.com/rhel/x86_64/Packages/ \
|
||||
| grep -oP 'anydesk_\K[0-9]+\.[0-9]+\.[0-9]+(?=-[0-9]+_x86_64\.rpm)' \
|
||||
| sort -V \
|
||||
| tail -1
|
||||
)
|
||||
|
||||
old_version=$(jq -r '.version' "$directory/pin.json")
|
||||
|
||||
if [[ "$new_version" == "$old_version" ]]; then
|
||||
echo "anydesk is already up to date ($old_version)"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Updating anydesk: $old_version -> $new_version"
|
||||
|
||||
hash_amd64=$(nix hash to-sri --type sha256 \
|
||||
"$(nix-prefetch-url --type sha256 \
|
||||
"https://download.anydesk.com/linux/anydesk-${new_version}-amd64.tar.gz")")
|
||||
|
||||
hash_arm64=$(nix hash to-sri --type sha256 \
|
||||
"$(nix-prefetch-url --type sha256 \
|
||||
"https://download.anydesk.com/rpi/anydesk-${new_version}-arm64.tar.gz")")
|
||||
|
||||
cat > "$directory/pin.json" << EOF
|
||||
{
|
||||
"version": "$new_version",
|
||||
"x86_64-linux": "$hash_amd64",
|
||||
"aarch64-linux": "$hash_arm64"
|
||||
}
|
||||
EOF
|
||||
|
||||
cat "$directory/pin.json"
|
||||
|
|
@ -11,13 +11,13 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "apko";
|
||||
version = "1.2.17";
|
||||
version = "1.2.19";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "chainguard-dev";
|
||||
repo = "apko";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-6Z+1LpgvdRpcy2PmgSFeKHuMLh3jeA03KhfS2j2AhKQ=";
|
||||
hash = "sha256-Iia0U/oibPuUYC3adeXvL5m4nhEPHqBvHw7J7Uxn88s=";
|
||||
# populate values that require us to use git. By doing this in postFetch we
|
||||
# can delete .git afterwards and maintain better reproducibility of the src.
|
||||
leaveDotGit = true;
|
||||
|
|
@ -29,7 +29,7 @@ buildGoModule (finalAttrs: {
|
|||
find "$out" -name .git -print0 | xargs -0 rm -rf
|
||||
'';
|
||||
};
|
||||
vendorHash = "sha256-K2fqDAzex0EgrGPK5I4Bp5oqmIOnnuI1sztlySrX1Pc=";
|
||||
vendorHash = "sha256-vYUxwtqGUDbJhbhlajPtlUZKD4TKreHEGR1dCSuSiA4=";
|
||||
|
||||
excludedPackages = [
|
||||
"internal/gen-jsonschema"
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "atlantis";
|
||||
version = "0.44.0";
|
||||
version = "0.44.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "runatlantis";
|
||||
repo = "atlantis";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-ZHd/RSzFXbcZ7324Bbgtx681zwdHi5xYgqVlTR4glHY=";
|
||||
hash = "sha256-CMMsW0VFUi5c2AsuvH5uxggzJ3wD1k24Zrk4tjlBczo=";
|
||||
};
|
||||
|
||||
ldflags = [
|
||||
|
|
|
|||
|
|
@ -62,4 +62,8 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
# (node:24500) Warning: File descriptor 19 closed but not opened in unmanaged mode
|
||||
# (node:24500) Warning: File descriptor 19 opened in unmanaged mode twice
|
||||
meta.broken = stdenv.hostPlatform.isDarwin;
|
||||
})
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "basalt";
|
||||
version = "0.12.4";
|
||||
version = "0.12.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "erikjuhani";
|
||||
repo = "basalt";
|
||||
tag = "basalt/v${finalAttrs.version}";
|
||||
hash = "sha256-fijpPGPeF3f81WMWj1tIc0ht8hUIubAe19ja3iBNOh0=";
|
||||
hash = "sha256-MlKrVxNU9PNakIA9hiv5ll7ImkPDekQnassWFO/smkE=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-jY3EDM+jYwCsMpd5cA5WKzmhdS4rVCLz3h5gfshzhOQ=";
|
||||
cargoHash = "sha256-sTU0AUwR5xdnqLvrRycxuMk+KNcsEcYU3XvyODKT1Ns=";
|
||||
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
doInstallCheck = true;
|
||||
|
|
|
|||
|
|
@ -14,31 +14,24 @@
|
|||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "bitwarden-cli";
|
||||
version = "2026.5.0";
|
||||
version = "2026.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bitwarden";
|
||||
repo = "clients";
|
||||
tag = "cli-v${finalAttrs.version}";
|
||||
hash = "sha256-R00wt5W4kKmFIODEaGoUqDwfGyHH/2PpiRaC8Gq3d88=";
|
||||
hash = "sha256-JIIis3wW0cU33ovRQfJi3HlB2YdLZ5IPvueq1dGFbas=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# remove code under unfree license
|
||||
rm -r bitwarden_license
|
||||
|
||||
# Upstream cli-v2026.4.1 bumps @napi-rs/cli to 3.5.1 in the desktop workspace,
|
||||
# but the root lockfile still points that entry at 3.2.0.
|
||||
substituteInPlace package-lock.json \
|
||||
--replace-fail \
|
||||
$' "apps/desktop/node_modules/@napi-rs/cli": {\n "version": "3.2.0",\n "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-3.2.0.tgz",\n "integrity": "sha512-heyXt/9OBPv/WrTFW2+PxIMzH6MCeqP9ZsvOg0LN6pLngBnszcxFsdhCAh5I6sddzQsvru53zj59GUzvmpWk8Q==",' \
|
||||
$' "apps/desktop/node_modules/@napi-rs/cli": {\n "version": "3.5.1",\n "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-3.5.1.tgz",\n "integrity": "sha512-XBfLQRDcB3qhu6bazdMJsecWW55kR85l5/k0af9BIBELXQSsCFU0fzug7PX8eQp6vVdm7W/U3z6uP5WmITB2Gw==",'
|
||||
'';
|
||||
|
||||
nodejs = nodejs_22;
|
||||
npmDepsFetcherVersion = 2;
|
||||
|
||||
npmDepsHash = "sha256-SU4HjfNshjRwa8mXPnmG2xVIwYkbQ7g8j3NZ43Ap76k=";
|
||||
npmDepsHash = "sha256-sXFSjQw9iM5Ye03BX+ZzpDfeAyLTJoG/k46NiI3O8+A=";
|
||||
|
||||
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
perl
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "buildkit";
|
||||
version = "0.31.0";
|
||||
version = "0.31.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "moby";
|
||||
repo = "buildkit";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-mTYNyz2H980l7/Vcyf9wnEgmi2j6S63C9ZcwOaK/+YY=";
|
||||
hash = "sha256-lpcbCPsnvwMULeZgo1eQ0AqlfsyOMO/7b3ZOCoVTDKk=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ python3.pkgs.buildPythonApplication (finalAttrs: {
|
|||
propagatedBuildInputs = with python3.pkgs; [
|
||||
anytree
|
||||
fuzzyfinder
|
||||
gpgme
|
||||
gpg
|
||||
pygobject3
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ buildGoModule (finalAttrs: {
|
|||
meta = {
|
||||
description = "Skip YouTube sponsorships (and sometimes ads) on all local Google Cast devices";
|
||||
homepage = "https://github.com/gabe565/CastSponsorSkip";
|
||||
mainProgram = "castsponsorskip";
|
||||
changelog = "https://github.com/gabe565/CastSponsorSkip/releases";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
{
|
||||
"version": "3.7.42",
|
||||
"version": "3.9.8",
|
||||
"vscodeVersion": "1.105.1",
|
||||
"sources": {
|
||||
"x86_64-linux": {
|
||||
"url": "https://downloads.cursor.com/production/5702c9cfca656d8710fad58402fe37f14345e3ac/linux/x64/Cursor-3.7.42-x86_64.AppImage",
|
||||
"hash": "sha256-o7c220esGj2qrLDt88zQ+XpAMbhJGoky5iNFB/qhvtU="
|
||||
"url": "https://downloads.cursor.com/production/4aa8ff1b7877ed7bd01bcba308698f71a6735380/linux/x64/Cursor-3.9.8-x86_64.AppImage",
|
||||
"hash": "sha256-xcyFowrW5yzIDCwbFGmpDRSNa3OUXsHwpLkbyNcSzqM="
|
||||
},
|
||||
"aarch64-linux": {
|
||||
"url": "https://downloads.cursor.com/production/5702c9cfca656d8710fad58402fe37f14345e3ac/linux/arm64/Cursor-3.7.42-aarch64.AppImage",
|
||||
"hash": "sha256-PjVgVemRY66zY/gXcgYCVzSwkC5aCJeMsNreceQzWI4="
|
||||
"url": "https://downloads.cursor.com/production/4aa8ff1b7877ed7bd01bcba308698f71a6735380/linux/arm64/Cursor-3.9.8-aarch64.AppImage",
|
||||
"hash": "sha256-ZhRMvfJkt8NZT45tYxfO2gBFaVw6hR2nVeRzmrxQfeE="
|
||||
},
|
||||
"x86_64-darwin": {
|
||||
"url": "https://downloads.cursor.com/production/5702c9cfca656d8710fad58402fe37f14345e3ac/darwin/x64/Cursor-darwin-x64.dmg",
|
||||
"hash": "sha256-AiS0Iswdp8DAZV6cFA7uIYSE24ystuqJRz0YGJkkmDE="
|
||||
"url": "https://downloads.cursor.com/production/4aa8ff1b7877ed7bd01bcba308698f71a6735380/darwin/x64/Cursor-darwin-x64.dmg",
|
||||
"hash": "sha256-IOQsZQAncDgZGEnCZWg/LQqD/PquFifBmuk2hnJ1L/s="
|
||||
},
|
||||
"aarch64-darwin": {
|
||||
"url": "https://downloads.cursor.com/production/5702c9cfca656d8710fad58402fe37f14345e3ac/darwin/arm64/Cursor-darwin-arm64.dmg",
|
||||
"hash": "sha256-e6VrLs/tj+FkEbUJN4RpQKNAbWCS/mEo1drVQFErXU0="
|
||||
"url": "https://downloads.cursor.com/production/4aa8ff1b7877ed7bd01bcba308698f71a6735380/darwin/arm64/Cursor-darwin-arm64.dmg",
|
||||
"hash": "sha256-GxpBKyx0Yo3e8AUS9Oxei/hHm1m3JdxMKjX7qAxUGm4="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ maven.buildMavenPackage {
|
|||
homepage = "https://github.com/Athou/commafeed";
|
||||
license = lib.licenses.asl20;
|
||||
mainProgram = "commafeed";
|
||||
maintainers = [ ];
|
||||
maintainers = with lib.maintainers; [ svrana ];
|
||||
broken = stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isAarch64;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "cruise";
|
||||
version = "1.1.0";
|
||||
version = "2.2.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NucleoFusion";
|
||||
repo = "cruise";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-0xIugbLlKlMODbMvsFzQXjKNNGY61tF4P/0loPlfs6o=";
|
||||
hash = "sha256-AhLSzynNvtHK3URTd1034/2ToGcJUDp7rGMtr3kyees=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Zx1rZl5ljlsBNV1eQKPtQ+SgJV9l5rS8hwBe8nX9dYQ=";
|
||||
|
|
@ -23,7 +23,7 @@ buildGoModule (finalAttrs: {
|
|||
meta = {
|
||||
description = "TUI for managing Docker containers, images, volumes, networks, and more";
|
||||
homepage = "https://github.com/NucleoFusion/cruise";
|
||||
license = lib.licenses.mit;
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ greatnatedev ];
|
||||
mainProgram = "cruise";
|
||||
platforms = lib.platforms.linux;
|
||||
|
|
|
|||
|
|
@ -27,15 +27,15 @@ assert lib.assertMsg (lib.elem true [
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "diesel-cli";
|
||||
version = "2.3.9";
|
||||
version = "2.3.10";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit version;
|
||||
crateName = "diesel_cli";
|
||||
hash = "sha256-aFve5n38EO7cqfYcb0AIEbOfY+Xs3oXlUIkNJdBxXr4=";
|
||||
hash = "sha256-ePoFjIzLUQ4GpPIObhIsg0NvvM1VcVf++IDdTI3XjXw=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-TAkZLwVaMvopkbh9kPvIhEHckQom+k8rkVNut7a31do=";
|
||||
cargoHash = "sha256-lGVUxYrZ81YvJncGGw7VQ8bl74aYOyHsEKDIMCwc7lw=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
installShellFiles
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "dix";
|
||||
version = "2.0.1";
|
||||
version = "2.1.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
|
|
@ -15,10 +15,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
|||
owner = "manic-systems";
|
||||
repo = "dix";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-KTlFgBEVKJIXymfN2UU8hvGM71PYRcNgJ1XWUmG2AI4=";
|
||||
hash = "sha256-+9I6WuPOc8Lj7NAxe19phlFiDypGQywopZ3dZK9d6F4=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-pNkSdsxOpv0E/xXs7tMg2vtP0PBU7p8fh3H4IX/u5k4=";
|
||||
cargoHash = "sha256-k/of0KX2wBWh/etybbKn81O5UgJF0ylc2fl+HK8uIRQ=";
|
||||
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
doInstallCheck = true;
|
||||
|
|
|
|||
108
pkgs/by-name/ds/ds4u/package.nix
Normal file
108
pkgs/by-name/ds/ds4u/package.nix
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitea,
|
||||
rustPlatform,
|
||||
pkg-config,
|
||||
systemd,
|
||||
hidapi,
|
||||
openssl,
|
||||
libxkbcommon,
|
||||
alsa-lib,
|
||||
vulkan-loader,
|
||||
wayland,
|
||||
libx11,
|
||||
libxcursor,
|
||||
libxi,
|
||||
copyDesktopItems,
|
||||
makeDesktopItem,
|
||||
autoPatchelfHook,
|
||||
udevCheckHook,
|
||||
writeText,
|
||||
nix-update-script,
|
||||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "ds4u";
|
||||
version = "0.1.1";
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "git.yokai.digital";
|
||||
owner = "deadYokai";
|
||||
repo = "ds4u";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-q8NbpFbrYMtE56CnnjScbMewHCTxaxMih8/I9dspb+o=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-KjNHX3S+XFUsngX8Od3HtI0IvpAyMp5TB6TVkCkl8Gc=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
copyDesktopItems
|
||||
autoPatchelfHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
alsa-lib
|
||||
libxkbcommon
|
||||
vulkan-loader
|
||||
wayland
|
||||
libx11
|
||||
libxcursor
|
||||
libxi
|
||||
openssl
|
||||
systemd
|
||||
hidapi
|
||||
];
|
||||
|
||||
# autoPatchelfHook doesnt find these automatically using dlopen
|
||||
appendRunpaths = [ (lib.makeLibraryPath finalAttrs.buildInputs) ];
|
||||
|
||||
udevRules = writeText "ds4u.rules" ''
|
||||
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ce6", MODE="0664", GROUP="input", TAG+="uaccess"
|
||||
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0df2", MODE="0664", GROUP="input", TAG+="uaccess"
|
||||
'';
|
||||
|
||||
preInstall = ''
|
||||
# desktop icon install
|
||||
install -Dm644 $src/assets/icon.svg $out/share/icons/hicolor/scalable/apps/ds4u.svg
|
||||
# udev rules
|
||||
install -Dm644 ${finalAttrs.udevRules} -D $out/lib/udev/rules.d/70-ds4u.rules
|
||||
'';
|
||||
|
||||
nativeInstallCheckInputs = [ udevCheckHook ];
|
||||
doInstallCheck = true;
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "ds4u";
|
||||
desktopName = "DS4U";
|
||||
comment = finalAttrs.meta.description;
|
||||
exec = "ds4u";
|
||||
icon = "ds4u";
|
||||
terminal = false;
|
||||
type = "Application";
|
||||
categories = [
|
||||
"Utility"
|
||||
"Settings"
|
||||
"Game"
|
||||
];
|
||||
keywords = [
|
||||
"controller"
|
||||
"dualsense"
|
||||
"ps5"
|
||||
"gamepad"
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "DualSense controller manager for Linux";
|
||||
homepage = "https://git.yokai.digital/deadYokai/ds4u";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "ds4u";
|
||||
maintainers = with lib.maintainers; [ cakeforcat ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
|
@ -3,99 +3,99 @@
|
|||
"alpha": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio_linux_2.0.76.tar.xz"
|
||||
"factorio_linux_2.1.8.tar.xz"
|
||||
],
|
||||
"name": "factorio_alpha_x64-2.0.76.tar.xz",
|
||||
"name": "factorio_alpha_x64-2.1.8.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "b1e50891bdc69cce3fdaee4f840cbe4658e18d465309ac87915b6fc41900754c",
|
||||
"sha256": "307016173b824ddfa1a1be4067526273f3aafe6dc8a9c49aff7b2250c466b0b0",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.76/alpha/linux64",
|
||||
"version": "2.0.76"
|
||||
"url": "https://factorio.com/get-download/2.1.8/alpha/linux64",
|
||||
"version": "2.1.8"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio_linux_2.0.76.tar.xz"
|
||||
"factorio_linux_2.0.77.tar.xz"
|
||||
],
|
||||
"name": "factorio_alpha_x64-2.0.76.tar.xz",
|
||||
"name": "factorio_alpha_x64-2.0.77.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "b1e50891bdc69cce3fdaee4f840cbe4658e18d465309ac87915b6fc41900754c",
|
||||
"sha256": "2e7c26d999c140335abb82c5e642cdd4c98db559633562d7ad9844aff4f273ff",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.76/alpha/linux64",
|
||||
"version": "2.0.76"
|
||||
"url": "https://factorio.com/get-download/2.0.77/alpha/linux64",
|
||||
"version": "2.0.77"
|
||||
}
|
||||
},
|
||||
"demo": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-demo_linux_2.0.76.tar.xz"
|
||||
"factorio-demo_linux_2.0.77.tar.xz"
|
||||
],
|
||||
"name": "factorio_demo_x64-2.0.76.tar.xz",
|
||||
"name": "factorio_demo_x64-2.0.77.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "d5caee49636290b678d35adc59d2fc80ecbdbad8bf420731f1317971c89f941b",
|
||||
"sha256": "f2fc889de1924b551cf52ca2ce2c73251f9c20ee2ae38cc8e973415baffef2a1",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.76/demo/linux64",
|
||||
"version": "2.0.76"
|
||||
"url": "https://factorio.com/get-download/2.0.77/demo/linux64",
|
||||
"version": "2.0.77"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-demo_linux_2.0.76.tar.xz"
|
||||
"factorio-demo_linux_2.0.77.tar.xz"
|
||||
],
|
||||
"name": "factorio_demo_x64-2.0.76.tar.xz",
|
||||
"name": "factorio_demo_x64-2.0.77.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "d5caee49636290b678d35adc59d2fc80ecbdbad8bf420731f1317971c89f941b",
|
||||
"sha256": "f2fc889de1924b551cf52ca2ce2c73251f9c20ee2ae38cc8e973415baffef2a1",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.76/demo/linux64",
|
||||
"version": "2.0.76"
|
||||
"url": "https://factorio.com/get-download/2.0.77/demo/linux64",
|
||||
"version": "2.0.77"
|
||||
}
|
||||
},
|
||||
"expansion": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-space-age_linux_2.0.76.tar.xz"
|
||||
"factorio-space-age_linux_2.1.8.tar.xz"
|
||||
],
|
||||
"name": "factorio_expansion_x64-2.0.76.tar.xz",
|
||||
"name": "factorio_expansion_x64-2.1.8.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "dc24bbbc1b6a619e4425d9a720bcfafce3463d908ab369a6cd1bee1a99332b4f",
|
||||
"sha256": "92ec753d96eab63fc60f45ac45259a9427268f74bab0c15b63263f10aae0e786",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.76/expansion/linux64",
|
||||
"version": "2.0.76"
|
||||
"url": "https://factorio.com/get-download/2.1.8/expansion/linux64",
|
||||
"version": "2.1.8"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-space-age_linux_2.0.76.tar.xz"
|
||||
"factorio-space-age_linux_2.0.77.tar.xz"
|
||||
],
|
||||
"name": "factorio_expansion_x64-2.0.76.tar.xz",
|
||||
"name": "factorio_expansion_x64-2.0.77.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "dc24bbbc1b6a619e4425d9a720bcfafce3463d908ab369a6cd1bee1a99332b4f",
|
||||
"sha256": "068cd4778459569cb46e8a8acde1c404969ad533d7e479789af9fce0d29f10a4",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.76/expansion/linux64",
|
||||
"version": "2.0.76"
|
||||
"url": "https://factorio.com/get-download/2.0.77/expansion/linux64",
|
||||
"version": "2.0.77"
|
||||
}
|
||||
},
|
||||
"headless": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-headless_linux_2.0.76.tar.xz",
|
||||
"factorio_headless_x64_2.0.76.tar.xz"
|
||||
"factorio-headless_linux_2.1.8.tar.xz",
|
||||
"factorio_headless_x64_2.1.8.tar.xz"
|
||||
],
|
||||
"name": "factorio_headless_x64-2.0.76.tar.xz",
|
||||
"name": "factorio_headless_x64-2.1.8.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "ef3663f66146d76342f7c09a3f743792636f8cd95c39ea26cfca5bd2e0e92430",
|
||||
"sha256": "16b122cd5f48118cd44bcaf1d27fd933aea60b9902bbd426fd26359440759f12",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.76/headless/linux64",
|
||||
"version": "2.0.76"
|
||||
"url": "https://factorio.com/get-download/2.1.8/headless/linux64",
|
||||
"version": "2.1.8"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-headless_linux_2.0.76.tar.xz",
|
||||
"factorio_headless_x64_2.0.76.tar.xz"
|
||||
"factorio-headless_linux_2.0.77.tar.xz",
|
||||
"factorio_headless_x64_2.0.77.tar.xz"
|
||||
],
|
||||
"name": "factorio_headless_x64-2.0.76.tar.xz",
|
||||
"name": "factorio_headless_x64-2.0.77.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "ef3663f66146d76342f7c09a3f743792636f8cd95c39ea26cfca5bd2e0e92430",
|
||||
"sha256": "c4efc11529f74d37c96933e291e0db73fd9f5aa4738913d9301b24680b3e947f",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.76/headless/linux64",
|
||||
"version": "2.0.76"
|
||||
"url": "https://factorio.com/get-download/2.0.77/headless/linux64",
|
||||
"version": "2.0.77"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
From 1c749a3610fb423e50260a2c807b44a94ef4c69d Mon Sep 17 00:00:00 2001
|
||||
From: Nina Fromm <git@e1mo.de>
|
||||
Date: Thu, 25 Jun 2026 16:23:00 +0200
|
||||
Subject: [PATCH] settings: catch unwritable .env
|
||||
|
||||
---
|
||||
app/Misc/Helper.php | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/app/Misc/Helper.php b/app/Misc/Helper.php
|
||||
index 2d647b89..3fc2ef84 100644
|
||||
--- a/app/Misc/Helper.php
|
||||
+++ b/app/Misc/Helper.php
|
||||
@@ -1172,7 +1172,12 @@ class Helper
|
||||
$contents = $contents."\n{$key}={$value}\n";
|
||||
}
|
||||
}
|
||||
- \File::put($env_path, $contents);
|
||||
+ try {
|
||||
+ \File::put($env_path, $contents);
|
||||
+ } catch (\Exception $e) {
|
||||
+ \Helper::logException($e, 'Error updating ' . $key .' in .env file: ');
|
||||
+ \Session::flash('flash_error_unescaped', "Unable to write settings to <code>$env_path</code>: " . $e->getMessage());
|
||||
+ }
|
||||
}
|
||||
|
||||
/**
|
||||
--
|
||||
2.53.0
|
||||
|
||||
65
pkgs/by-name/fr/freescout/package.nix
Normal file
65
pkgs/by-name/fr/freescout/package.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
nixosTests,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
preferLocalBuild = true;
|
||||
pname = "freescout";
|
||||
version = "1.8.225";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "freescout-help-desk";
|
||||
repo = "freescout";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-kXZ6bjF36YO1p6q+KTugnBO+KxqQZci5O0RNM7lqecQ=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./0001-settings-catch-unwritable-.env.patch
|
||||
];
|
||||
|
||||
prePatch = ''
|
||||
rm -rf storage
|
||||
rm bootstrap/cache/.gitignore
|
||||
rm public/{css,js}/builds/.htaccess
|
||||
rm {Modules,public/modules}/.gitkeep
|
||||
rmdir Modules public/modules bootstrap/cache public/{css,js}/builds
|
||||
ln -rs data/.env .env
|
||||
ln -rs data/storage storage
|
||||
ln -rs data/bootstrap/cache bootstrap/cache
|
||||
ln -rs data/storage/app/public public/storage
|
||||
ln -rs data/public/css/builds public/css/builds
|
||||
ln -rs data/public/js/builds public/js/builds
|
||||
ln -rs data/Modules Modules
|
||||
ln -rs data/public/modules public/modules
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/freescout
|
||||
cp -ar . $out/share/freescout
|
||||
chmod +x $out/share/freescout/artisan
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
inherit (nixosTests) freescout;
|
||||
};
|
||||
|
||||
# Because freescout is searching for some folders only relative to it's own source location, we need to have the symlinks to the actual locations in here
|
||||
dontCheckForBrokenSymlinks = true;
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Free self-hosted help desk & shared mailbox";
|
||||
license = licenses.agpl3Only;
|
||||
homepage = "https://freescout.net/";
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ e1mo ];
|
||||
};
|
||||
})
|
||||
|
|
@ -5,49 +5,34 @@
|
|||
python3,
|
||||
}:
|
||||
|
||||
let
|
||||
py = python3.override {
|
||||
packageOverrides = self: super: {
|
||||
|
||||
# Doesn't support latest marshmallow
|
||||
marshmallow = super.marshmallow.overridePythonAttrs (oldAttrs: rec {
|
||||
version = "3.26.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "marshmallow-code";
|
||||
repo = "marshmallow";
|
||||
tag = version;
|
||||
hash = "sha256-ioe+aZHOW8r3wF3UknbTjAP0dEggd/NL9PTkPVQ46zM=";
|
||||
};
|
||||
});
|
||||
};
|
||||
};
|
||||
in
|
||||
|
||||
py.pkgs.buildPythonApplication (finalAttrs: {
|
||||
python3.pkgs.buildPythonApplication (finalAttrs: {
|
||||
pname = "ggshield";
|
||||
version = "1.50.4";
|
||||
version = "1.52.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "GitGuardian";
|
||||
repo = "ggshield";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-wwGj7i1GoxNzdfUhcL7mulgQAPtz5WhbT67hgbcMxpo=";
|
||||
hash = "sha256-bz3R1ylmkaYF3Wt/ylzeE2IsWKvZ8bmoF39Xu4tVzFU=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = true;
|
||||
|
||||
build-system = with py.pkgs; [ hatchling ];
|
||||
build-system = with python3.pkgs; [ hatchling ];
|
||||
|
||||
dependencies = with py.pkgs; [
|
||||
dependencies = with python3.pkgs; [
|
||||
charset-normalizer
|
||||
click
|
||||
configupdater
|
||||
cryptography
|
||||
filelock
|
||||
keyring
|
||||
marshmallow
|
||||
marshmallow-dataclass
|
||||
notify-py
|
||||
oauthlib
|
||||
packaging
|
||||
platformdirs
|
||||
pygitguardian
|
||||
pyjwt
|
||||
|
|
@ -56,6 +41,7 @@ py.pkgs.buildPythonApplication (finalAttrs: {
|
|||
requests
|
||||
rich
|
||||
sigstore
|
||||
tomli
|
||||
truststore
|
||||
typing-extensions
|
||||
urllib3
|
||||
|
|
@ -64,7 +50,7 @@ py.pkgs.buildPythonApplication (finalAttrs: {
|
|||
nativeCheckInputs = [
|
||||
git
|
||||
]
|
||||
++ (with py.pkgs; [
|
||||
++ (with python3.pkgs; [
|
||||
jsonschema
|
||||
pyfakefs
|
||||
pytest-factoryboy
|
||||
|
|
@ -100,6 +86,8 @@ py.pkgs.buildPythonApplication (finalAttrs: {
|
|||
"test_generate_files_from_paths"
|
||||
# Nixpkgs issue
|
||||
"test_get_file_sha_in_ref"
|
||||
# Generated hooks config references pytest binary, instead of ggshield CLI. Odd!
|
||||
"test_install_cursor_local_fresh"
|
||||
];
|
||||
|
||||
meta = {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "gitte";
|
||||
version = "0.8.0";
|
||||
version = "0.8.1";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
|
|
@ -30,12 +30,12 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
owner = "ckruse";
|
||||
repo = "Gitte";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-niVICk2RtDFA0/NK4cP+CU4uII/LcYjB+ZV60IHmr40=";
|
||||
hash = "sha256-c7GhPn7/0PzRTYQbhfvlSUMJqHs4dRqeWRMBJG2eqdc=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-hJlO4GXPg6LWBCSKTQAwAawgWwN+OckvV2t9svTsaj4=";
|
||||
hash = "sha256-yR4MYQJQMjqEs++8RhQwDV+h/blSVgFqrGYUfrPUGOg=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ python3.pkgs.buildPythonApplication (finalAttrs: {
|
|||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
dbus-python
|
||||
gpgme
|
||||
gpg
|
||||
magic-wormhole
|
||||
pygobject3
|
||||
pybluez
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "gollama";
|
||||
version = "2.0.4";
|
||||
version = "2.0.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sammcj";
|
||||
repo = "gollama";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-unvnFKkEWJnyzuNz8zekB8ZSXP/dUqv24qgyhkP3kkY=";
|
||||
hash = "sha256-LjgQSV7Z2apcdIaxk9NU7AdlPJPlt7CQ/q9nID9Px5w=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-t7Kl6WnS8vvLyvKzkDswv0yOaeTE3IgZCNAC3dD8euU=";
|
||||
vendorHash = "sha256-xpAAtJIJtETbDYwieLBI7L79SedeAOmYnHL9zq6l7Rs=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
buildGoLatestModule (finalAttrs: {
|
||||
pname = "govulncheck";
|
||||
version = "1.4.0";
|
||||
version = "1.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "golang";
|
||||
repo = "vuln";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-XiwWe/BDM9aVf5A5iZFrY57bZ8N+6iCrLL170U9ipVM=";
|
||||
hash = "sha256-Bd1YLR0grKXrvvWxDzDG2ZZ1moqY1EA9NyOtp0eBegk=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
@ -24,7 +24,7 @@ buildGoLatestModule (finalAttrs: {
|
|||
})
|
||||
];
|
||||
|
||||
vendorHash = "sha256-ajTRmrzFf+P2aXN9oVN0oXfxocS22LDPxl2mxY9wGcs=";
|
||||
vendorHash = "sha256-9daNbbrw0ZVw2aWPkMEGgIA6rhiEkL3OlhYGWUSplQw=";
|
||||
|
||||
subPackages = [
|
||||
"cmd/govulncheck"
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "infrastructure-agent";
|
||||
version = "1.76.2";
|
||||
version = "1.77.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "newrelic";
|
||||
repo = "infrastructure-agent";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-r42ochCVPAreDW+ZVeb/zrh8QwDmQL2xXytsZb6PcuU=";
|
||||
hash = "sha256-QgyQ5fP8yIgmqHqLRn927pRmngOeKcdSaxXLDkcIwqI=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-+ajMZ+kZ+m1vxyAfM+zvzTfcwkN63agdGoXPTNPC2i0=";
|
||||
|
|
|
|||
|
|
@ -38,7 +38,10 @@ in
|
|||
changelog = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/tag/v${version}";
|
||||
description = "${old.meta.description} (Jellyfin fork)";
|
||||
homepage = "https://github.com/jellyfin/jellyfin-ffmpeg";
|
||||
maintainers = with lib.maintainers; [ justinas ];
|
||||
maintainers = with lib.maintainers; [
|
||||
dotlambda
|
||||
justinas
|
||||
];
|
||||
pkgConfigModules = [ "libavutil" ];
|
||||
};
|
||||
})
|
||||
|
|
|
|||
|
|
@ -3,23 +3,23 @@
|
|||
{
|
||||
"kicad" = {
|
||||
kicadVersion = {
|
||||
version = "10.0.3";
|
||||
version = "10.0.4";
|
||||
src = {
|
||||
rev = "1d69e55fc60915f8f1569c9f6522d9b0fb5a0ba8";
|
||||
sha256 = "0ldaj072x16452xw2wszbk20g932rz36zappjrxc4m6ygx298aa3";
|
||||
rev = "314f59e84469aa2db16a36740c891781c8a09fd8";
|
||||
sha256 = "1dp2rcblpz1i5hzrv5kb7cq91agha5msm2slhny3gf8x0gbzmawq";
|
||||
};
|
||||
};
|
||||
libVersion = {
|
||||
version = "10.0.3";
|
||||
version = "10.0.4";
|
||||
libSources = {
|
||||
symbols.rev = "299c330ab364cfc3989d1ab6e82f1eabb9ddd915";
|
||||
symbols.sha256 = "05h8dbygch2kp4s5ikspxngwv999j7jwsiwm4pzwwcrir7dqzdfl";
|
||||
templates.rev = "a7e1a3ae6255d8d9aaff13e58adf3a0d78cb90c9";
|
||||
symbols.rev = "5a6700bbb3f2a3b05d123a1a1af770cfbb5bc7d3";
|
||||
symbols.sha256 = "1ns0lg360h3h55w2xv5lyj0qzy6nc1cr02vll95c0vma34rc1qwa";
|
||||
templates.rev = "32bcda122df6ae76b221155c641de3656904e786";
|
||||
templates.sha256 = "0zs29zn8qjgxv0w1vyr8yxmj02m8752zagn4vcraqgik46dwg2id";
|
||||
footprints.rev = "fe0ca39d34a10036f2b6ccb9749a39bc3fa7af95";
|
||||
footprints.sha256 = "0wdzsn7z11wc5yskk576a4a6qfagsvw0y6r034inxrnfc32aiah9";
|
||||
packages3d.rev = "c955b94c7bdeffd94b06bac86d94588a9be03afe";
|
||||
packages3d.sha256 = "01nbjcs3890hyfmafc623ldmfi9n8sjr5m0wripz5fq5fjdnzqxl";
|
||||
footprints.rev = "12095f926a3c5c37d9573ebab0c67c9eed71812f";
|
||||
footprints.sha256 = "15cz4lh6dzqdl2cc9nqnpa8bd73h5p33vnvmc4l68js5wqlsyba1";
|
||||
packages3d.rev = "9484cb1a4e193898c3f86e0cf69146bcc6e8053d";
|
||||
packages3d.sha256 = "0mkc9km540n6ri5is4fjw5abv8afidwj9q7fmbs66l6kx1z3lxky";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
cctools,
|
||||
cmake,
|
||||
fetchFromGitHub,
|
||||
git,
|
||||
|
|
@ -46,6 +47,9 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
git
|
||||
pkg-config
|
||||
python3
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
cctools.libtool
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
buildDotnetModule rec {
|
||||
pname = "libation";
|
||||
version = "13.4.5";
|
||||
version = "13.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rmcrackan";
|
||||
repo = "Libation";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-t4Fz7aqQg1WPqSKvvVbSx45M6+UNGXacFHXGjzNW67A=";
|
||||
hash = "sha256-KF7iFvVRmsWFMkFiVE4QosQmpqYeFx7yqIw7u0Cf80o=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/Source";
|
||||
|
|
|
|||
|
|
@ -9,13 +9,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "luau";
|
||||
version = "0.725";
|
||||
version = "0.726";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "luau-lang";
|
||||
repo = "luau";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-zRoB1psMrZRt8mLoaReyc0hvhRBPAotC1LmDNTYGLjA=";
|
||||
hash = "sha256-DAKyA8/ERX2AJ/XQDABOoI+cQCSW3PKnBpJkwS8IBdI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
|
|
|||
|
|
@ -13,11 +13,11 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "matio";
|
||||
version = "1.5.29";
|
||||
version = "1.5.30";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/matio/matio-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-2eX3ovLFlO/xX1UONHKbAZkc3VoCilWL6M5ZWzIjOvs=";
|
||||
hash = "sha256-i9O5R3BC7MAN1xwEdi+lhGjhTMzDL9jGgmwtoei8MQc=";
|
||||
};
|
||||
|
||||
configureFlags = [ "ac_cv_va_copy=1" ];
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "mousam";
|
||||
version = "1.4.2";
|
||||
version = "2.0.2";
|
||||
# built with meson, not a python format
|
||||
pyproject = false;
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
|||
owner = "amit9838";
|
||||
repo = "mousam";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-V2R5XfkuaJ4fjgOhoTNZVk4FqKlCJqum7A2NsPISgM8=";
|
||||
hash = "sha256-3x4bi3P8zw+A+MUaBd4ByESrzCEP21Qa9CLaUYGARew=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -8,18 +8,18 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "opkssh";
|
||||
version = "0.14.0";
|
||||
version = "0.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "openpubkey";
|
||||
repo = "opkssh";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-XvA5J4v3+QESJZIaZUdvPmCD/q92ifHlzI3Ejmt1pls=";
|
||||
hash = "sha256-COACiBNXHEpzZyGGYmz0uj0ubzYJFRabAEku2qOjLcg=";
|
||||
};
|
||||
|
||||
ldflags = [ "-X main.Version=${finalAttrs.version}" ];
|
||||
|
||||
vendorHash = "sha256-ASa4jXhLdCs+YTP65nkMsQErg22sbl8g0RgzfSFr67A=";
|
||||
vendorHash = "sha256-aRWu4yB83hBKtW78MVMg7l8iSzHdLgnYgskgt32tiLw=";
|
||||
|
||||
nativeInstallCheckInputs = [
|
||||
versionCheckHook
|
||||
|
|
|
|||
|
|
@ -2,20 +2,29 @@
|
|||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "oui";
|
||||
version = "0.1.8";
|
||||
version = "2.0.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "thatmattlove";
|
||||
repo = "oui";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-RLm8V2fLFvOwjnnq16ZmhwVdtgXPaehan7JTX3Xz30w=";
|
||||
hash = "sha256-fNG20pryfs6bDjeexpf8UlevHatY6zdvGCHSFrfz8io=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-TLVw4tnfvgK2h/Xj5LNNjDG4WQ83Bw8yBhZc16Tjmws=";
|
||||
vendorHash = "sha256-EOu9imj0YwYhHX7ZzE9BzhkoDitC5AHjlwoWmQs0Rj4=";
|
||||
|
||||
checkFlags = [
|
||||
# These tests require live IEEE network access, a local PostgreSQL server,
|
||||
# and a writable home directory.
|
||||
"-skip=^Test_(CollectAll|New)$"
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "MAC Address CLI Toolkit";
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
symlinkJoin,
|
||||
udev,
|
||||
vulkan-loader,
|
||||
wayland,
|
||||
wrapGAppsHook3,
|
||||
xrandr,
|
||||
|
||||
|
|
@ -103,6 +104,7 @@ symlinkJoin {
|
|||
libxext
|
||||
libxrandr
|
||||
libxxf86vm
|
||||
wayland
|
||||
|
||||
udev # oshi
|
||||
|
||||
|
|
|
|||
|
|
@ -6,16 +6,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "pgbouncer-exporter";
|
||||
version = "0.12.0";
|
||||
version = "0.12.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "prometheus-community";
|
||||
repo = "pgbouncer_exporter";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Kt3eM8CxDOTWgMppAs+ajt4RL6Q/7jMcKYQIFzlRW8g=";
|
||||
hash = "sha256-P82ek6+OcvRd1dIuqkfqU4DEmOtHVkSfN5atLansCK4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-h9IJAjTCSKrREolo4DVOzULguz4gj6UbkFSR9yuivQY=";
|
||||
vendorHash = "sha256-wKb5/phioGYLthgFVlh0OkVzJyPynAl2G9v89550k6M=";
|
||||
|
||||
meta = {
|
||||
description = "Prometheus exporter for PgBouncer";
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "smokeping_prober";
|
||||
version = "0.11.0";
|
||||
version = "0.12.0";
|
||||
|
||||
ldflags =
|
||||
let
|
||||
|
|
@ -31,9 +31,9 @@ buildGoModule rec {
|
|||
owner = "SuperQ";
|
||||
repo = "smokeping_prober";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-h0HpxfYYfDY+dkKOBTBs3fFGY7td1YsL8b/NY6aJY/w=";
|
||||
sha256 = "sha256-bFKJkqeuVS4z4jylJ67UgL6OPyi/JbowMKn5/Feu6lM=";
|
||||
};
|
||||
vendorHash = "sha256-On5Xpn9V1XeyyGfy7xA1MwV4gO6GMcdine1f4tDZPJ4=";
|
||||
vendorHash = "sha256-rNk9mCVpc2N+lLAarDenmOLy00swS1rkTNxMy62wR+k=";
|
||||
|
||||
doCheck = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -9,11 +9,11 @@
|
|||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "proton-ge-bin";
|
||||
version = "GE-Proton10-34";
|
||||
version = "GE-Proton11-1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${finalAttrs.version}/${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-lzPsYYcrp5NoT3B0WFj3o10Z7tXx7xva1wEP3edeuqM=";
|
||||
hash = "sha256-I7SSvzQQ/NqdvwjpJ9IFFtAaTS+rgHUyXx0us1vIOnw=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
|
|
|
|||
|
|
@ -10,16 +10,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "qovery-cli";
|
||||
version = "1.165.0";
|
||||
version = "1.166.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Qovery";
|
||||
repo = "qovery-cli";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-QaJ0AP1LD1Z+cjzcFjphmZ/EbAOyzTEt7OJWGbIfc9c=";
|
||||
hash = "sha256-orNVII6Y82YVtgEKpQnEpNXVWsg6P3sHluW1FGU20DA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-nvJd4e71zP6cxkojHhfNGxUQgC0qIMYF6aCmZycnap0=";
|
||||
vendorHash = "sha256-fZqzHJa5VFC1z5ZaHCXNyIKbwLjb3pSEb9FHs4YhWZg=";
|
||||
|
||||
env.CGO_ENABLED = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -17,20 +17,15 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rasdaemon";
|
||||
version = "0.8.4";
|
||||
version = "0.8.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mchehab";
|
||||
repo = "rasdaemon";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-rk4CZrWQRe2wsx8/eXP0BIeaU/Gxmcb+Kry5F8t4YKQ=";
|
||||
hash = "sha256-CN9fSo7CQFkbpxPRwFSNJovTJBAjqEhqQzwHfYirGmo=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://github.com/mchehab/rasdaemon/pull/246
|
||||
./ras-mc-ctl_fix_invalid_column_in_signal_events_query.patch
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/util/ras-mc-ctl.in b/util/ras-mc-ctl.in
|
||||
index b00c9c1..e56402b 100755
|
||||
--- a/util/ras-mc-ctl.in
|
||||
+++ b/util/ras-mc-ctl.in
|
||||
@@ -2497,7 +2497,7 @@ sub errors
|
||||
|
||||
# SIGNAL event
|
||||
if ($has_signal == 1) {
|
||||
- $query = "select id, timestamp, signal, errorno, code, comm, pid, grp, res from signal_event$conf{opt}{since} order by id";
|
||||
+ $query = "select id, timestamp, sig, errorno, code, comm, pid, grp, res from signal_event$conf{opt}{since} order by id";
|
||||
$query_handle = $dbh->prepare($query);
|
||||
$query_handle->execute();
|
||||
$query_handle->bind_columns(\($id, $timestamp, $signal, $errorno, $code, $comm, $pid, $grp, $res));
|
||||
|
|
@ -2,7 +2,7 @@ source 'https://rubygems.org'
|
|||
|
||||
ruby '>= 3.2.0', '< 3.5.0'
|
||||
|
||||
gem 'rails', '7.2.3'
|
||||
gem 'rails', '7.2.3.1'
|
||||
gem 'rouge', '~> 4.5'
|
||||
gem 'mini_mime', '~> 1.1.0'
|
||||
gem "actionpack-xml_parser"
|
||||
|
|
|
|||
201
pkgs/by-name/re/redmine/Gemfile.lock
generated
201
pkgs/by-name/re/redmine/Gemfile.lock
generated
|
|
@ -1,29 +1,29 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actioncable (7.2.3)
|
||||
actionpack (= 7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
actioncable (7.2.3.1)
|
||||
actionpack (= 7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
zeitwerk (~> 2.6)
|
||||
actionmailbox (7.2.3)
|
||||
actionpack (= 7.2.3)
|
||||
activejob (= 7.2.3)
|
||||
activerecord (= 7.2.3)
|
||||
activestorage (= 7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
actionmailbox (7.2.3.1)
|
||||
actionpack (= 7.2.3.1)
|
||||
activejob (= 7.2.3.1)
|
||||
activerecord (= 7.2.3.1)
|
||||
activestorage (= 7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
mail (>= 2.8.0)
|
||||
actionmailer (7.2.3)
|
||||
actionpack (= 7.2.3)
|
||||
actionview (= 7.2.3)
|
||||
activejob (= 7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
actionmailer (7.2.3.1)
|
||||
actionpack (= 7.2.3.1)
|
||||
actionview (= 7.2.3.1)
|
||||
activejob (= 7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
mail (>= 2.8.0)
|
||||
rails-dom-testing (~> 2.2)
|
||||
actionpack (7.2.3)
|
||||
actionview (= 7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
actionpack (7.2.3.1)
|
||||
actionview (= 7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
cgi
|
||||
nokogiri (>= 1.8.5)
|
||||
racc
|
||||
|
|
@ -36,36 +36,36 @@ GEM
|
|||
actionpack-xml_parser (2.0.1)
|
||||
actionpack (>= 5.0)
|
||||
railties (>= 5.0)
|
||||
actiontext (7.2.3)
|
||||
actionpack (= 7.2.3)
|
||||
activerecord (= 7.2.3)
|
||||
activestorage (= 7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
actiontext (7.2.3.1)
|
||||
actionpack (= 7.2.3.1)
|
||||
activerecord (= 7.2.3.1)
|
||||
activestorage (= 7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
globalid (>= 0.6.0)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
actionview (7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
builder (~> 3.1)
|
||||
cgi
|
||||
erubi (~> 1.11)
|
||||
rails-dom-testing (~> 2.2)
|
||||
rails-html-sanitizer (~> 1.6)
|
||||
activejob (7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
activejob (7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
activerecord (7.2.3)
|
||||
activemodel (= 7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
activemodel (7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
activerecord (7.2.3.1)
|
||||
activemodel (= 7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
timeout (>= 0.4.0)
|
||||
activestorage (7.2.3)
|
||||
actionpack (= 7.2.3)
|
||||
activejob (= 7.2.3)
|
||||
activerecord (= 7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
activestorage (7.2.3.1)
|
||||
actionpack (= 7.2.3.1)
|
||||
activejob (= 7.2.3.1)
|
||||
activerecord (= 7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
marcel (~> 1.0)
|
||||
activesupport (7.2.3)
|
||||
activesupport (7.2.3.1)
|
||||
base64
|
||||
benchmark (>= 0.3)
|
||||
bigdecimal
|
||||
|
|
@ -74,18 +74,20 @@ GEM
|
|||
drb
|
||||
i18n (>= 1.6, < 2)
|
||||
logger (>= 1.4.2)
|
||||
minitest (>= 5.1)
|
||||
minitest (>= 5.1, < 6)
|
||||
securerandom (>= 0.3)
|
||||
tzinfo (~> 2.0, >= 2.0.5)
|
||||
addressable (2.8.9)
|
||||
addressable (2.9.0)
|
||||
public_suffix (>= 2.0.2, < 8.0)
|
||||
ast (2.4.3)
|
||||
auth-sanitizer (0.2.1)
|
||||
version_gem (~> 1.1, >= 1.1.10)
|
||||
base64 (0.3.0)
|
||||
bcrypt (3.1.21)
|
||||
bcrypt (3.1.22)
|
||||
benchmark (0.5.0)
|
||||
bigdecimal (4.0.1)
|
||||
bigdecimal (4.1.2)
|
||||
builder (3.3.0)
|
||||
bullet (8.1.0)
|
||||
bullet (8.1.3)
|
||||
activesupport (>= 3.0.0)
|
||||
uniform_notifier (~> 1.11)
|
||||
bundle-audit (0.2.0)
|
||||
|
|
@ -106,10 +108,10 @@ GEM
|
|||
chunky_png (1.4.0)
|
||||
commonmarker (2.3.2)
|
||||
rb_sys (~> 0.9)
|
||||
concurrent-ruby (1.3.6)
|
||||
concurrent-ruby (1.3.7)
|
||||
connection_pool (3.0.2)
|
||||
crass (1.0.6)
|
||||
css_parser (1.21.1)
|
||||
css_parser (2.2.0)
|
||||
addressable
|
||||
csv (3.3.5)
|
||||
date (3.5.1)
|
||||
|
|
@ -120,18 +122,18 @@ GEM
|
|||
domain_name (0.6.20240107)
|
||||
doorkeeper (5.8.2)
|
||||
railties (>= 5)
|
||||
doorkeeper-i18n (5.2.8)
|
||||
doorkeeper-i18n (5.2.9)
|
||||
doorkeeper (>= 5.2)
|
||||
drb (2.2.3)
|
||||
erb (6.0.2)
|
||||
erb (6.0.4)
|
||||
erubi (1.13.1)
|
||||
faraday (2.14.1)
|
||||
faraday (2.14.3)
|
||||
faraday-net_http (>= 2.0, < 3.5)
|
||||
json
|
||||
logger
|
||||
faraday-net_http (3.4.2)
|
||||
faraday-net_http (3.4.4)
|
||||
net-http (~> 0.5)
|
||||
ffi (1.17.3)
|
||||
ffi (1.17.4)
|
||||
globalid (1.3.0)
|
||||
activesupport (>= 6.1)
|
||||
hashie (5.1.0)
|
||||
|
|
@ -141,7 +143,7 @@ GEM
|
|||
nokogiri (>= 1.4)
|
||||
htmlentities (4.4.2)
|
||||
http-accept (1.7.0)
|
||||
http-cookie (1.1.0)
|
||||
http-cookie (1.1.6)
|
||||
domain_name (~> 0.5)
|
||||
i18n (1.14.8)
|
||||
concurrent-ruby (~> 1.0)
|
||||
|
|
@ -150,13 +152,13 @@ GEM
|
|||
activesupport (>= 6.0.0)
|
||||
railties (>= 6.0.0)
|
||||
io-console (0.8.2)
|
||||
irb (1.17.0)
|
||||
irb (1.18.0)
|
||||
pp (>= 0.6.0)
|
||||
prism (>= 1.3.0)
|
||||
rdoc (>= 4.0.0)
|
||||
reline (>= 0.4.2)
|
||||
json (2.19.1)
|
||||
jwt (3.1.2)
|
||||
json (2.19.9)
|
||||
jwt (3.2.0)
|
||||
base64
|
||||
language_server-protocol (3.17.0.5)
|
||||
lint_roller (1.1.0)
|
||||
|
|
@ -165,7 +167,7 @@ GEM
|
|||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
logger (1.7.0)
|
||||
loofah (2.25.0)
|
||||
loofah (2.25.1)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.12.0)
|
||||
mail (2.8.1)
|
||||
|
|
@ -173,12 +175,12 @@ GEM
|
|||
net-imap
|
||||
net-pop
|
||||
net-smtp
|
||||
marcel (1.1.0)
|
||||
marcel (1.2.1)
|
||||
matrix (0.4.3)
|
||||
mime-types (3.7.0)
|
||||
logger
|
||||
mime-types-data (~> 3.2025, >= 3.2025.0507)
|
||||
mime-types-data (3.2026.0303)
|
||||
mime-types-data (3.2026.0414)
|
||||
mini_magick (5.2.0)
|
||||
benchmark
|
||||
logger
|
||||
|
|
@ -187,13 +189,13 @@ GEM
|
|||
minitest (5.27.0)
|
||||
mocha (3.1.0)
|
||||
ruby2_keywords (>= 0.0.5)
|
||||
multi_xml (0.8.1)
|
||||
multi_xml (0.9.1)
|
||||
bigdecimal (>= 3.1, < 5)
|
||||
mysql2 (0.5.7)
|
||||
bigdecimal
|
||||
net-http (0.9.1)
|
||||
uri (>= 0.11.1)
|
||||
net-imap (0.5.13)
|
||||
net-imap (0.5.15)
|
||||
date
|
||||
net-protocol
|
||||
net-ldap (0.17.1)
|
||||
|
|
@ -205,19 +207,20 @@ GEM
|
|||
net-protocol
|
||||
netrc (0.11.0)
|
||||
nio4r (2.7.5)
|
||||
nokogiri (1.19.1)
|
||||
nokogiri (1.19.3)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
oauth2 (2.0.18)
|
||||
oauth2 (2.0.23)
|
||||
auth-sanitizer (~> 0.2, >= 0.2.1)
|
||||
faraday (>= 0.17.3, < 4.0)
|
||||
jwt (>= 1.0, < 4.0)
|
||||
logger (~> 1.2)
|
||||
multi_xml (~> 0.5)
|
||||
rack (>= 1.2, < 4)
|
||||
snaky_hash (~> 2.0, >= 2.0.3)
|
||||
version_gem (~> 1.1, >= 1.1.9)
|
||||
parallel (1.27.0)
|
||||
parser (3.3.10.2)
|
||||
snaky_hash (~> 2.0, >= 2.0.6)
|
||||
version_gem (~> 1.1, >= 1.1.11)
|
||||
parallel (1.28.0)
|
||||
parser (3.3.11.1)
|
||||
ast (~> 2.4.1)
|
||||
racc
|
||||
pg (1.5.9)
|
||||
|
|
@ -230,35 +233,35 @@ GEM
|
|||
activesupport (>= 7.0.0)
|
||||
rack
|
||||
railties (>= 7.0.0)
|
||||
psych (5.3.1)
|
||||
psych (5.4.0)
|
||||
date
|
||||
stringio
|
||||
public_suffix (7.0.5)
|
||||
puma (7.2.0)
|
||||
puma (8.0.2)
|
||||
nio4r (~> 2.0)
|
||||
racc (1.8.1)
|
||||
rack (3.2.5)
|
||||
rack-session (2.1.1)
|
||||
rack (3.2.6)
|
||||
rack-session (2.1.2)
|
||||
base64 (>= 0.1.0)
|
||||
rack (>= 3.0.0)
|
||||
rack-test (2.2.0)
|
||||
rack (>= 1.3)
|
||||
rackup (2.3.1)
|
||||
rack (>= 3)
|
||||
rails (7.2.3)
|
||||
actioncable (= 7.2.3)
|
||||
actionmailbox (= 7.2.3)
|
||||
actionmailer (= 7.2.3)
|
||||
actionpack (= 7.2.3)
|
||||
actiontext (= 7.2.3)
|
||||
actionview (= 7.2.3)
|
||||
activejob (= 7.2.3)
|
||||
activemodel (= 7.2.3)
|
||||
activerecord (= 7.2.3)
|
||||
activestorage (= 7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
rails (7.2.3.1)
|
||||
actioncable (= 7.2.3.1)
|
||||
actionmailbox (= 7.2.3.1)
|
||||
actionmailer (= 7.2.3.1)
|
||||
actionpack (= 7.2.3.1)
|
||||
actiontext (= 7.2.3.1)
|
||||
actionview (= 7.2.3.1)
|
||||
activejob (= 7.2.3.1)
|
||||
activemodel (= 7.2.3.1)
|
||||
activerecord (= 7.2.3.1)
|
||||
activestorage (= 7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 7.2.3)
|
||||
railties (= 7.2.3.1)
|
||||
rails-dom-testing (2.3.0)
|
||||
activesupport (>= 5.0.0)
|
||||
minitest
|
||||
|
|
@ -266,9 +269,9 @@ GEM
|
|||
rails-html-sanitizer (1.7.0)
|
||||
loofah (~> 2.25)
|
||||
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
||||
railties (7.2.3)
|
||||
actionpack (= 7.2.3)
|
||||
activesupport (= 7.2.3)
|
||||
railties (7.2.3.1)
|
||||
actionpack (= 7.2.3.1)
|
||||
activesupport (= 7.2.3.1)
|
||||
cgi
|
||||
irb (~> 1.13)
|
||||
rackup (>= 1.0.0)
|
||||
|
|
@ -277,13 +280,13 @@ GEM
|
|||
tsort (>= 0.2)
|
||||
zeitwerk (~> 2.6)
|
||||
rainbow (3.1.1)
|
||||
rake (13.3.1)
|
||||
rake-compiler-dock (1.11.0)
|
||||
rake (13.4.2)
|
||||
rake-compiler-dock (1.12.0)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.11.1)
|
||||
ffi (~> 1.0)
|
||||
rb_sys (0.9.124)
|
||||
rake-compiler-dock (= 1.11.0)
|
||||
rb_sys (0.9.128)
|
||||
rake-compiler-dock (= 1.12.0)
|
||||
rbpdf (1.21.4)
|
||||
htmlentities
|
||||
rbpdf-font (~> 1.19.0)
|
||||
|
|
@ -292,7 +295,7 @@ GEM
|
|||
erb
|
||||
psych (>= 4.0.0)
|
||||
tsort
|
||||
regexp_parser (2.11.3)
|
||||
regexp_parser (2.12.0)
|
||||
reline (0.6.3)
|
||||
io-console (~> 0.5)
|
||||
requestjs-rails (0.0.14)
|
||||
|
|
@ -303,8 +306,8 @@ GEM
|
|||
mime-types (>= 1.16, < 4.0)
|
||||
netrc (~> 0.8)
|
||||
rexml (3.4.4)
|
||||
roadie (5.2.1)
|
||||
css_parser (~> 1.4)
|
||||
roadie (5.3.0)
|
||||
css_parser (>= 1.4, < 3.0)
|
||||
nokogiri (~> 1.15)
|
||||
roadie-rails (3.3.0)
|
||||
railties (>= 5.1, < 8.1)
|
||||
|
|
@ -346,7 +349,7 @@ GEM
|
|||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.12.0)
|
||||
securerandom (0.4.1)
|
||||
selenium-webdriver (4.41.0)
|
||||
selenium-webdriver (4.45.0)
|
||||
base64 (~> 0.2)
|
||||
logger (~> 1.4)
|
||||
rexml (~> 3.2, >= 3.2.5)
|
||||
|
|
@ -358,7 +361,7 @@ GEM
|
|||
simplecov_json_formatter (~> 0.1)
|
||||
simplecov-html (0.13.2)
|
||||
simplecov_json_formatter (0.1.4)
|
||||
snaky_hash (2.0.3)
|
||||
snaky_hash (2.0.6)
|
||||
hashie (>= 0.1.0, < 6)
|
||||
version_gem (>= 1.1.8, < 3)
|
||||
sqlite3 (2.5.0)
|
||||
|
|
@ -384,10 +387,10 @@ GEM
|
|||
uniform_notifier (1.18.0)
|
||||
uri (1.1.1)
|
||||
useragent (0.16.11)
|
||||
version_gem (1.1.9)
|
||||
version_gem (1.1.12)
|
||||
webrick (1.9.2)
|
||||
websocket (1.2.11)
|
||||
websocket-driver (0.8.0)
|
||||
websocket-driver (0.8.1)
|
||||
base64
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.5)
|
||||
|
|
@ -396,8 +399,8 @@ GEM
|
|||
zeitwerk (>= 2.7)
|
||||
xpath (3.2.0)
|
||||
nokogiri (~> 1.8)
|
||||
yard (0.9.38)
|
||||
zeitwerk (2.7.5)
|
||||
yard (0.9.44)
|
||||
zeitwerk (2.8.2)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
|
@ -436,7 +439,7 @@ DEPENDENCIES
|
|||
propshaft (~> 1.1.0)
|
||||
puma
|
||||
rack (>= 3.1.3)
|
||||
rails (= 7.2.3)
|
||||
rails (= 7.2.3.1)
|
||||
rails-dom-testing (>= 2.3.0)
|
||||
rbpdf (~> 1.21.4)
|
||||
requestjs-rails (~> 0.0.13)
|
||||
|
|
@ -462,7 +465,7 @@ DEPENDENCIES
|
|||
yard
|
||||
|
||||
RUBY VERSION
|
||||
ruby 3.3.10p183
|
||||
ruby 3.4.9p82
|
||||
|
||||
BUNDLED WITH
|
||||
2.7.2
|
||||
|
|
|
|||
223
pkgs/by-name/re/redmine/gemset.nix
generated
223
pkgs/by-name/re/redmine/gemset.nix
generated
|
|
@ -11,10 +11,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1yfl7blz9zlww0al921kmyqsmsx8gdphqjnszp5fgpzi8nr1fpg1";
|
||||
sha256 = "0g5kbrqvhwlliyrzd2bhc3kdiqm58df0x3w716bs0ygwyjil1gyk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
actionmailbox = {
|
||||
dependencies = [
|
||||
|
|
@ -29,10 +29,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0pjdrdlv14mzq24qx95hpxhfza0k72qc3qymaa6x1wihqfkz1fqn";
|
||||
sha256 = "0hf59r6sk0qb5va0ga549rbadcb5n1a2ry8nlkszzcksr6039rx4";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
actionmailer = {
|
||||
dependencies = [
|
||||
|
|
@ -47,10 +47,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1f4axhrdhk9z3hjv6xzxqyj7c3y17mn7kz1li1fv5lm6aaw4dmk8";
|
||||
sha256 = "0rq4aan18y6gwziabnj1q1486349k1v1i5m7ysv206pqqpavcy7m";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
actionpack = {
|
||||
dependencies = [
|
||||
|
|
@ -70,10 +70,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1kq7fbgb5yfsjd1na2ghc7assk18ca24kbvsx90p0xwm8v3f851a";
|
||||
sha256 = "1jp4w493wvfh9246wxk7g00m1a3vmzkvs0rznq62fwvjjdzzwsmn";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
actionpack-xml_parser = {
|
||||
dependencies = [
|
||||
|
|
@ -102,10 +102,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0ds0m7qp55qkprhdkzpxrvbfiam95s58xj7555hf5d5pnzpxkzx6";
|
||||
sha256 = "1qs350j3zm7sd6xxn61d93mv3lx1ravbjqja12c7nd7a0zs1h52v";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
actionview = {
|
||||
dependencies = [
|
||||
|
|
@ -120,10 +120,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1cpc91crvavdgvc3jqj1nqr9q6s581bm64894pbh8f5l85x7shhz";
|
||||
sha256 = "0z7zy6ibfpsdj9jbdm54bx3ws4dszcq7qa564jn645rr8dlbh6fy";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
activejob = {
|
||||
dependencies = [
|
||||
|
|
@ -134,10 +134,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1c7zwmhkg9fpkl2isiggs9b2xbf8jf0hhbvmjfgbcrz25m3n8jg4";
|
||||
sha256 = "1n3fiwm1x3dxwj36n9pspd2bgffyw28ys9yd36hjvf3iwdy25i0b";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
activemodel = {
|
||||
dependencies = [ "activesupport" ];
|
||||
|
|
@ -145,10 +145,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1nrr8w3hxkssgx13bcph8lb876hg57w01fbapy7fj4ijp6p6dbxv";
|
||||
sha256 = "1l60a6mqx1wgp15ki1cp68djci0czgrikpydii5bd877hndqdq9r";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
activerecord = {
|
||||
dependencies = [
|
||||
|
|
@ -160,10 +160,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1mx087zngip62400z44p969l6fja1fjxliq6kym6npzbii3vgb3g";
|
||||
sha256 = "0pd0f1hy6rvyanmrklqir33xq0jb2my4jajz7hc38nysfpi175dq";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
activestorage = {
|
||||
dependencies = [
|
||||
|
|
@ -177,10 +177,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0bya6k7i8s6538fa4j2c0a0xrf6kggg8mhrwnkkqj356zaxj452c";
|
||||
sha256 = "1azzbpfp726yigwzmj8g2jji149wisnwrgb86zix6mk25sj4w8hb";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
activesupport = {
|
||||
dependencies = [
|
||||
|
|
@ -204,10 +204,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "043vbilaw855c91n5l7g0k0wxj63kngj911685qy74xc1mvwjxan";
|
||||
sha256 = "0d6bhg9cim83g8cypjd7cms45ng4p9ga69v26i3vp823d98yvsqi";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
addressable = {
|
||||
dependencies = [ "public_suffix" ];
|
||||
|
|
@ -218,10 +218,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "11ali533wx91fh93xlk88gjqq8w0p7kxw09nlh41hwc9wv5ly5fc";
|
||||
sha256 = "1by7h2lwziiblizpd5yx87jsq8ppdhzvwf08ga34wzqgcv1nmpvz";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.8.9";
|
||||
version = "2.9.0";
|
||||
};
|
||||
ast = {
|
||||
groups = [
|
||||
|
|
@ -236,6 +236,20 @@
|
|||
};
|
||||
version = "2.4.3";
|
||||
};
|
||||
auth-sanitizer = {
|
||||
dependencies = [ "version_gem" ];
|
||||
groups = [
|
||||
"default"
|
||||
"test"
|
||||
];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0xy5gjb12kv6zjn4zyd16yfv4bygd02ykbr6cz10d6sqyw0wyzci";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.2.1";
|
||||
};
|
||||
base64 = {
|
||||
groups = [
|
||||
"default"
|
||||
|
|
@ -255,10 +269,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1krd99p9828n07rcjjms56jaqv7v6s9pn7y6bppcfhhaflyn2r2r";
|
||||
sha256 = "0clhya4p8lhjj7hp31inp321wgzb0b5wbwppmya5sw1dikl7400z";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.1.21";
|
||||
version = "3.1.22";
|
||||
};
|
||||
benchmark = {
|
||||
groups = [
|
||||
|
|
@ -284,10 +298,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "19y406nx17arzsbc515mjmr6k5p59afprspa1k423yd9cp8d61wb";
|
||||
sha256 = "1g9zi8c4i7g8zz0c3hxrw6mblrjvgn7akys60clb9si7c1k1gljk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.0.1";
|
||||
version = "4.1.2";
|
||||
};
|
||||
builder = {
|
||||
groups = [ "default" ];
|
||||
|
|
@ -308,10 +322,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1zwq7g98c1mdigahb50c980a0fcc4ib1m9ivmgf3f8gc6qk7wjv0";
|
||||
sha256 = "1jy7yfn94acbcn23g9zh48b8j9jphwcqgr2vfy013zi4fd93q5n8";
|
||||
type = "gem";
|
||||
};
|
||||
version = "8.1.0";
|
||||
version = "8.1.3";
|
||||
};
|
||||
bundle-audit = {
|
||||
dependencies = [ "bundler-audit" ];
|
||||
|
|
@ -398,10 +412,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1aymcakhzl83k77g2f2krz07bg1cbafbcd2ghvwr4lky3rz86mkb";
|
||||
sha256 = "1c2i64xsd35vijnb50rxb70g508s0x674xi0qpyyb8jy7bncl4j4";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.3.6";
|
||||
version = "1.3.7";
|
||||
};
|
||||
connection_pool = {
|
||||
groups = [
|
||||
|
|
@ -433,10 +447,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1izp5vna86s7xivqzml4nviy01bv76arrd5is8wkncwp1by3zzbc";
|
||||
sha256 = "09b3zwmx95jhdp3da6qx9w0d6s2yfpxjjip55wpwny5wsx3v5l93";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.21.1";
|
||||
version = "2.2.0";
|
||||
};
|
||||
csv = {
|
||||
groups = [ "default" ];
|
||||
|
|
@ -522,10 +536,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0lpmvaglypxlmaiqv4sjrf1b1sc8f589cv7xq3rr4j26vw0lf1g4";
|
||||
sha256 = "195l8nfay1yb4igg348mjffikvh1m16b4899gyzz7ysgwkx3m9yy";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.2.8";
|
||||
version = "5.2.9";
|
||||
};
|
||||
drb = {
|
||||
groups = [
|
||||
|
|
@ -550,10 +564,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0ar4nmvk1sk7drjigqyh9nnps3mxg625b8chfk42557p8i6jdrlz";
|
||||
sha256 = "1ncmbdjf2bwmk0jf5cxywns9zbxyfiy4h4p3pzi7yddyjhv81qrq";
|
||||
type = "gem";
|
||||
};
|
||||
version = "6.0.2";
|
||||
version = "6.0.4";
|
||||
};
|
||||
erubi = {
|
||||
groups = [ "default" ];
|
||||
|
|
@ -578,10 +592,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "077n5ss3z3ds4vj54w201kd12smai853dp9c9n7ii7g3q7nwwg54";
|
||||
sha256 = "0y7j6yzv07zggic6g0p2v1ivnvkzsbqjnfdl4215qqb6cxz290hq";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.14.1";
|
||||
version = "2.14.3";
|
||||
};
|
||||
faraday-net_http = {
|
||||
dependencies = [ "net-http" ];
|
||||
|
|
@ -592,10 +606,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0v4hfmc7d4lrqqj2wl366rm9551gd08zkv2ppwwnjlnkc217aizi";
|
||||
sha256 = "125m3qri52vwh5v9dhq0dkqxf8629cxrf99yyc01pva72wasyy0f";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.2";
|
||||
version = "3.4.4";
|
||||
};
|
||||
ffi = {
|
||||
groups = [
|
||||
|
|
@ -622,10 +636,10 @@
|
|||
];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0k1xaqw2jk13q3ss7cnyvkp8fzp75dk4kazysrxgfd1rpgvkk7qf";
|
||||
sha256 = "1kqasqvy8d7r09ri4n6bkdwbk63j7afd9ilsw34nzlgh0qp69ldw";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.17.3";
|
||||
version = "1.17.4";
|
||||
};
|
||||
globalid = {
|
||||
dependencies = [ "activesupport" ];
|
||||
|
|
@ -698,10 +712,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "06dvmngd4hwrr6k774i1h6c50h2l8nww9f1id0wvrvi72l6yd99q";
|
||||
sha256 = "1aga7z4p0dka4zcqw9i05wa4ab1q7h7cgnj328ldqqfycjz84jxs";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.1.0";
|
||||
version = "1.1.6";
|
||||
};
|
||||
i18n = {
|
||||
dependencies = [ "concurrent-ruby" ];
|
||||
|
|
@ -762,10 +776,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1bishrxfn2anwlagw8rzly7i2yicjnr947f48nh638yqjgdlv30n";
|
||||
sha256 = "1qs8a9vprg7s8krgq4s0pygr91hclqqyz98ik15p0m1sf2h5956y";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.17.0";
|
||||
version = "1.18.0";
|
||||
};
|
||||
json = {
|
||||
groups = [
|
||||
|
|
@ -775,10 +789,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0b888h9v2y4aasi9aapxqimiaj1i1csk56l22dczigs8kv2zv56x";
|
||||
sha256 = "16mp8vzgxa8nsa81np042za453j8b0ihpjkf666s7byxrnvjb44v";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.19.1";
|
||||
version = "2.19.9";
|
||||
};
|
||||
jwt = {
|
||||
dependencies = [ "base64" ];
|
||||
|
|
@ -789,10 +803,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0dfm4bhl4fzn076igh0bmh2v1vphcrxdv6ldc46hdd3bkbqr2sdg";
|
||||
sha256 = "1mqps8z4ly74hpksfajcfamqk1wb79biy187pn10knmi6zzb26al";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.1.2";
|
||||
version = "3.2.0";
|
||||
};
|
||||
language_server-protocol = {
|
||||
groups = [
|
||||
|
|
@ -859,10 +873,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1rk0n13c9nmk8di2x5gqk5r04vf8bkp7ff6z0b44wsmc7fndfpnz";
|
||||
sha256 = "011fdngxzr1p9dq2hxqz7qq1glj2g44xnhaadjqlf48cplywfdnl";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.25.0";
|
||||
version = "2.25.1";
|
||||
};
|
||||
mail = {
|
||||
dependencies = [
|
||||
|
|
@ -885,10 +899,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1vhb1sbzlq42k2pzd9v0w5ws4kjx184y8h4d63296bn57jiwzkzx";
|
||||
sha256 = "17w53z6vka8ddmxvi936biqv443d5yg0503wj7xfmy9j1qvfjy0n";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.1.0";
|
||||
version = "1.2.1";
|
||||
};
|
||||
matrix = {
|
||||
groups = [
|
||||
|
|
@ -928,10 +942,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "09627cnx432528j7j73711fbd0r30ri0lfsh9dfiki94b3gg2jhn";
|
||||
sha256 = "1k28j6ww8rf43r5i8278jvm2cq3pnzsvqm7yqpb4p93kadjlq726";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2026.0303";
|
||||
version = "3.2026.0414";
|
||||
};
|
||||
mini_magick = {
|
||||
dependencies = [
|
||||
|
|
@ -1008,10 +1022,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0nnzdswa9l6w8k5ndgbv5al9f0jkg14dqwzyic4fjd5c1cls1nxd";
|
||||
sha256 = "0msflv26i6i3jr9w761k4qdl7cp9zbhymjkn57b1w90pkjsndrvw";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.8.1";
|
||||
version = "0.9.1";
|
||||
};
|
||||
mysql2 = {
|
||||
dependencies = [ "bigdecimal" ];
|
||||
|
|
@ -1047,10 +1061,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1c9p0r2z6j14g0vi323r6x4cs6w87xjvphlkxf7x63h2wsscgc7d";
|
||||
sha256 = "0506bhwr62szwcagcvxayhwz0d20k5ax1sh742va3mjnnkqcfkgn";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.5.13";
|
||||
version = "0.5.15";
|
||||
};
|
||||
net-ldap = {
|
||||
groups = [ "ldap" ];
|
||||
|
|
@ -1134,13 +1148,14 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1lss1nh526n3h1qsig2kjchi8vlsjwc8pdjpplm1f2yz6rzk52sr";
|
||||
sha256 = "1s30b7h7qpyim30m8060xs415mbr3ci7i5hdg09chh1aqfx2qcbq";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.19.1";
|
||||
version = "1.19.3";
|
||||
};
|
||||
oauth2 = {
|
||||
dependencies = [
|
||||
"auth-sanitizer"
|
||||
"faraday"
|
||||
"jwt"
|
||||
"logger"
|
||||
|
|
@ -1153,10 +1168,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "11rj80dgjz05x5xx93y4bfk9rcn7fl56srj8fgqn7ffzf3j13kxs";
|
||||
sha256 = "0k428i1mlk6g7c054iks86g2h4h2p1y0mg2l3g6w84gd9l8604g6";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.0.18";
|
||||
version = "2.0.23";
|
||||
};
|
||||
parallel = {
|
||||
groups = [
|
||||
|
|
@ -1166,10 +1181,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0c719bfgcszqvk9z47w2p8j2wkz5y35k48ywwas5yxbbh3hm3haa";
|
||||
sha256 = "0w697335hi5dk5ay9kyn53399sy87y8v0y6ij93m5wmshhadxrik";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.27.0";
|
||||
version = "1.28.0";
|
||||
};
|
||||
parser = {
|
||||
dependencies = [
|
||||
|
|
@ -1183,10 +1198,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0mwk9syajzdradzqzp3agf03d0cazqwbfd1439nxpkmxli5chq3g";
|
||||
sha256 = "0m2xqvn1la62hji1mn04y59giikww95p2hs0r4y2rrz3mdxcwyni";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.3.10.2";
|
||||
version = "3.3.11.1";
|
||||
};
|
||||
pg = {
|
||||
groups = [ "default" ];
|
||||
|
|
@ -1270,10 +1285,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0x0r3gc66abv8i4dw0x0370b5hrshjfp6kpp7wbp178cy775fypb";
|
||||
sha256 = "1dx5bc3s1mb1i53np4cdkypg7ccygnvagr3hglyndbqilrljvxql";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.3.1";
|
||||
version = "5.4.0";
|
||||
};
|
||||
public_suffix = {
|
||||
groups = [
|
||||
|
|
@ -1294,10 +1309,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1a3jd9qakasizrf7dkq5mqv51fjf02r2chybai2nskjaa6mz93mz";
|
||||
sha256 = "1yw6nvkvddriacmva8hm0za0961d6j96dm7zm6748rmyzcfqgvf8";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.0";
|
||||
version = "8.0.2";
|
||||
};
|
||||
racc = {
|
||||
groups = [
|
||||
|
|
@ -1321,10 +1336,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1lyn3rh71rlf50p44xmsbha0pip4c95004j8kc9pm7xpq1s0kgac";
|
||||
sha256 = "1hhjy9gcp52dzij05gmidqac8g28ski5xm67prwmdqmjfcgqxmsy";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2.5";
|
||||
version = "3.2.6";
|
||||
};
|
||||
rack-session = {
|
||||
dependencies = [
|
||||
|
|
@ -1335,10 +1350,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1sg4laz2qmllxh1c5sqlj9n1r7scdn08p3m4b0zmhjvyx9yw0v8b";
|
||||
sha256 = "1s7zcxlmg88a6dam4aqbgk9xkpy6dkdfqmmcszkkliy3q3w38m2r";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.1.1";
|
||||
version = "2.1.2";
|
||||
};
|
||||
rack-test = {
|
||||
dependencies = [ "rack" ];
|
||||
|
|
@ -1384,10 +1399,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1zwvc2fa0hm27ygfz1yc2bs52h4wzj1nhpv6cip6g28i2gmi564s";
|
||||
sha256 = "155skqkjrckvzj1qy37lrnafrillc47qhf3l80g3zvw100ba1h4n";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
rails-dom-testing = {
|
||||
dependencies = [
|
||||
|
|
@ -1434,10 +1449,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "08h44mkf91861agp7xw778gqpf5mppydsfgphgkj7wp6pyk11c3f";
|
||||
sha256 = "0np1m8xqb4wbzwpg66yjnqjban0di92lbjzcrgnwwhq2w4z3k8xf";
|
||||
type = "gem";
|
||||
};
|
||||
version = "7.2.3";
|
||||
version = "7.2.3.1";
|
||||
};
|
||||
rainbow = {
|
||||
groups = [
|
||||
|
|
@ -1457,20 +1472,20 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "175iisqb211n0qbfyqd8jz2g01q6xj038zjf4q0nm8k6kz88k7lc";
|
||||
sha256 = "009p524zl0p0kfa65nii8wdmaigkmawv9pbvlcffky7islmmp0nb";
|
||||
type = "gem";
|
||||
};
|
||||
version = "13.3.1";
|
||||
version = "13.4.2";
|
||||
};
|
||||
rake-compiler-dock = {
|
||||
groups = [ "default" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1hpq52ab86s70yv5hk56f0z14izhh59af95nlv73bsrksln1zdga";
|
||||
sha256 = "08w033c3p25wr0zwbgx0b4mb4ha5kqd4j0ydmx9j0gcgfg10acpi";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.11.0";
|
||||
version = "1.12.0";
|
||||
};
|
||||
rb-fsevent = {
|
||||
groups = [
|
||||
|
|
@ -1505,10 +1520,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1rvshyirm32lzf2sggcrhvz5hi828s3rznmkchvzgshjgdapcd2i";
|
||||
sha256 = "1z9q0l9l5r210jsmcmq3lxd4fr0j5lv348kn33g9a62fdm6izf4s";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.9.124";
|
||||
version = "0.9.128";
|
||||
};
|
||||
rbpdf = {
|
||||
dependencies = [
|
||||
|
|
@ -1561,10 +1576,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "192mzi0wgwl024pwpbfa6c2a2xlvbh3mjd75a0sakdvkl60z64ya";
|
||||
sha256 = "1fwfw26a32rps78920nn29shqg2zmqv72i89j1fap41isshida9m";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.11.3";
|
||||
version = "2.12.0";
|
||||
};
|
||||
reline = {
|
||||
dependencies = [ "io-console" ];
|
||||
|
|
@ -1630,10 +1645,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1mh1a0m0i0xrm20nry4d3gf0q5kbmm5lp15n52r93gcjwwfgd974";
|
||||
sha256 = "1jlzxlq52qbsacxkz4gny988j2pcip73ydp1fg9s1q98ra4h6554";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.2.1";
|
||||
version = "5.3.0";
|
||||
};
|
||||
roadie-rails = {
|
||||
dependencies = [
|
||||
|
|
@ -1843,10 +1858,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "08nxpr0lxn95ml19n0vy6dnw1gnhq9n1b0za5h18dwawsly1ghfd";
|
||||
sha256 = "1lg22fmcalwnzgnanswn5g7vc24wmancnvbyf1ynzb46vyj6bb7c";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.41.0";
|
||||
version = "4.45.0";
|
||||
};
|
||||
simplecov = {
|
||||
dependencies = [
|
||||
|
|
@ -1901,10 +1916,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0mnllrwhs7psw6xxs8x5yx85k12qjfdgs8zs0bxm70bfascx58r5";
|
||||
sha256 = "0jk50mjq69065ygdhkhbmxp9k2c7knizhp022ysq5xfyikjclqrn";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.0.3";
|
||||
version = "2.0.6";
|
||||
};
|
||||
sqlite3 = {
|
||||
dependencies = [ "mini_portile2" ];
|
||||
|
|
@ -2105,10 +2120,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "195r5qylwxwqbllnpli9c2pzin0lky6h3fw912h88g2lmri0j6hc";
|
||||
sha256 = "0gfv1qxfn202xffasw2mrrrf2jkdp6hsps0177k9fyc0fwb6k3xp";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.1.9";
|
||||
version = "1.1.12";
|
||||
};
|
||||
webrick = {
|
||||
groups = [ "default" ];
|
||||
|
|
@ -2142,10 +2157,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0qj9dmkmgahmadgh88kydb7cv15w13l1fj3kk9zz28iwji5vl3gd";
|
||||
sha256 = "15idgibqpdaj97f734drx8a7k1jcc8wvxlk2nbafac72ihikicjs";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.8.0";
|
||||
version = "0.8.1";
|
||||
};
|
||||
websocket-extensions = {
|
||||
groups = [ "default" ];
|
||||
|
|
@ -2190,19 +2205,19 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "03q1hf12csqy5q2inafzi44179zaq9n5yrb0k2j2llqhzcmbh7vj";
|
||||
sha256 = "0a3zi3v7qjm7lm4yp9z2sm959533k543sc4z0ixqik8wcfdpw27b";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.9.38";
|
||||
version = "0.9.44";
|
||||
};
|
||||
zeitwerk = {
|
||||
groups = [ "default" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1pbkiwwla5gldgb3saamn91058nl1sq1344l5k36xsh9ih995nnq";
|
||||
sha256 = "04hx33lsnp4q0qf8982mz0acs1dap5s2bsmihi0n0g08249sc4kj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.7.5";
|
||||
version = "2.8.2";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
}:
|
||||
|
||||
let
|
||||
version = "6.1.2";
|
||||
version = "6.1.3";
|
||||
rubyEnv = bundlerEnv {
|
||||
name = "redmine-env-${version}";
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
|||
|
||||
src = fetchurl {
|
||||
url = "https://www.redmine.org/releases/redmine-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-k46XXoCMz7Sw3LrYtC8Cqs8Mqe8VSRw4xa9HVnQMzwg=";
|
||||
hash = "sha256-YdswCMf9GKOvxVntZW/Tj9+N+CIKxpWYsxkJUYMZC3o=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
|
|
|||
|
|
@ -11,16 +11,16 @@
|
|||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
|
||||
pname = "rescrobbled";
|
||||
version = "0.9.1";
|
||||
version = "0.10.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "InputUsername";
|
||||
repo = "rescrobbled";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-pk8eWq3GOF0f6Xvt4VJezxW+vWnfk7W0sKn+Yvd7PHs=";
|
||||
hash = "sha256-q8zxv4fSk+rUG4zQkZFNgkqSU3+FqgTzJzzjeSHy3Io=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-EpQoi/pPIJN5sOZic/J8A3Co4o27Gi2SW/OaZHBFU2Y=";
|
||||
cargoHash = "sha256-pWdA48WqcNd9/daZE7gyoGTkH01i3MBv1SMGdfE2ZS0=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
|
|
|
|||
|
|
@ -7,15 +7,15 @@
|
|||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "reticulated";
|
||||
version = "1.0.2";
|
||||
version = "1.0.3";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "RFnexus";
|
||||
repo = "reticulated";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-55eK9AObUw8JLn4sNC5O8dNrfscwTwQpkVQAR+O9Lcw=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-02vdSKAEb59VucoDe5M+uSiNdyMybfQnhCr+LzGyNT0=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
stdenv,
|
||||
lib,
|
||||
nodejs_24,
|
||||
pnpm_10_29_2,
|
||||
pnpm_10,
|
||||
node-gyp,
|
||||
fetchPnpmDeps,
|
||||
pnpmConfigHook,
|
||||
|
|
@ -32,7 +32,7 @@ assert lib.warnIf (commandLineArgs != "")
|
|||
true;
|
||||
let
|
||||
nodejs = nodejs_24;
|
||||
pnpm = pnpm_10_29_2;
|
||||
pnpm = pnpm_10;
|
||||
electron = electron_42;
|
||||
|
||||
libsignal-node = callPackage ./libsignal-node.nix { inherit nodejs; };
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "skeema";
|
||||
version = "1.13.2";
|
||||
version = "1.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "skeema";
|
||||
repo = "skeema";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Gy+AYjUEi3wvXX9j5jCOs7/Qk0bgIt20cjY+SSP+uQI=";
|
||||
hash = "sha256-xcGHzsVV3rn8l7oYu+RD4njyI1KW/fU9iGdwZW7W5PA=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
|
|
|||
|
|
@ -9,16 +9,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "spacectl";
|
||||
version = "1.22.0";
|
||||
version = "1.23.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "spacelift-io";
|
||||
repo = "spacectl";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-2wy5I3wmBtp239gdcL8s+SuXWajx9EB+s3xBYxy55ok=";
|
||||
hash = "sha256-9YhA1clYaPbrY/kAS51Qo20EDPSPOKwN5iLUUJ4sE60=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-+ahiiboLKu/LazJzsxoE39hbF73TSuguPkKCSS7m2BA=";
|
||||
vendorHash = "sha256-1ue5NHt/+QCtmzwQder6H7WqRBJ42on53ixuD+wiZpg=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "spicedb";
|
||||
version = "1.53.0";
|
||||
version = "1.54.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "authzed";
|
||||
repo = "spicedb";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-kmhLvHPqHqSFkfUx9pr52Vvz+YgCPwknHqSY4zpVPtI=";
|
||||
hash = "sha256-A07AHCfXZtd5Z71jRxIx6oIipCFskPzYtgSHv21zKpE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-G3isae85B6Js6H7XFAJ+v00caBV4+PO9IPCpHXzkBOs=";
|
||||
vendorHash = "sha256-VZYkS1UQ7w/BUYFF8FrjgsnYn7sNexNVczmrMvYERGY=";
|
||||
|
||||
ldflags = [
|
||||
"-X 'github.com/jzelinskie/cobrautil/v2.Version=${finalAttrs.src.tag}'"
|
||||
|
|
|
|||
|
|
@ -64,7 +64,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
|||
cargoHash = "sha256-HVS89Wtjb2nIdyygP8bPRbVhyMRnJlZDfoCQqiMdVe0=";
|
||||
|
||||
env = {
|
||||
# https://docs.rs/openssl/latest/openssl/#manual
|
||||
OPENSSL_NO_VENDOR = true;
|
||||
OPENSSL_DIR = lib.getDev openssl;
|
||||
OPENSSL_LIB_DIR = "${lib.getLib openssl}/lib";
|
||||
ZSTD_SYS_USE_PKG_CONFIG = true;
|
||||
ROCKSDB_INCLUDE_DIR = "${rocksdb}/include";
|
||||
ROCKSDB_LIB_DIR = "${rocksdb}/lib";
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ stdenv.mkDerivation (
|
|||
|
||||
find "$out"/libexec/t3code -xtype l -delete
|
||||
|
||||
makeWrapper ${lib.getExe nodejs} "$out"/bin/t3code \
|
||||
makeWrapper ${lib.getExe nodejs} "$out"/bin/t3 \
|
||||
--add-flags "$out"/libexec/t3code/apps/server/dist/bin.mjs ${runtimePathWrapperArgs}
|
||||
|
||||
makeWrapper ${lib.getExe electron} "$out"/bin/t3code-desktop \
|
||||
|
|
@ -220,7 +220,7 @@ stdenv.mkDerivation (
|
|||
|
||||
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
|
||||
for shell in bash fish zsh; do
|
||||
installShellCompletion --cmd t3code --"$shell" <("$out/bin/t3code" --completions "$shell")
|
||||
installShellCompletion --cmd t3 --"$shell" <("$out/bin/t3" --completions "$shell")
|
||||
done
|
||||
'';
|
||||
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "tanka";
|
||||
version = "0.37.3";
|
||||
version = "0.37.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "grafana";
|
||||
repo = "tanka";
|
||||
rev = "v${finalAttrs.version}";
|
||||
sha256 = "sha256-C1Tg3ruitMa3t7FA74m73oL+kd7AvPGvnA66/x9VOpw=";
|
||||
sha256 = "sha256-quj1fZ5FeiH9KBO+rmHUYaXVkASWFBbj6Q6C9+vZsOk=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-nEiHJgEnq3KrPO0geNAz7NIp7tvCvtAUF8eNeP7NjPM=";
|
||||
vendorHash = "sha256-p9MGbZudHBiOfHc6qxBVVl/IGlCjwUbSDLW0lktKCGM=";
|
||||
|
||||
doCheck = false;
|
||||
# Required for versions >= 0.28 as they introduce a gowork.sum file. This is only used for tests so we can safely disable GOWORK
|
||||
|
|
|
|||
|
|
@ -1,31 +0,0 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 063fd793..99998a6b 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -377,3 +377,13 @@ install(
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||
)
|
||||
|
||||
+
|
||||
+# -----------------------------------------------------------------------------
|
||||
+# pkg-config
|
||||
+# -----------------------------------------------------------------------------
|
||||
+
|
||||
+configure_file(taskflow.pc.in taskflow.pc @ONLY)
|
||||
+install(
|
||||
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/taskflow.pc
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
|
||||
+)
|
||||
diff --git a/taskflow.pc.in b/taskflow.pc.in
|
||||
new file mode 100644
|
||||
index 00000000..fc649288
|
||||
--- /dev/null
|
||||
+++ b/taskflow.pc.in
|
||||
@@ -0,0 +1,7 @@
|
||||
+prefix=@CMAKE_INSTALL_PREFIX@
|
||||
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
||||
+
|
||||
+Name: Taskflow
|
||||
+Description: A General-purpose Task-parallel Programming System
|
||||
+Version: @PROJECT_VERSION@
|
||||
+Cflags: -I${includedir}
|
||||
|
|
@ -10,32 +10,19 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "taskflow";
|
||||
version = "4.0.0";
|
||||
version = "4.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "taskflow";
|
||||
repo = "taskflow";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-cWnKA6tCsKRfkleBJ38NRP2ciJu4sHtyTS8y5bBTfcA=";
|
||||
hash = "sha256-IxorLV5qQ8veFiwRka8k5oMR51KTUn10MbCIYNVToLk=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(replaceVars ./unvendor-doctest.patch {
|
||||
inherit doctest;
|
||||
})
|
||||
|
||||
# https://github.com/taskflow/taskflow/pull/785
|
||||
# TODO: remove when updating to the next release
|
||||
(fetchpatch {
|
||||
name = "fix-brace-init-with-explicit-constructor-for-GCC-15";
|
||||
url = "https://github.com/taskflow/taskflow/commit/de7dfe30594cd1f98398095b970a8320734a2382.patch";
|
||||
hash = "sha256-Ecl7dFvf2HDslv/5IHR5J2PYcRCN3EA4GahxOzcUS4g=";
|
||||
})
|
||||
|
||||
# Vendored from #786 as it does not apply cleanly on top of v0.4.0
|
||||
# https://github.com/taskflow/taskflow/pull/786
|
||||
# TODO: remove when updating to the next release
|
||||
./add-pkg-config-support.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
}:
|
||||
|
||||
buildTeleport {
|
||||
version = "17.7.24";
|
||||
hash = "sha256-45vaxznxRfa4X/V7hZsQKVIWvbVG8F2cEQN19xp4WQg=";
|
||||
version = "17.7.25";
|
||||
hash = "sha256-IrelrkTvOBcTkO7cHf572MU5KkOQq3we53dgFsDCSRo=";
|
||||
vendorHash = "sha256-ERwCdWdp230wkqsRUCnd1hbO4PqXo+gDPsoGbxQqt04=";
|
||||
cargoHash = "sha256-cDcDfptq8z0pwjImuAovv/5XwoaPb/ostyxkyNEbkRM=";
|
||||
pnpmHash = "sha256-hk9DI3GSBm2XttCYCi5kjhEhUMm5ToRQcbT+RYI+S2Q=";
|
||||
cargoHash = "sha256-BE/TBZoOaB3Th14E+t3qJ+0Uww56TtRA1sRQ+usFo+Y=";
|
||||
pnpmHash = "sha256-TARwHswSWbKk2eoyynuaOm7pvt2CwbjtklqnM+9/YXM=";
|
||||
|
||||
wasm-bindgen-cli = wasm-bindgen-cli_0_2_95;
|
||||
inherit buildGoModule withRdpClient extPatches;
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
}:
|
||||
|
||||
buildTeleport {
|
||||
version = "18.8.3";
|
||||
hash = "sha256-DHPOWIvzBCOT3GU0YHBtG46ctB0Nh8XwSmpl9vgCET8=";
|
||||
vendorHash = "sha256-0+fIoprAQyoom9xBpXGiEgmE4dWktcqlZQOzkRXYlKo=";
|
||||
pnpmHash = "sha256-8FlC9Sm12A5kfS9X0qYDNJOePZjeJU7LDTRlWUIEneA=";
|
||||
cargoHash = "sha256-IX0HCeCosXCe/oTYa8PImemf9op2AeagSnl44uBnSbM=";
|
||||
version = "18.9.1";
|
||||
hash = "sha256-FIPExc8tMoPXfWc7pQjwQRkxmiQEOxdkYgWS0GejQuk=";
|
||||
vendorHash = "sha256-BlQhypAoK85ID0pgmXbUboks88qjSg3p5E8qxyTIc9M=";
|
||||
pnpmHash = "sha256-ZGbuBMPwC3u/2qDTVLH2InOGVc94Vq0i3AKHMsOwq3k=";
|
||||
cargoHash = "sha256-KbmacTEOElmboHMK6YxWGC0brlDsX7kcvpaOOZmuops=";
|
||||
|
||||
wasm-bindgen-cli = wasm-bindgen-cli_0_2_99;
|
||||
buildGoModule = buildGo125Module;
|
||||
|
|
|
|||
|
|
@ -11,16 +11,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "temporal-cli";
|
||||
version = "1.7.1";
|
||||
version = "1.7.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "temporalio";
|
||||
repo = "cli";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-8e6sBlUC+N4P7FO4EOtc7sDzSAZwDovN+cGpV+rWObs=";
|
||||
hash = "sha256-HlG/zBfyd120ENERqdpfPuHPwu84bWijzoE4tEOsOeE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-N9K05Kcb0YaQO7M9gR22QzAOzbmgEhIqADcAESqYtQ8=";
|
||||
vendorHash = "sha256-GI+rLSCwBRcZytbJsxqCL1+3p5/UbCvTxUHn2ele3+c=";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -109,6 +109,18 @@ This includes build-related flags and metadata.
|
|||
}
|
||||
```
|
||||
|
||||
## Building WebAssembly Parsers
|
||||
|
||||
`buildGrammar` builds a native `$out/parser`.
|
||||
To build grammars as WebAssembly instead, use the `wasi32` cross package set, which installs `$out/parser.wasm`:
|
||||
|
||||
```nix
|
||||
pkgsCross.wasi32.tree-sitter.builtGrammars.tree-sitter-nix
|
||||
```
|
||||
|
||||
The Wasm build compiles `parser.c` and a C `scanner.c`.
|
||||
Grammars with C++ external scanners are rejected; use the native `buildGrammar` for those.
|
||||
|
||||
## Updating
|
||||
|
||||
All grammar sources have a default update script defined.
|
||||
|
|
|
|||
|
|
@ -16,6 +16,11 @@
|
|||
...
|
||||
}@args:
|
||||
|
||||
let
|
||||
isWasi = stdenv.hostPlatform.isWasi;
|
||||
parserOutput = if isWasi then "parser.wasm" else "parser";
|
||||
exportSymbol = "tree_sitter_${lib.replaceStrings [ "-" ] [ "_" ] language}";
|
||||
in
|
||||
stdenv.mkDerivation (
|
||||
{
|
||||
pname = "tree-sitter-${language}";
|
||||
|
|
@ -32,16 +37,21 @@ stdenv.mkDerivation (
|
|||
tree-sitter
|
||||
];
|
||||
|
||||
env = {
|
||||
CFLAGS = toString [
|
||||
"-Isrc"
|
||||
"-O2"
|
||||
];
|
||||
CXXFLAGS = toString [
|
||||
"-Isrc"
|
||||
"-O2"
|
||||
];
|
||||
};
|
||||
CFLAGS = [
|
||||
"-Isrc"
|
||||
# Match upstream `tree-sitter build --wasm`
|
||||
(if isWasi then "-Os" else "-O2")
|
||||
]
|
||||
++ lib.optionals isWasi [
|
||||
"-fvisibility=hidden"
|
||||
];
|
||||
CXXFLAGS = [
|
||||
"-Isrc"
|
||||
(if isWasi then "-Os" else "-O2")
|
||||
]
|
||||
++ lib.optionals isWasi [
|
||||
"-fvisibility=hidden"
|
||||
];
|
||||
|
||||
stripDebugList = [ "parser" ];
|
||||
|
||||
|
|
@ -94,25 +104,44 @@ stdenv.mkDerivation (
|
|||
tree-sitter generate
|
||||
'';
|
||||
|
||||
# When both scanner.{c,cc} exist, we should not link both since they may be the same but in
|
||||
# different languages. Just randomly prefer C++ if that happens.
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
if [[ -e src/scanner.cc ]]; then
|
||||
$CXX -fPIC -c src/scanner.cc -o scanner.o $CXXFLAGS
|
||||
elif [[ -e src/scanner.c ]]; then
|
||||
$CC -fPIC -c src/scanner.c -o scanner.o $CFLAGS
|
||||
fi
|
||||
$CC -fPIC -c src/parser.c -o parser.o $CFLAGS
|
||||
rm -rf parser
|
||||
$CXX -shared -o parser *.o
|
||||
runHook postBuild
|
||||
'';
|
||||
buildPhase =
|
||||
if isWasi then
|
||||
''
|
||||
runHook preBuild
|
||||
if [[ -e src/scanner.cc || -e src/scanner.cpp ]]; then
|
||||
nixErrorLog "tree-sitter wasm grammars only support C external scanners"
|
||||
exit 1
|
||||
fi
|
||||
if [[ -e src/scanner.c ]]; then
|
||||
$CC -fPIC -c src/scanner.c -o scanner.o $CFLAGS
|
||||
fi
|
||||
$CC -fPIC -c src/parser.c -o parser.o $CFLAGS
|
||||
rm -rf parser.wasm
|
||||
$CC -shared -o parser.wasm *.o \
|
||||
-Wl,--export=${exportSymbol} \
|
||||
-Wl,--allow-undefined \
|
||||
-Wl,--no-entry \
|
||||
-nostdlib
|
||||
runHook postBuild
|
||||
''
|
||||
else
|
||||
''
|
||||
runHook preBuild
|
||||
if [[ -e src/scanner.cc ]]; then
|
||||
$CXX -fPIC -c src/scanner.cc -o scanner.o $CXXFLAGS
|
||||
elif [[ -e src/scanner.c ]]; then
|
||||
$CC -fPIC -c src/scanner.c -o scanner.o $CFLAGS
|
||||
fi
|
||||
$CC -fPIC -c src/parser.c -o parser.o $CFLAGS
|
||||
rm -rf parser
|
||||
$CXX -shared -o parser *.o
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir $out
|
||||
mv parser $out/
|
||||
mv ${parserOutput} $out/
|
||||
if [[ -f tree-sitter.json ]]; then
|
||||
cp tree-sitter.json $out/
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -6,13 +6,14 @@
|
|||
fetchpatch,
|
||||
fetchFromCodeberg,
|
||||
nix-update-script,
|
||||
stdenv,
|
||||
}:
|
||||
|
||||
let
|
||||
/**
|
||||
Set of grammar sources. See ./grammar-sources.nix to define a new grammar.
|
||||
*/
|
||||
grammar-sources = import ./grammar-sources.nix { inherit lib fetchpatch; };
|
||||
grammar-sources = import ./grammar-sources.nix { inherit lib fetchpatch stdenv; };
|
||||
|
||||
/**
|
||||
Parse a flakeref style string to { type, owner, repo, ref }
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
{ fetchpatch, lib }:
|
||||
{
|
||||
fetchpatch,
|
||||
lib,
|
||||
stdenv,
|
||||
}:
|
||||
|
||||
{
|
||||
|
||||
|
|
@ -1757,6 +1761,8 @@
|
|||
url = "github:nvim-neorg/tree-sitter-norg";
|
||||
hash = "sha256-z3h5qMuNKnpQgV62xZ02F5vWEq4VEnm5lxwEnIFu+Rw=";
|
||||
meta = {
|
||||
# Uses a C++ external scanner, unsupported by the WASM grammar build.
|
||||
broken = stdenv.hostPlatform.isWasi;
|
||||
license = lib.licenses.mit;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
nix-update-script,
|
||||
which,
|
||||
rustPlatform,
|
||||
runCommand,
|
||||
emscripten,
|
||||
openssl,
|
||||
pkg-config,
|
||||
|
|
@ -60,6 +61,7 @@ let
|
|||
fetchFromSourcehut
|
||||
fetchFromCodeberg
|
||||
fetchpatch
|
||||
stdenv
|
||||
;
|
||||
};
|
||||
|
||||
|
|
@ -112,6 +114,8 @@ let
|
|||
|
||||
allGrammars = lib.filter (p: !(p.meta.broken or false)) (lib.attrValues builtGrammars);
|
||||
|
||||
isWasi = stdenv.hostPlatform.isWasi;
|
||||
|
||||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "tree-sitter";
|
||||
|
|
@ -246,6 +250,19 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
|||
tests = {
|
||||
# make sure all grammars build
|
||||
builtGrammars = lib.recurseIntoAttrs builtGrammars;
|
||||
}
|
||||
// lib.optionalAttrs isWasi {
|
||||
wasmGrammar =
|
||||
let
|
||||
grammar = builtGrammars.tree-sitter-nix;
|
||||
in
|
||||
runCommand "tree-sitter-wasm-grammar-test" { } ''
|
||||
test -f ${grammar}/parser.wasm
|
||||
# WebAssembly binaries start with "\0asm".
|
||||
test "$(od -An -tx1 -N4 ${grammar}/parser.wasm | tr -d ' \n')" = "0061736d"
|
||||
test ! -e ${grammar}/parser
|
||||
touch $out
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "uutils-tar";
|
||||
version = "0-unstable-2026-06-15";
|
||||
version = "0-unstable-2026-06-23";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "uutils";
|
||||
repo = "tar";
|
||||
rev = "4c1c362e5766760b7ffc120f0ccf25a5344122c5";
|
||||
hash = "sha256-oLa9KGqcSay3u6Jt3BMNz/evwS3g7u627qOhlqR+1Eg=";
|
||||
rev = "ad4e2e31cc9547868dc9137c882db0ea45f89d32";
|
||||
hash = "sha256-p4dkjLwV8SUDGx/atIajYW19+eDgC0AGlHzFOoVHFlA=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-xZqRhBq5zhCvJ6/qAXYNsylFpph6EiPobH0SuWHCtes=";
|
||||
cargoHash = "sha256-aY0dJaYmpQkeFUcYJDnknwEdopa0Sf1hs4Yux+bSBDo=";
|
||||
|
||||
cargoBuildFlags = [ "--workspace" ];
|
||||
|
||||
|
|
|
|||
|
|
@ -22,13 +22,13 @@ let
|
|||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "vencord";
|
||||
version = "1.14.13";
|
||||
version = "1.14.15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Vendicated";
|
||||
repo = "Vencord";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Xqk/akTa/NcHjSm6h77y6Fkvq7ayBcR0w0HG0Hwfkf8=";
|
||||
hash = "sha256-jQeLZa1rpKDkzWSpAqOa8snGRKLpv9xf9cwJ6hUwMzA=";
|
||||
};
|
||||
|
||||
patches = [ ./fix-deps.patch ];
|
||||
|
|
@ -46,8 +46,8 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
postPatch
|
||||
;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-hk1rnNog5xvuIVI0M1ZJ5xrEuk0zcBiYsbROUycdi+A=";
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-pm5f6bGm07pzNCqpDHRyKFnuX2ZTE5w9BtJu5xXPHiI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@
|
|||
|
||||
python3.pkgs.buildPythonApplication (finalAttrs: {
|
||||
pname = "vunnel";
|
||||
version = "0.60.0";
|
||||
version = "0.61.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "anchore";
|
||||
repo = "vunnel";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-CnWD021r5I9xH1YRp5RO520hq8eIHPJcPomq/UiJ9gA=";
|
||||
hash = "sha256-rxA+BVu+TkegZ6RXirzlxPxpURXdFT6KvSNSPPlef7U=";
|
||||
leaveDotGit = true;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,43 +1,41 @@
|
|||
{
|
||||
lib,
|
||||
python3,
|
||||
python3Packages,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication (finalAttrs: {
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "wayback-machine-archiver";
|
||||
version = "1.9.1";
|
||||
version = "3.5.2";
|
||||
pyproject = true;
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "agude";
|
||||
repo = "wayback-machine-archiver";
|
||||
rev = "v${finalAttrs.version}";
|
||||
sha256 = "0dnnqx507gpj8wsx6f2ivfmha969ydayiqsvxh23p9qcixw9257x";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-LUWPc1wMSpBIdaje/pbmQYHTrYog/9UiphMY1fzxgPc=";
|
||||
};
|
||||
|
||||
build-system = with python3.pkgs; [
|
||||
setuptools
|
||||
pypandoc
|
||||
build-system = with python3Packages; [ setuptools ];
|
||||
|
||||
dependencies = with python3Packages; [
|
||||
requests
|
||||
python-dotenv
|
||||
];
|
||||
|
||||
dependencies = with python3.pkgs; [ requests ];
|
||||
|
||||
nativeCheckInputs = with python3.pkgs; [
|
||||
nativeCheckInputs = with python3Packages; [
|
||||
pytestCheckHook
|
||||
requests-mock
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace setup.py \
|
||||
--replace-fail \"pytest-runner\", ""
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "wayback_machine_archiver" ];
|
||||
|
||||
meta = {
|
||||
description = "Python script to submit web pages to the Wayback Machine for archiving";
|
||||
homepage = "https://github.com/agude/wayback-machine-archiver";
|
||||
changelog = "https://github.com/agude/wayback-machine-archiver/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ dandellion ];
|
||||
mainProgram = "archiver";
|
||||
|
|
|
|||
|
|
@ -10,17 +10,17 @@
|
|||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "werf";
|
||||
version = "2.70.0";
|
||||
version = "2.72.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "werf";
|
||||
repo = "werf";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-3Oe/IjmzD7+LE6OVLACDgknrl4cb9yJ/lDvKBjrvFNQ=";
|
||||
hash = "sha256-6CspoMRKPf20zQrmgD2RO6xMnTuyvM56AElKvMNNUM0=";
|
||||
};
|
||||
|
||||
proxyVendor = true;
|
||||
vendorHash = "sha256-iMoR38Qb2utzdkhKUrCQ0Ohm8f6jdYTuLkeMhCLqvN4=";
|
||||
vendorHash = "sha256-Ot2P417uqtdpxBd46NelxThF4Ca7krIInVfJ4OxnTRI=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
buildInputs =
|
||||
|
|
|
|||
|
|
@ -5,11 +5,9 @@
|
|||
buildGo126Module,
|
||||
makeWrapper,
|
||||
nix-update-script,
|
||||
v2ray-geoip,
|
||||
v2ray-domain-list-community,
|
||||
v2ray-rules-dat,
|
||||
assets ? [
|
||||
v2ray-geoip
|
||||
v2ray-domain-list-community
|
||||
v2ray-rules-dat
|
||||
],
|
||||
}:
|
||||
|
||||
|
|
|
|||
16
pkgs/by-name/za/zammad/gemset.nix
generated
16
pkgs/by-name/za/zammad/gemset.nix
generated
|
|
@ -798,10 +798,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1aymcakhzl83k77g2f2krz07bg1cbafbcd2ghvwr4lky3rz86mkb";
|
||||
sha256 = "1c2i64xsd35vijnb50rxb70g508s0x674xi0qpyyb8jy7bncl4j4";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.3.6";
|
||||
version = "1.3.7";
|
||||
};
|
||||
connection_pool = {
|
||||
groups = [
|
||||
|
|
@ -1355,10 +1355,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1b930ag8nh99v8n9645ac1wcah9fx0mclbp323q4i1ly9acvkk3k";
|
||||
sha256 = "0y7j6yzv07zggic6g0p2v1ivnvkzsbqjnfdl4215qqb6cxz290hq";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.14.2";
|
||||
version = "2.14.3";
|
||||
};
|
||||
faraday-follow_redirects = {
|
||||
dependencies = [ "faraday" ];
|
||||
|
|
@ -1815,10 +1815,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1anz6a6n33x4s3906s0bz6x161kk1ns3h7xxsn3rpxkfsw7k2m33";
|
||||
sha256 = "16mp8vzgxa8nsa81np042za453j8b0ihpjkf666s7byxrnvjb44v";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.19.8";
|
||||
version = "2.19.9";
|
||||
};
|
||||
json-jwt = {
|
||||
dependencies = [
|
||||
|
|
@ -2325,10 +2325,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1s30b7h7qpyim30m8060xs415mbr3ci7i5hdg09chh1aqfx2qcbq";
|
||||
sha256 = "1d9safb4dly6qmc2g06444l0zifby52yy6j1a5fa1g4j3ihm3jah";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.19.3";
|
||||
version = "1.19.4";
|
||||
};
|
||||
nori = {
|
||||
dependencies = [ "bigdecimal" ];
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
let
|
||||
pname = "zammad";
|
||||
version = "7.1.0";
|
||||
version = "7.1.1";
|
||||
|
||||
src = applyPatches {
|
||||
src = fetchFromGitHub (lib.importJSON ./source.json);
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"owner": "zammad",
|
||||
"repo": "zammad",
|
||||
"rev": "ecbb861ce33908e4b52bb2c78d816a0eef69e6a6",
|
||||
"hash": "sha256-5mK120Oo8LEIA7yY9erc57WRUeCwzsIamTiAxPgePIQ=",
|
||||
"rev": "cdd01e9160ec4b90e869ccf4aa3d99eb223032e7",
|
||||
"hash": "sha256-BCrvhH5pgqG2jM3qE4NmtHXzKuSELHhI0QU3KIXUbMo=",
|
||||
"fetchSubmodules": true
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "zensical";
|
||||
version = "0.0.45";
|
||||
version = "0.0.46";
|
||||
pyproject = true;
|
||||
|
||||
# We fetch from PyPi, because GitHub repo does not contain all sources.
|
||||
|
|
@ -16,12 +16,12 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
|||
# We could combine sources, but then nix-update won't work.
|
||||
src = fetchPypi {
|
||||
inherit (finalAttrs) pname version;
|
||||
hash = "sha256-MVvOSrBHAzjdNYit04+zJfhAhWw3VyLmgCvVigZEYmY=";
|
||||
hash = "sha256-PsIfT7HnjNfA1rB64zawR3Die6Ag2rxFeyeQ5dNPGXg=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-f2CNYnHLZrffyMw/lZq/cVb5sB1+CfZzlAtQUMvlwqE=";
|
||||
hash = "sha256-RNd7C6dRfH59ah2rbwYuwJGU+mDZKqXUwFX8+NfLkgY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = with rustPlatform; [
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ python3Packages.buildPythonApplication {
|
|||
--replace-fail 'from configparser import SafeConfigParser' 'from configparser import ConfigParser as SafeConfigParser'
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = [ python3Packages.gpgme ];
|
||||
propagatedBuildInputs = [ python3Packages.gpg ];
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue