mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-25 08:23:09 +00:00
Merge remote-tracking branch 'origin/master' into staging-next
This commit is contained in:
commit
3f7da3dfa9
3
.github/PULL_REQUEST_TEMPLATE.md
vendored
3
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,6 +1,7 @@
|
||||
## Description of changes
|
||||
|
||||
<!--
|
||||
^ Please summarise the changes you have done and explain why they are necessary here ^
|
||||
|
||||
For package updates please link to a changelog or describe changes, this helps your fellow maintainers discover breaking updates.
|
||||
For new packages please briefly describe the package or provide a link to its homepage.
|
||||
-->
|
||||
|
@ -30,6 +30,7 @@ postgresql-test-hook.section.md
|
||||
premake.section.md
|
||||
python.section.md
|
||||
scons.section.md
|
||||
tauri.section.md
|
||||
tetex-tex-live.section.md
|
||||
unzip.section.md
|
||||
validatePkgConfig.section.md
|
||||
|
108
doc/hooks/tauri.section.md
Normal file
108
doc/hooks/tauri.section.md
Normal file
@ -0,0 +1,108 @@
|
||||
# cargo-tauri.hook {#tauri-hook}
|
||||
|
||||
[Tauri](https://tauri.app/) is a framework for building smaller, faster, and
|
||||
more secure desktop applications with a web frontend.
|
||||
|
||||
In Nixpkgs, `cargo-tauri.hook` overrides the default build and install phases.
|
||||
|
||||
## Example code snippet {#tauri-hook-example-code-snippet}
|
||||
|
||||
```nix
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
rustPlatform,
|
||||
fetchNpmDeps,
|
||||
cargo-tauri,
|
||||
darwin,
|
||||
glib-networking,
|
||||
libsoup,
|
||||
nodejs,
|
||||
npmHooks,
|
||||
openssl,
|
||||
pkg-config,
|
||||
webkitgtk,
|
||||
wrapGAppsHook3,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
# . . .
|
||||
|
||||
cargoHash = "...";
|
||||
|
||||
# Assuming our app's frontend uses `npm` as a package manager
|
||||
npmDeps = fetchNpmDeps {
|
||||
name = "${pname}-npm-deps-${version}";
|
||||
inherit src;
|
||||
hash = "...";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
# Pull in our main hook
|
||||
cargo-tauri.hook
|
||||
|
||||
# Setup npm
|
||||
nodejs
|
||||
npmHooks.npmConfigHook
|
||||
|
||||
# Make sure we can find our libraries
|
||||
pkg-config
|
||||
wrapGAppsHook3
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
[ openssl ]
|
||||
++ lib.optionals stdenv.isLinux [
|
||||
glib-networking # Most Tauri apps need networking
|
||||
libsoup
|
||||
webkitgtk
|
||||
]
|
||||
++ lib.optionals stdenv.isDarwin (
|
||||
with darwin.apple_sdk.frameworks;
|
||||
[
|
||||
AppKit
|
||||
CoreServices
|
||||
Security
|
||||
WebKit
|
||||
]
|
||||
);
|
||||
|
||||
# Set our Tauri source directory
|
||||
cargoRoot = "src-tauri";
|
||||
# And make sure we build there too
|
||||
buildAndTestSubdir = cargoRoot;
|
||||
|
||||
# . . .
|
||||
}
|
||||
```
|
||||
|
||||
## Variables controlling cargo-tauri {#tauri-hook-variables-controlling}
|
||||
|
||||
### Tauri Exclusive Variables {#tauri-hook-exclusive-variables}
|
||||
|
||||
#### `tauriBuildFlags` {#tauri-build-flags}
|
||||
|
||||
Controls the flags passed to `cargo tauri build`.
|
||||
|
||||
#### `tauriBundleType` {#tauri-bundle-type}
|
||||
|
||||
The [bundle type](https://tauri.app/v1/guides/building/) to build.
|
||||
|
||||
#### `dontTauriBuild` {#dont-tauri-build}
|
||||
|
||||
Disables using `tauriBuildHook`.
|
||||
|
||||
#### `dontTauriInstall` {#dont-tauri-install}
|
||||
|
||||
Disables using `tauriInstallPostBuildHook` and `tauriInstallHook`.
|
||||
|
||||
### Honored Variables {#tauri-hook-honored-variables}
|
||||
|
||||
Along with those found in [](#compiling-rust-applications-with-cargo), the
|
||||
following variables used by `cargoBuildHook` and `cargoInstallHook` are honored
|
||||
by the cargo-tauri setup hook.
|
||||
|
||||
- `buildAndTestSubdir`
|
||||
- `cargoBuildType`
|
||||
- `cargoBuildNoDefaultFeatures`
|
||||
- `cargoBuildFeatures`
|
111
lib/modules.nix
111
lib/modules.nix
@ -354,12 +354,7 @@ let
|
||||
else if m._type == "if" || m._type == "override" then
|
||||
loadModule args fallbackFile fallbackKey { config = m; }
|
||||
else
|
||||
throw (
|
||||
"Could not load a value as a module, because it is of type ${lib.strings.escapeNixString m._type}"
|
||||
+ optionalString (fallbackFile != unknownModule) ", in file ${toString fallbackFile}."
|
||||
+ optionalString (m._type == "configuration") " If you do intend to import this configuration, please only import the modules that make up the configuration. You may have to create a `let` binding, file or attribute to give yourself access to the relevant modules.\nWhile loading a configuration into the module system is a very sensible idea, it can not be done cleanly in practice."
|
||||
# Extended explanation: That's because a finalized configuration is more than just a set of modules. For instance, it has its own `specialArgs` that, by the nature of `specialArgs` can't be loaded through `imports` or the the `modules` argument. So instead, we have to ask you to extract the relevant modules and use those instead. This way, we keep the module system comparatively simple, and hopefully avoid a bad surprise down the line.
|
||||
)
|
||||
throw (messages.not_a_module { inherit fallbackFile; value = m; _type = m._type; expectedClass = class; })
|
||||
else if isList m then
|
||||
let defs = [{ file = fallbackFile; value = m; }]; in
|
||||
throw "Module imports can't be nested lists. Perhaps you meant to remove one level of lists? Definitions: ${showDefs defs}"
|
||||
@ -1450,6 +1445,110 @@ let
|
||||
collectModules = collectModules null;
|
||||
};
|
||||
|
||||
/**
|
||||
Error messages produced by the module system.
|
||||
|
||||
We factor these out to improve the flow when reading the code.
|
||||
|
||||
Functions in `messages` that produce error messages are spelled in
|
||||
lower_snake_case. This goes against the convention in order to make the
|
||||
error message implementation more readable, and to visually distinguish
|
||||
them from other functions in the module system.
|
||||
*/
|
||||
messages = let
|
||||
inherit (lib.strings) concatMapStringsSep escapeNixString trim;
|
||||
/** "" or ", in file FOO" */
|
||||
into_fallback_file_maybe = file:
|
||||
optionalString
|
||||
(file != null && file != unknownModule)
|
||||
", while trying to load a module into ${toString file}";
|
||||
|
||||
/** Format text with one line break between each list item. */
|
||||
lines = concatMapStringsSep "\n" trim;
|
||||
|
||||
/** Format text with two line break between each list item. */
|
||||
paragraphs = concatMapStringsSep "\n\n" trim;
|
||||
|
||||
/**
|
||||
```
|
||||
optionalMatch
|
||||
{ foo = "Foo result";
|
||||
bar = "Bar result";
|
||||
} "foo"
|
||||
== [ "Foo result" ]
|
||||
|
||||
optionalMatch { foo = "Foo"; } "baz" == [ ]
|
||||
|
||||
optionalMatch { foo = "Foo"; } true == [ ]
|
||||
```
|
||||
*/
|
||||
optionalMatch = cases: value:
|
||||
if isString value && cases?${value}
|
||||
then [ cases.${value} ]
|
||||
else [];
|
||||
|
||||
# esc = builtins.fromJSON "\"\\u001b\"";
|
||||
esc = builtins.fromJSON "\"\\u001b\"";
|
||||
# Bold purple for warnings
|
||||
warn = s: "${esc}[1;35m${s}${esc}[0m";
|
||||
# Bold green for suggestions
|
||||
good = s: "${esc}[1;32m${s}${esc}[0m";
|
||||
# Bold, default color for code
|
||||
code = s: "${esc}[1m${s}${esc}[0m";
|
||||
|
||||
in {
|
||||
|
||||
/** When load a value with a (wrong) _type as a module */
|
||||
not_a_module = { fallbackFile, value, _type, expectedClass ? null }:
|
||||
paragraphs (
|
||||
[ ''
|
||||
Expected a module, but found a value of type ${warn (escapeNixString _type)}${into_fallback_file_maybe fallbackFile}.
|
||||
A module is typically loaded by adding it the ${code "imports = [ ... ];"} attribute of an existing module, or in the ${code "modules = [ ... ];"} argument of various functions.
|
||||
Please make sure that each of the list items is a module, and not a different kind of value.
|
||||
''
|
||||
]
|
||||
++ (optionalMatch
|
||||
{
|
||||
"configuration" = trim ''
|
||||
If you really mean to import this configuration, instead please only import the modules that make up the configuration.
|
||||
You may have to create a `let` binding, file or attribute to give yourself access to the relevant modules.
|
||||
While loading a configuration into the module system is a very sensible idea, it can not be done cleanly in practice.
|
||||
'';
|
||||
# ^^ Extended explanation: That's because a finalized configuration is more than just a set of modules. For instance, it has its own `specialArgs` that, by the nature of `specialArgs` can't be loaded through `imports` or the the `modules` argument. So instead, we have to ask you to extract the relevant modules and use those instead. This way, we keep the module system comparatively simple, and hopefully avoid a bad surprise down the line.
|
||||
|
||||
"flake" = lines
|
||||
([(trim ''
|
||||
Perhaps you forgot to select an attribute name?
|
||||
Instead of, for example,
|
||||
${warn "inputs.someflake"}
|
||||
you need to write something like
|
||||
${warn "inputs.someflake"}${
|
||||
if expectedClass == null
|
||||
then good ".modules.someApp.default"
|
||||
else good ".modules.${expectedClass}.default"
|
||||
|
||||
}
|
||||
'')]
|
||||
++ optionalMatch
|
||||
{ # We'll no more than 5 custom suggestions here.
|
||||
# Please switch to `.modules.${class}` in your Module System application.
|
||||
"nixos" = trim ''
|
||||
or
|
||||
${warn "inputs.someflake"}${good ".nixosModules.default"}
|
||||
'';
|
||||
"darwin" = trim ''
|
||||
or
|
||||
${warn "inputs.someflake"}${good ".darwinModules.default"}
|
||||
'';
|
||||
}
|
||||
expectedClass
|
||||
);
|
||||
}
|
||||
_type
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
in
|
||||
private //
|
||||
{
|
||||
|
@ -384,8 +384,17 @@ let
|
||||
}.${cpu.name} or cpu.name;
|
||||
vendor_ = final.rust.platform.vendor;
|
||||
# TODO: deprecate args.rustc in favour of args.rust after 23.05 is EOL.
|
||||
in args.rust.rustcTarget or args.rustc.config
|
||||
or "${cpu_}-${vendor_}-${kernel.name}${optionalString (abi.name != "unknown") "-${abi.name}"}";
|
||||
in
|
||||
args.rust.rustcTarget or
|
||||
args.rustc.config or (
|
||||
# Rust uses `wasm32-wasip?` rather than `wasm32-unknown-wasi`.
|
||||
# We cannot know which subversion does the user want, and
|
||||
# currently use WASI 0.1 as default for compatibility. Custom
|
||||
# users can set `rust.rustcTarget` to override it.
|
||||
if final.isWasi
|
||||
then "${cpu_}-wasip1"
|
||||
else "${cpu_}-${vendor_}-${kernel.name}${optionalString (abi.name != "unknown") "-${abi.name}"}"
|
||||
);
|
||||
|
||||
# The name of the rust target if it is standard, or the json file
|
||||
# containing the custom target spec.
|
||||
|
@ -256,7 +256,7 @@ rec {
|
||||
iphone64 = {
|
||||
config = "aarch64-apple-ios";
|
||||
# config = "aarch64-apple-darwin14";
|
||||
sdkVer = "14.3";
|
||||
darwinSdkVersion = "14.3";
|
||||
xcodeVer = "12.3";
|
||||
xcodePlatform = "iPhoneOS";
|
||||
useiOSPrebuilt = true;
|
||||
@ -265,7 +265,7 @@ rec {
|
||||
iphone32 = {
|
||||
config = "armv7a-apple-ios";
|
||||
# config = "arm-apple-darwin10";
|
||||
sdkVer = "14.3";
|
||||
darwinSdkVersion = "14.3";
|
||||
xcodeVer = "12.3";
|
||||
xcodePlatform = "iPhoneOS";
|
||||
useiOSPrebuilt = true;
|
||||
@ -274,7 +274,7 @@ rec {
|
||||
iphone64-simulator = {
|
||||
config = "x86_64-apple-ios";
|
||||
# config = "x86_64-apple-darwin14";
|
||||
sdkVer = "14.3";
|
||||
darwinSdkVersion = "14.3";
|
||||
xcodeVer = "12.3";
|
||||
xcodePlatform = "iPhoneSimulator";
|
||||
darwinPlatform = "ios-simulator";
|
||||
@ -284,7 +284,7 @@ rec {
|
||||
iphone32-simulator = {
|
||||
config = "i686-apple-ios";
|
||||
# config = "i386-apple-darwin11";
|
||||
sdkVer = "14.3";
|
||||
darwinSdkVersion = "14.3";
|
||||
xcodeVer = "12.3";
|
||||
xcodePlatform = "iPhoneSimulator";
|
||||
darwinPlatform = "ios-simulator";
|
||||
|
@ -534,9 +534,10 @@ checkConfigError 'The module .*/module-class-is-darwin.nix was imported into nix
|
||||
checkConfigError 'A submoduleWith option is declared multiple times with conflicting class values "darwin" and "nixos".' config.sub.mergeFail.config ./class-check.nix
|
||||
|
||||
# _type check
|
||||
checkConfigError 'Could not load a value as a module, because it is of type "flake", in file .*/module-imports-_type-check.nix' config.ok.config ./module-imports-_type-check.nix
|
||||
checkConfigError 'Expected a module, but found a value of type .*"flake".*, while trying to load a module into .*/module-imports-_type-check.nix' config.ok.config ./module-imports-_type-check.nix
|
||||
checkConfigOutput '^true$' "$@" config.enable ./declare-enable.nix ./define-enable-with-top-level-mkIf.nix
|
||||
checkConfigError 'Could not load a value as a module, because it is of type "configuration", in file .*/import-configuration.nix.*please only import the modules that make up the configuration.*' config ./import-configuration.nix
|
||||
checkConfigError 'Expected a module, but found a value of type .*"configuration".*, while trying to load a module into .*/import-configuration.nix.' config ./import-configuration.nix
|
||||
checkConfigError 'please only import the modules that make up the configuration' config ./import-configuration.nix
|
||||
|
||||
# doRename works when `warnings` does not exist.
|
||||
checkConfigOutput '^1234$' config.c.d.e ./doRename-basic.nix
|
||||
|
@ -8479,6 +8479,11 @@
|
||||
githubId = 15121114;
|
||||
name = "Tom Herbers";
|
||||
};
|
||||
herschenglime = {
|
||||
github = "Herschenglime";
|
||||
githubId = 69494718;
|
||||
name = "Herschenglime";
|
||||
};
|
||||
hexa = {
|
||||
email = "hexa@darmstadt.ccc.de";
|
||||
matrix = "@hexa:lossy.network";
|
||||
@ -11380,6 +11385,12 @@
|
||||
githubId = 787421;
|
||||
name = "Kevin Quick";
|
||||
};
|
||||
kraanzu = {
|
||||
name = "Murli Tawari";
|
||||
email = "kraanzu@gmail.com";
|
||||
github = "kraanzu";
|
||||
githubId = 97718086;
|
||||
};
|
||||
kradalby = {
|
||||
name = "Kristoffer Dalby";
|
||||
email = "kristoffer@dalby.cc";
|
||||
@ -15230,6 +15241,11 @@
|
||||
github = "noaccOS";
|
||||
githubId = 24324352;
|
||||
};
|
||||
noahgitsham = {
|
||||
name = "Noah Gitsham";
|
||||
github = "noahgitsham";
|
||||
githubId = 73707948;
|
||||
};
|
||||
nobbz = {
|
||||
name = "Norbert Melzer";
|
||||
email = "timmelzer+nixpkgs@gmail.com";
|
||||
|
@ -84,6 +84,8 @@
|
||||
alos create normal users and change passwords. Available as
|
||||
[services.userborn](#opt-services.userborn.enable)
|
||||
|
||||
- [Hatsu](https://github.com/importantimport/hatsu), a self-hosted bridge that interacts with Fediverse on behalf of your static site. Available as [services.hatsu](options.html#opt-services.hatsu).
|
||||
|
||||
- [Flood](https://flood.js.org/), a beautiful WebUI for various torrent clients. Available as [services.flood](options.html#opt-services.flood).
|
||||
|
||||
- [Firefly-iii Data Importer](https://github.com/firefly-iii/data-importer), a data importer for Firefly-III. Available as [services.firefly-iii-data-importer](options.html#opt-services.firefly-iii-data-importer)
|
||||
@ -302,6 +304,12 @@
|
||||
|
||||
- `tests.overriding` has its `passthru.tests` restructured as an attribute set instead of a list, making individual tests accessible by their names.
|
||||
|
||||
- Package `skk-dict` was split into multiple packages under `skkDictionaries`.
|
||||
If in doubt, try `skkDictionaries.l`. As part of this change, the dictionaries
|
||||
were moved from `$out/share` to `$out/share/skk`. Also, the dictionaries won't
|
||||
be converted to UTF-8 unless the `useUtf8` package option is enabled. UTF-8
|
||||
converted dictionaries will have the .utf8 suffix appended to its filename.
|
||||
|
||||
- `vaultwarden` lost the capability to bind to privileged ports. If you rely on
|
||||
this behavior, override the systemd unit to allow `CAP_NET_BIND_SERVICE` in
|
||||
your local configuration.
|
||||
@ -545,6 +553,16 @@
|
||||
|
||||
- The kubelet configuration file can now be amended with arbitrary additional content using the `services.kubernetes.kubelet.extraConfig` option.
|
||||
|
||||
- The `services.seafile` module was updated to major version 11.
|
||||
- As part of this upgrade, the database backend will be migrated to MySQL.
|
||||
This process should be automatic, but in case of a botched migration,
|
||||
old sqlite files are not removed and can be used to manually migrate the database.
|
||||
- Additionally, the updated CSRF protection may prevent some users from logging in.
|
||||
Specific origin addresses can be whitelisted using the `services.seafile.seahubExtraConf` option
|
||||
(e.g. `services.seafile.seahubExtraConf = ''CSRF_TRUSTED_ORIGINS = ["https://example.com"]'';`).
|
||||
Note that first solution of the [official FAQ answer](https://cloud.seatable.io/dtable/external-links/7b976c85f504491cbe8e/?tid=0000&vid=0000&row-id=BQhH-2HSQs68Nq2EW91DBA)
|
||||
is not allowed by the `services.nginx` module's config-checker.
|
||||
|
||||
- To facilitate dependency injection, the `imgui` package now builds a static archive using vcpkg' CMake rules.
|
||||
The derivation now installs "impl" headers selectively instead of by a wildcard.
|
||||
Use `imgui.src` if you just want to access the unpacked sources.
|
||||
@ -560,6 +578,8 @@
|
||||
- `security.pam.u2f` now follows RFC42.
|
||||
All module options are now settable through the freeform `.settings`.
|
||||
|
||||
- Mikutter was removed because the package was broken and had no maintainers.
|
||||
|
||||
- Gollum was upgraded to major version 6. Read their [migration notes](https://github.com/gollum/gollum/wiki/6.0-Release-Notes).
|
||||
|
||||
- The hooks `yarnConfigHook` and `yarnBuildHook` were added. These should replace `yarn2nix.mkYarnPackage` and other `yarn2nix` related tools. The motivation to get rid of `yarn2nix` tools is the fact that they are too complex and hard to maintain, and they rely upon too much Nix evaluation which is problematic if import-from-derivation is not allowed (see more details at [#296856](https://github.com/NixOS/nixpkgs/issues/296856). The transition from `mkYarnPackage` to `yarn{Config,Build}Hook` is tracked at [#324246](https://github.com/NixOS/nixpkgs/issues/324246).
|
||||
@ -583,6 +603,9 @@
|
||||
|
||||
- The arguments from [](#opt-services.postgresql.initdbArgs) now get shell-escaped.
|
||||
|
||||
- `cargo-tauri.hook` was introduced to help users build [Tauri](https://tauri.app/) projects. It is meant to be used alongside
|
||||
`rustPlatform.buildRustPackage` and Node hooks such as `npmConfigHook`, `pnpm.configHook`, and the new `yarnConfig`
|
||||
|
||||
- Support for *runner registration tokens* has been [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/380872)
|
||||
in `gitlab-runner` 15.6 and is expected to be removed in `gitlab-runner` 18.0. Configuration of existing runners
|
||||
should be changed to using *runner authentication tokens* by configuring
|
||||
|
@ -1427,6 +1427,7 @@
|
||||
./services/web-apps/goatcounter.nix
|
||||
./services/web-apps/guacamole-client.nix
|
||||
./services/web-apps/guacamole-server.nix
|
||||
./services/web-apps/hatsu.nix
|
||||
./services/web-apps/healthchecks.nix
|
||||
./services/web-apps/hedgedoc.nix
|
||||
./services/web-apps/hledger-web.nix
|
||||
|
@ -19,6 +19,6 @@ in
|
||||
# To make a cardboard session available for certain DMs like SDDM
|
||||
services.displayManager.sessionPackages = [ cfg.package ];
|
||||
}
|
||||
(import ./wayland-session.nix { inherit lib; })
|
||||
(import ./wayland-session.nix { inherit lib pkgs; })
|
||||
]);
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ in
|
||||
}
|
||||
|
||||
(import ./wayland-session.nix {
|
||||
inherit lib;
|
||||
inherit lib pkgs;
|
||||
enableXWayland = cfg.xwayland.enable;
|
||||
enableWlrPortal = lib.mkDefault false; # Hyprland has its own portal, wlr is not needed
|
||||
})
|
||||
|
@ -20,6 +20,6 @@ in
|
||||
# To make a labwc session available for certain DMs like SDDM
|
||||
services.displayManager.sessionPackages = [ cfg.package ];
|
||||
}
|
||||
(import ./wayland-session.nix { inherit lib; })
|
||||
(import ./wayland-session.nix { inherit lib pkgs; })
|
||||
]);
|
||||
}
|
||||
|
@ -30,11 +30,12 @@ in
|
||||
}
|
||||
|
||||
(import ./wayland-session.nix {
|
||||
inherit lib;
|
||||
inherit lib pkgs;
|
||||
# Hardcoded path in Mir, not really possible to disable
|
||||
enableXWayland = true;
|
||||
# No portal support yet: https://github.com/mattkae/miracle-wm/issues/164
|
||||
enableWlrPortal = false;
|
||||
enableGtkPortal = false;
|
||||
})
|
||||
]
|
||||
);
|
||||
|
@ -56,7 +56,7 @@ in
|
||||
}
|
||||
|
||||
(import ./wayland-session.nix {
|
||||
inherit lib;
|
||||
inherit lib pkgs;
|
||||
enableXWayland = cfg.xwayland.enable;
|
||||
})
|
||||
]);
|
||||
|
@ -148,7 +148,7 @@ in
|
||||
}
|
||||
|
||||
(import ./wayland-session.nix {
|
||||
inherit lib;
|
||||
inherit lib pkgs;
|
||||
enableXWayland = cfg.xwayland.enable;
|
||||
})
|
||||
]);
|
||||
|
@ -63,7 +63,7 @@ in
|
||||
};
|
||||
}
|
||||
(import ./wayland-session.nix {
|
||||
inherit lib;
|
||||
inherit lib pkgs;
|
||||
enableXWayland = cfg.xwayland.enable;
|
||||
})
|
||||
]
|
||||
|
@ -1,7 +1,9 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
enableXWayland ? true,
|
||||
enableWlrPortal ? true,
|
||||
enableGtkPortal ? true,
|
||||
}:
|
||||
|
||||
{
|
||||
@ -18,6 +20,9 @@
|
||||
services.graphical-desktop.enable = true;
|
||||
|
||||
xdg.portal.wlr.enable = enableWlrPortal;
|
||||
xdg.portal.extraPortals = lib.mkIf enableGtkPortal [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
];
|
||||
|
||||
# Window manager only sessions (unlike DEs) don't handle XDG
|
||||
# autostart files, so force them to run the service
|
||||
|
@ -93,6 +93,7 @@ in
|
||||
DATA_DIR = ".";
|
||||
HF_HOME = ".";
|
||||
SENTENCE_TRANSFORMERS_HOME = ".";
|
||||
WEBUI_URL = "http://localhost:${toString cfg.port}";
|
||||
} // cfg.environment;
|
||||
|
||||
serviceConfig = {
|
||||
|
@ -1,19 +1,42 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.seafile;
|
||||
settingsFormat = pkgs.formats.ini { };
|
||||
|
||||
ccnetConf = settingsFormat.generate "ccnet.conf" cfg.ccnetSettings;
|
||||
ccnetConf = settingsFormat.generate "ccnet.conf" (
|
||||
lib.attrsets.recursiveUpdate {
|
||||
Database = {
|
||||
ENGINE = "mysql";
|
||||
UNIX_SOCKET = "/var/run/mysqld/mysqld.sock";
|
||||
DB = "ccnet_db";
|
||||
CONNECTION_CHARSET = "utf8";
|
||||
};
|
||||
} cfg.ccnetSettings
|
||||
);
|
||||
|
||||
seafileConf = settingsFormat.generate "seafile.conf" cfg.seafileSettings;
|
||||
seafileConf = settingsFormat.generate "seafile.conf" (
|
||||
lib.attrsets.recursiveUpdate {
|
||||
database = {
|
||||
type = "mysql";
|
||||
unix_socket = "/var/run/mysqld/mysqld.sock";
|
||||
db_name = "seafile_db";
|
||||
connection_charset = "utf8";
|
||||
};
|
||||
} cfg.seafileSettings
|
||||
);
|
||||
|
||||
seahubSettings = pkgs.writeText "seahub_settings.py" ''
|
||||
FILE_SERVER_ROOT = '${cfg.ccnetSettings.General.SERVICE_URL}/seafhttp'
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': '${seahubDir}/seahub.db',
|
||||
'ENGINE': 'django.db.backends.mysql',
|
||||
'NAME' : 'seahub_db',
|
||||
'HOST' : '/var/run/mysqld/mysqld.sock',
|
||||
}
|
||||
}
|
||||
MEDIA_ROOT = '${seahubDir}/media/'
|
||||
@ -21,23 +44,25 @@ let
|
||||
|
||||
SERVICE_URL = '${cfg.ccnetSettings.General.SERVICE_URL}'
|
||||
|
||||
CSRF_TRUSTED_ORIGINS = ["${cfg.ccnetSettings.General.SERVICE_URL}"]
|
||||
|
||||
with open('${seafRoot}/.seahubSecret') as f:
|
||||
SECRET_KEY = f.readline().rstrip()
|
||||
|
||||
${cfg.seahubExtraConf}
|
||||
'';
|
||||
|
||||
seafRoot = "/var/lib/seafile"; # hardcode it due to dynamicuser
|
||||
seafRoot = "/var/lib/seafile";
|
||||
ccnetDir = "${seafRoot}/ccnet";
|
||||
dataDir = "${seafRoot}/data";
|
||||
seahubDir = "${seafRoot}/seahub";
|
||||
defaultUser = "seafile";
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
###### Interface
|
||||
|
||||
options.services.seafile = {
|
||||
options.services.seafile = with lib; {
|
||||
enable = mkEnableOption "Seafile server";
|
||||
|
||||
ccnetSettings = mkOption {
|
||||
@ -47,7 +72,7 @@ in
|
||||
options = {
|
||||
General = {
|
||||
SERVICE_URL = mkOption {
|
||||
type = types.str;
|
||||
type = types.singleLineStr;
|
||||
example = "https://www.example.com";
|
||||
description = ''
|
||||
Seahub public URL.
|
||||
@ -78,11 +103,17 @@ in
|
||||
'';
|
||||
};
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
example = "0.0.0.0";
|
||||
type = types.singleLineStr;
|
||||
default = "ipv4:127.0.0.1";
|
||||
example = "unix:/run/seafile/server.sock";
|
||||
description = ''
|
||||
The binding address used by seafile fileserver.
|
||||
The bind address used by seafile fileserver.
|
||||
|
||||
The addr can be defined as one of the following:
|
||||
- ipv6:<ipv6addr> for binding to an IPv6 address.
|
||||
- unix:<named pipe> for binding to a unix named socket
|
||||
- ipv4:<ipv4addr> for binding to an ipv4 address
|
||||
Otherwise the addr is assumed to be ipv4.
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -96,6 +127,19 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
seahubAddress = mkOption {
|
||||
type = types.singleLineStr;
|
||||
default = "unix:/run/seahub/gunicorn.sock";
|
||||
example = "[::1]:8083";
|
||||
description = ''
|
||||
Which address to bind the seahub server to, of the form:
|
||||
- HOST
|
||||
- HOST:PORT
|
||||
- unix:PATH.
|
||||
IPv6 HOSTs must be wrapped in brackets.
|
||||
'';
|
||||
};
|
||||
|
||||
workers = mkOption {
|
||||
type = types.int;
|
||||
default = 4;
|
||||
@ -107,7 +151,7 @@ in
|
||||
|
||||
adminEmail = mkOption {
|
||||
example = "john@example.com";
|
||||
type = types.str;
|
||||
type = types.singleLineStr;
|
||||
description = ''
|
||||
Seafile Seahub Admin Account Email.
|
||||
'';
|
||||
@ -115,17 +159,79 @@ in
|
||||
|
||||
initialAdminPassword = mkOption {
|
||||
example = "someStrongPass";
|
||||
type = types.str;
|
||||
type = types.singleLineStr;
|
||||
description = ''
|
||||
Seafile Seahub Admin Account initial password.
|
||||
Should be change via Seahub web front-end.
|
||||
Should be changed via Seahub web front-end.
|
||||
'';
|
||||
};
|
||||
|
||||
seafilePackage = mkPackageOption pkgs "seafile-server" { };
|
||||
seahubPackage = mkPackageOption pkgs "seahub" { };
|
||||
|
||||
user = mkOption {
|
||||
type = types.singleLineStr;
|
||||
default = defaultUser;
|
||||
description = "User account under which seafile runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.singleLineStr;
|
||||
default = defaultUser;
|
||||
description = "Group under which seafile runs.";
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "${seafRoot}/data";
|
||||
description = "Path in which to store user data";
|
||||
};
|
||||
|
||||
gc = {
|
||||
enable = mkEnableOption "automatic garbage collection on stored data blocks";
|
||||
|
||||
dates = mkOption {
|
||||
type = types.listOf types.singleLineStr;
|
||||
default = [ "Sun 03:00:00" ];
|
||||
description = ''
|
||||
When to run garbage collection on stored data blocks.
|
||||
The time format is described in {manpage}`systemd.time(7)`.
|
||||
'';
|
||||
};
|
||||
|
||||
randomizedDelaySec = mkOption {
|
||||
default = "0";
|
||||
type = types.singleLineStr;
|
||||
example = "45min";
|
||||
description = ''
|
||||
Add a randomized delay before each garbage collection.
|
||||
The delay will be chosen between zero and this value.
|
||||
This value must be a time span in the format specified by
|
||||
{manpage}`systemd.time(7)`
|
||||
'';
|
||||
};
|
||||
|
||||
persistent = mkOption {
|
||||
default = true;
|
||||
type = types.bool;
|
||||
example = false;
|
||||
description = ''
|
||||
Takes a boolean argument. If true, the time when the service
|
||||
unit was last triggered is stored on disk. When the timer is
|
||||
activated, the service unit is triggered immediately if it
|
||||
would have been triggered at least once during the time when
|
||||
the timer was inactive. Such triggering is nonetheless
|
||||
subject to the delay imposed by RandomizedDelaySec=. This is
|
||||
useful to catch up on missed runs of the service when the
|
||||
system was powered down.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
seahubExtraConf = mkOption {
|
||||
default = "";
|
||||
example = ''
|
||||
CSRF_TRUSTED_ORIGINS = ["https://example.com"]
|
||||
'';
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra config to append to `seahub_settings.py` file.
|
||||
@ -137,12 +243,40 @@ in
|
||||
|
||||
###### Implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = lib.mkDefault pkgs.mariadb;
|
||||
ensureDatabases = [
|
||||
"ccnet_db"
|
||||
"seafile_db"
|
||||
"seahub_db"
|
||||
];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = cfg.user;
|
||||
ensurePermissions = {
|
||||
"ccnet_db.*" = "ALL PRIVILEGES";
|
||||
"seafile_db.*" = "ALL PRIVILEGES";
|
||||
"seahub_db.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
environment.etc."seafile/ccnet.conf".source = ccnetConf;
|
||||
environment.etc."seafile/seafile.conf".source = seafileConf;
|
||||
environment.etc."seafile/seahub_settings.py".source = seahubSettings;
|
||||
|
||||
users.users = lib.optionalAttrs (cfg.user == defaultUser) {
|
||||
"${defaultUser}" = {
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
|
||||
users.groups = lib.optionalAttrs (cfg.group == defaultUser) { "${defaultUser}" = { }; };
|
||||
|
||||
systemd.targets.seafile = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
description = "Seafile components";
|
||||
@ -150,10 +284,12 @@ in
|
||||
|
||||
systemd.services =
|
||||
let
|
||||
securityOptions = {
|
||||
serviceOptions = {
|
||||
ProtectHome = true;
|
||||
PrivateUsers = true;
|
||||
PrivateDevices = true;
|
||||
PrivateTmp = true;
|
||||
ProtectSystem = "strict";
|
||||
ProtectClock = true;
|
||||
ProtectHostname = true;
|
||||
ProtectProc = "invisible";
|
||||
@ -162,36 +298,49 @@ in
|
||||
ProtectKernelLogs = true;
|
||||
ProtectControlGroups = true;
|
||||
RestrictNamespaces = true;
|
||||
RemoveIPC = true;
|
||||
LockPersonality = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
NoNewPrivileges = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
SystemCallArchitectures = "native";
|
||||
RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" ];
|
||||
RestrictAddressFamilies = [
|
||||
"AF_UNIX"
|
||||
"AF_INET"
|
||||
];
|
||||
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
StateDirectory = "seafile";
|
||||
RuntimeDirectory = "seafile";
|
||||
LogsDirectory = "seafile";
|
||||
ConfigurationDirectory = "seafile";
|
||||
ReadWritePaths = lib.lists.optional (cfg.dataDir != "${seafRoot}/data") cfg.dataDir;
|
||||
};
|
||||
in
|
||||
{
|
||||
seaf-server = {
|
||||
description = "Seafile server";
|
||||
partOf = [ "seafile.target" ];
|
||||
after = [ "network.target" ];
|
||||
unitConfig.RequiresMountsFor = lib.lists.optional (cfg.dataDir != "${seafRoot}/data") cfg.dataDir;
|
||||
requires = [ "mysql.service" ];
|
||||
after = [
|
||||
"network.target"
|
||||
"mysql.service"
|
||||
];
|
||||
wantedBy = [ "seafile.target" ];
|
||||
restartTriggers = [ ccnetConf seafileConf ];
|
||||
path = [ pkgs.sqlite ];
|
||||
serviceConfig = securityOptions // {
|
||||
User = "seafile";
|
||||
Group = "seafile";
|
||||
DynamicUser = true;
|
||||
StateDirectory = "seafile";
|
||||
RuntimeDirectory = "seafile";
|
||||
LogsDirectory = "seafile";
|
||||
ConfigurationDirectory = "seafile";
|
||||
restartTriggers = [
|
||||
ccnetConf
|
||||
seafileConf
|
||||
];
|
||||
serviceConfig = serviceOptions // {
|
||||
ExecStart = ''
|
||||
${cfg.seafilePackage}/bin/seaf-server \
|
||||
${lib.getExe cfg.seahubPackage.seafile-server} \
|
||||
--foreground \
|
||||
-F /etc/seafile \
|
||||
-c ${ccnetDir} \
|
||||
-d ${dataDir} \
|
||||
-d ${cfg.dataDir} \
|
||||
-l /var/log/seafile/server.log \
|
||||
-P /run/seafile/server.pid \
|
||||
-p /run/seafile
|
||||
@ -199,100 +348,201 @@ in
|
||||
};
|
||||
preStart = ''
|
||||
if [ ! -f "${seafRoot}/server-setup" ]; then
|
||||
mkdir -p ${dataDir}/library-template
|
||||
mkdir -p ${ccnetDir}/{GroupMgr,misc,OrgMgr,PeerMgr}
|
||||
sqlite3 ${ccnetDir}/GroupMgr/groupmgr.db ".read ${cfg.seafilePackage}/share/seafile/sql/sqlite/groupmgr.sql"
|
||||
sqlite3 ${ccnetDir}/misc/config.db ".read ${cfg.seafilePackage}/share/seafile/sql/sqlite/config.sql"
|
||||
sqlite3 ${ccnetDir}/OrgMgr/orgmgr.db ".read ${cfg.seafilePackage}/share/seafile/sql/sqlite/org.sql"
|
||||
sqlite3 ${ccnetDir}/PeerMgr/usermgr.db ".read ${cfg.seafilePackage}/share/seafile/sql/sqlite/user.sql"
|
||||
sqlite3 ${dataDir}/seafile.db ".read ${cfg.seafilePackage}/share/seafile/sql/sqlite/seafile.sql"
|
||||
echo "${cfg.seafilePackage.version}-sqlite" > "${seafRoot}"/server-setup
|
||||
mkdir -p ${cfg.dataDir}/library-template
|
||||
# Load schema on first install
|
||||
${pkgs.mariadb.client}/bin/mysql --database=ccnet_db < ${cfg.seahubPackage.seafile-server}/share/seafile/sql/mysql/ccnet.sql
|
||||
${pkgs.mariadb.client}/bin/mysql --database=seafile_db < ${cfg.seahubPackage.seafile-server}/share/seafile/sql/mysql/seafile.sql
|
||||
echo "${cfg.seahubPackage.seafile-server.version}-mysql" > "${seafRoot}"/server-setup
|
||||
echo Loaded MySQL schemas for first install
|
||||
fi
|
||||
# checking for upgrades and handling them
|
||||
installedMajor=$(cat "${seafRoot}/server-setup" | cut -d"-" -f1 | cut -d"." -f1)
|
||||
installedMinor=$(cat "${seafRoot}/server-setup" | cut -d"-" -f1 | cut -d"." -f2)
|
||||
pkgMajor=$(echo "${cfg.seafilePackage.version}" | cut -d"." -f1)
|
||||
pkgMinor=$(echo "${cfg.seafilePackage.version}" | cut -d"." -f2)
|
||||
pkgMajor=$(echo "${cfg.seahubPackage.seafile-server.version}" | cut -d"." -f1)
|
||||
pkgMinor=$(echo "${cfg.seahubPackage.seafile-server.version}" | cut -d"." -f2)
|
||||
|
||||
if [[ $installedMajor == $pkgMajor && $installedMinor == $pkgMinor ]]; then
|
||||
:
|
||||
elif [[ $installedMajor == 8 && $installedMinor == 0 && $pkgMajor == 9 && $pkgMinor == 0 ]]; then
|
||||
# Upgrade from 8.0 to 9.0
|
||||
sqlite3 ${dataDir}/seafile.db ".read ${pkgs.seahub}/scripts/upgrade/sql/9.0.0/sqlite3/seafile.sql"
|
||||
echo "${cfg.seafilePackage.version}-sqlite" > "${seafRoot}"/server-setup
|
||||
elif [[ $installedMajor == 9 && $installedMinor == 0 && $pkgMajor == 10 && $pkgMinor == 0 ]]; then
|
||||
# Upgrade from 9.0 to 10.0
|
||||
sqlite3 ${dataDir}/seafile.db ".read ${pkgs.seahub}/scripts/upgrade/sql/10.0.0/sqlite3/seafile.sql"
|
||||
echo "${cfg.seafilePackage.version}-sqlite" > "${seafRoot}"/server-setup
|
||||
elif [[ $installedMajor == 10 && $installedMinor == 0 && $pkgMajor == 11 && $pkgMinor == 0 ]]; then
|
||||
# Upgrade from 10.0 to 11.0: migrate to mysql
|
||||
echo Migrating from version 10 to 11
|
||||
|
||||
# From https://github.com/haiwen/seahub/blob/e12f941bfef7191795d8c72a7d339c01062964b2/scripts/sqlite2mysql.sh
|
||||
|
||||
echo Migrating ccnet database to MySQL
|
||||
${lib.getExe pkgs.sqlite} ${ccnetDir}/PeerMgr/usermgr.db ".dump" | \
|
||||
${lib.getExe cfg.seahubPackage.python3} ${cfg.seahubPackage}/scripts/sqlite2mysql.py > ${ccnetDir}/ccnet.sql
|
||||
${lib.getExe pkgs.sqlite} ${ccnetDir}/GroupMgr/groupmgr.db ".dump" | \
|
||||
${lib.getExe cfg.seahubPackage.python3} ${cfg.seahubPackage}/scripts/sqlite2mysql.py >> ${ccnetDir}/ccnet.sql
|
||||
sed 's/ctime INTEGER/ctime BIGINT/g' -i ${ccnetDir}/ccnet.sql
|
||||
sed 's/email TEXT, role TEXT/email VARCHAR(255), role TEXT/g' -i ${ccnetDir}/ccnet.sql
|
||||
${pkgs.mariadb.client}/bin/mysql --database=ccnet_db < ${ccnetDir}/ccnet.sql
|
||||
|
||||
echo Migrating seafile database to MySQL
|
||||
${lib.getExe pkgs.sqlite} ${cfg.dataDir}/seafile.db ".dump" | \
|
||||
${lib.getExe cfg.seahubPackage.python3} ${cfg.seahubPackage}/scripts/sqlite2mysql.py > ${cfg.dataDir}/seafile.sql
|
||||
sed 's/owner_id TEXT/owner_id VARCHAR(255)/g' -i ${cfg.dataDir}/seafile.sql
|
||||
sed 's/user_name TEXT/user_name VARCHAR(255)/g' -i ${cfg.dataDir}/seafile.sql
|
||||
${pkgs.mariadb.client}/bin/mysql --database=seafile_db < ${cfg.dataDir}/seafile.sql
|
||||
|
||||
echo Migrating seahub database to MySQL
|
||||
echo 'SET FOREIGN_KEY_CHECKS=0;' > ${seahubDir}/seahub.sql
|
||||
${lib.getExe pkgs.sqlite} ${seahubDir}/seahub.db ".dump" | \
|
||||
${lib.getExe cfg.seahubPackage.python3} ${cfg.seahubPackage}/scripts/sqlite2mysql.py >> ${seahubDir}/seahub.sql
|
||||
sed 's/`permission` , `reporter` text NOT NULL/`permission` longtext NOT NULL/g' -i ${seahubDir}/seahub.sql
|
||||
sed 's/varchar(256) NOT NULL UNIQUE/varchar(255) NOT NULL UNIQUE/g' -i ${seahubDir}/seahub.sql
|
||||
sed 's/, UNIQUE (`user_email`, `contact_email`)//g' -i ${seahubDir}/seahub.sql
|
||||
sed '/INSERT INTO `base_dirfileslastmodifiedinfo`/d' -i ${seahubDir}/seahub.sql
|
||||
sed '/INSERT INTO `notifications_usernotification`/d' -i ${seahubDir}/seahub.sql
|
||||
sed 's/DEFERRABLE INITIALLY DEFERRED//g' -i ${seahubDir}/seahub.sql
|
||||
${pkgs.mariadb.client}/bin/mysql --database=seahub_db < ${seahubDir}/seahub.sql
|
||||
|
||||
echo "${cfg.seahubPackage.seafile-server.version}-mysql" > "${seafRoot}"/server-setup
|
||||
echo Migration complete
|
||||
else
|
||||
echo "Unsupported upgrade" >&2
|
||||
echo "Unsupported upgrade: $installedMajor.$installedMinor to $pkgMajor.$pkgMinor" >&2
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
|
||||
# Fix unix socket permissions
|
||||
postStart = (
|
||||
lib.strings.optionalString (lib.strings.hasPrefix "unix:" cfg.seafileSettings.fileserver.host) ''
|
||||
while [[ ! -S "${lib.strings.removePrefix "unix:" cfg.seafileSettings.fileserver.host}" ]]; do
|
||||
sleep 1
|
||||
done
|
||||
chmod 666 "${lib.strings.removePrefix "unix:" cfg.seafileSettings.fileserver.host}"
|
||||
''
|
||||
);
|
||||
};
|
||||
|
||||
seahub = {
|
||||
description = "Seafile Server Web Frontend";
|
||||
wantedBy = [ "seafile.target" ];
|
||||
partOf = [ "seafile.target" ];
|
||||
after = [ "network.target" "seaf-server.service" ];
|
||||
requires = [ "seaf-server.service" ];
|
||||
unitConfig.RequiresMountsFor = lib.lists.optional (cfg.dataDir != "${seafRoot}/data") cfg.dataDir;
|
||||
requires = [
|
||||
"mysql.service"
|
||||
"seaf-server.service"
|
||||
];
|
||||
after = [
|
||||
"network.target"
|
||||
"mysql.service"
|
||||
"seaf-server.service"
|
||||
];
|
||||
restartTriggers = [ seahubSettings ];
|
||||
environment = {
|
||||
PYTHONPATH = "${pkgs.seahub.pythonPath}:${pkgs.seahub}/thirdpart:${pkgs.seahub}";
|
||||
PYTHONPATH = "${cfg.seahubPackage.pythonPath}:${cfg.seahubPackage}/thirdpart:${cfg.seahubPackage}";
|
||||
DJANGO_SETTINGS_MODULE = "seahub.settings";
|
||||
CCNET_CONF_DIR = ccnetDir;
|
||||
SEAFILE_CONF_DIR = dataDir;
|
||||
SEAFILE_CONF_DIR = cfg.dataDir;
|
||||
SEAFILE_CENTRAL_CONF_DIR = "/etc/seafile";
|
||||
SEAFILE_RPC_PIPE_PATH = "/run/seafile";
|
||||
SEAHUB_LOG_DIR = "/var/log/seafile";
|
||||
};
|
||||
serviceConfig = securityOptions // {
|
||||
User = "seafile";
|
||||
Group = "seafile";
|
||||
DynamicUser = true;
|
||||
serviceConfig = serviceOptions // {
|
||||
RuntimeDirectory = "seahub";
|
||||
StateDirectory = "seafile";
|
||||
LogsDirectory = "seafile";
|
||||
ConfigurationDirectory = "seafile";
|
||||
ExecStart = ''
|
||||
${pkgs.seahub.python.pkgs.gunicorn}/bin/gunicorn seahub.wsgi:application \
|
||||
${lib.getExe cfg.seahubPackage.python3.pkgs.gunicorn} seahub.wsgi:application \
|
||||
--name seahub \
|
||||
--workers ${toString cfg.workers} \
|
||||
--log-level=info \
|
||||
--preload \
|
||||
--timeout=1200 \
|
||||
--limit-request-line=8190 \
|
||||
--bind unix:/run/seahub/gunicorn.sock
|
||||
--bind ${cfg.seahubAddress}
|
||||
'';
|
||||
};
|
||||
preStart = ''
|
||||
mkdir -p ${seahubDir}/media
|
||||
# Link all media except avatars
|
||||
for m in `find ${pkgs.seahub}/media/ -maxdepth 1 -not -name "avatars"`; do
|
||||
for m in `find ${cfg.seahubPackage}/media/ -maxdepth 1 -not -name "avatars"`; do
|
||||
ln -sf $m ${seahubDir}/media/
|
||||
done
|
||||
if [ ! -e "${seafRoot}/.seahubSecret" ]; then
|
||||
${pkgs.seahub.python}/bin/python ${pkgs.seahub}/tools/secret_key_generator.py > ${seafRoot}/.seahubSecret
|
||||
chmod 400 ${seafRoot}/.seahubSecret
|
||||
(
|
||||
umask 377 &&
|
||||
${lib.getExe cfg.seahubPackage.python3} ${cfg.seahubPackage}/tools/secret_key_generator.py > ${seafRoot}/.seahubSecret
|
||||
)
|
||||
fi
|
||||
if [ ! -f "${seafRoot}/seahub-setup" ]; then
|
||||
# avatars directory should be writable
|
||||
install -D -t ${seahubDir}/media/avatars/ ${pkgs.seahub}/media/avatars/default.png
|
||||
install -D -t ${seahubDir}/media/avatars/groups ${pkgs.seahub}/media/avatars/groups/default.png
|
||||
install -D -t ${seahubDir}/media/avatars/ ${cfg.seahubPackage}/media/avatars/default.png
|
||||
install -D -t ${seahubDir}/media/avatars/groups ${cfg.seahubPackage}/media/avatars/groups/default.png
|
||||
# init database
|
||||
${pkgs.seahub}/manage.py migrate
|
||||
${cfg.seahubPackage}/manage.py migrate
|
||||
# create admin account
|
||||
${pkgs.expect}/bin/expect -c 'spawn ${pkgs.seahub}/manage.py createsuperuser --email=${cfg.adminEmail}; expect "Password: "; send "${cfg.initialAdminPassword}\r"; expect "Password (again): "; send "${cfg.initialAdminPassword}\r"; expect "Superuser created successfully."'
|
||||
echo "${pkgs.seahub.version}-sqlite" > "${seafRoot}/seahub-setup"
|
||||
${lib.getExe pkgs.expect} -c 'spawn ${cfg.seahubPackage}/manage.py createsuperuser --email=${cfg.adminEmail}; expect "Password: "; send "${cfg.initialAdminPassword}\r"; expect "Password (again): "; send "${cfg.initialAdminPassword}\r"; expect "Superuser created successfully."'
|
||||
echo "${cfg.seahubPackage.version}-mysql" > "${seafRoot}/seahub-setup"
|
||||
fi
|
||||
if [ $(cat "${seafRoot}/seahub-setup" | cut -d"-" -f1) != "${pkgs.seahub.version}" ]; then
|
||||
# update database
|
||||
${pkgs.seahub}/manage.py migrate
|
||||
echo "${pkgs.seahub.version}-sqlite" > "${seafRoot}/seahub-setup"
|
||||
# run django migrations
|
||||
${cfg.seahubPackage}/manage.py migrate
|
||||
echo "${cfg.seahubPackage.version}-mysql" > "${seafRoot}/seahub-setup"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
seaf-gc = {
|
||||
description = "Seafile storage garbage collection";
|
||||
conflicts = [
|
||||
"seaf-server.service"
|
||||
"seahub.service"
|
||||
];
|
||||
after = [
|
||||
"seaf-server.service"
|
||||
"seahub.service"
|
||||
];
|
||||
unitConfig.RequiresMountsFor = lib.lists.optional (cfg.dataDir != "${seafRoot}/data") cfg.dataDir;
|
||||
onSuccess = [
|
||||
"seaf-server.service"
|
||||
"seahub.service"
|
||||
];
|
||||
onFailure = [
|
||||
"seaf-server.service"
|
||||
"seahub.service"
|
||||
];
|
||||
startAt = lib.lists.optionals cfg.gc.enable cfg.gc.dates;
|
||||
serviceConfig = serviceOptions // {
|
||||
Type = "oneshot";
|
||||
};
|
||||
script = ''
|
||||
if [ ! -f "${seafRoot}/server-setup" ]; then
|
||||
echo "Server not setup yet, GC not needed" >&2
|
||||
exit
|
||||
fi
|
||||
|
||||
# checking for pending upgrades
|
||||
installedMajor=$(cat "${seafRoot}/server-setup" | cut -d"-" -f1 | cut -d"." -f1)
|
||||
installedMinor=$(cat "${seafRoot}/server-setup" | cut -d"-" -f1 | cut -d"." -f2)
|
||||
pkgMajor=$(echo "${cfg.seahubPackage.seafile-server.version}" | cut -d"." -f1)
|
||||
pkgMinor=$(echo "${cfg.seahubPackage.seafile-server.version}" | cut -d"." -f2)
|
||||
|
||||
if [[ $installedMajor != $pkgMajor || $installedMinor != $pkgMinor ]]; then
|
||||
echo "Server not upgraded yet" >&2
|
||||
exit
|
||||
fi
|
||||
|
||||
# Clean up user-deleted blocks and libraries
|
||||
${cfg.seahubPackage.seafile-server}/bin/seafserv-gc \
|
||||
-F /etc/seafile \
|
||||
-c ${ccnetDir} \
|
||||
-d ${cfg.dataDir} \
|
||||
--rm-fs
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
systemd.timers.seaf-gc = lib.mkIf cfg.gc.enable {
|
||||
timerConfig = {
|
||||
randomizedDelaySec = cfg.gc.randomizedDelaySec;
|
||||
Persistent = cfg.gc.persistent;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
greizgh
|
||||
schmittlauch
|
||||
];
|
||||
}
|
||||
|
23
nixos/modules/services/web-apps/hatsu.md
Normal file
23
nixos/modules/services/web-apps/hatsu.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Hatsu {#module-services-hatsu}
|
||||
|
||||
[Hatsu](https://github.com/importantimport/hatsu) is an fully-automated ActivityPub bridge for static sites.
|
||||
|
||||
## Quickstart {#module-services-hatsu-quickstart}
|
||||
|
||||
the minimum configuration to start hatsu server would look like this:
|
||||
|
||||
```nix
|
||||
{
|
||||
services.hatsu = {
|
||||
enable = true;
|
||||
settings = {
|
||||
HATSU_DOMAIN = "hatsu.local";
|
||||
HATSU_PRIMARY_ACCOUNT = "example.com";
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
this will start the hatsu server on port 3939 and save the database in `/var/lib/hatsu/hatsu.sqlite3`.
|
||||
|
||||
Please refer to the [Hatsu Documentation](https://hatsu.cli.rs) for additional configuration options.
|
97
nixos/modules/services/web-apps/hatsu.nix
Normal file
97
nixos/modules/services/web-apps/hatsu.nix
Normal file
@ -0,0 +1,97 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.hatsu;
|
||||
in
|
||||
{
|
||||
meta.doc = ./hatsu.md;
|
||||
meta.maintainers = with lib.maintainers; [ kwaa ];
|
||||
|
||||
options.services.hatsu = {
|
||||
enable = lib.mkEnableOption "Self-hosted and fully-automated ActivityPub bridge for static sites";
|
||||
|
||||
package = lib.mkPackageOption pkgs "hatsu" { };
|
||||
|
||||
settings = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
freeformType =
|
||||
with lib.types;
|
||||
attrsOf (
|
||||
nullOr (oneOf [
|
||||
bool
|
||||
int
|
||||
port
|
||||
str
|
||||
])
|
||||
);
|
||||
|
||||
options = {
|
||||
HATSU_DATABASE_URL = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "sqlite:///var/lib/hatsu/hatsu.sqlite?mode=rwc";
|
||||
example = "postgres://username:password@host/database";
|
||||
description = "Database URL.";
|
||||
};
|
||||
|
||||
HATSU_DOMAIN = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "The domain name of your instance (eg 'hatsu.local').";
|
||||
};
|
||||
|
||||
HATSU_LISTEN_HOST = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "127.0.0.1";
|
||||
description = "Host where hatsu should listen for incoming requests.";
|
||||
};
|
||||
|
||||
HATSU_LISTEN_PORT = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
apply = toString;
|
||||
default = 3939;
|
||||
description = "Port where hatsu should listen for incoming requests.";
|
||||
};
|
||||
|
||||
HATSU_PRIMARY_ACCOUNT = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "The primary account of your instance (eg 'example.com').";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
default = { };
|
||||
|
||||
description = ''
|
||||
Configuration for Hatsu, see
|
||||
<link xlink:href="https://hatsu.cli.rs/admins/environments.html"/>
|
||||
for supported values.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.hatsu = {
|
||||
environment = cfg.settings;
|
||||
|
||||
description = "Hatsu server";
|
||||
documentation = [ "https://hatsu.cli.rs/" ];
|
||||
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
ExecStart = "${lib.getExe cfg.package}";
|
||||
Restart = "on-failure";
|
||||
StateDirectory = "hatsu";
|
||||
Type = "simple";
|
||||
WorkingDirectory = "%S/hatsu";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -855,6 +855,7 @@ let
|
||||
"UseGateway"
|
||||
"UseRoutes"
|
||||
"UseTimezone"
|
||||
"IPv6OnlyMode"
|
||||
"ClientIdentifier"
|
||||
"VendorClassIdentifier"
|
||||
"UserClass"
|
||||
@ -888,6 +889,7 @@ let
|
||||
(assertValueOneOf "UseGateway" boolValues)
|
||||
(assertValueOneOf "UseRoutes" boolValues)
|
||||
(assertValueOneOf "UseTimezone" boolValues)
|
||||
(assertValueOneOf "IPv6OnlyMode" boolValues)
|
||||
(assertValueOneOf "ClientIdentifier" ["mac" "duid" "duid-only"])
|
||||
(assertInt "IAID")
|
||||
(assertValueOneOf "RequestBroadcast" boolValues)
|
||||
|
@ -31,6 +31,7 @@ in
|
||||
|
||||
testScript = ''
|
||||
import json
|
||||
import xml.etree.ElementTree as xml
|
||||
|
||||
machine.start()
|
||||
|
||||
@ -45,5 +46,18 @@ in
|
||||
|
||||
# Check that the name was overridden via the environmentFile option.
|
||||
assert webui_config["name"] == "${webuiName} (Open WebUI)"
|
||||
|
||||
webui_opensearch_xml = machine.succeed("curl http://127.0.0.1:${mainPort}/opensearch.xml")
|
||||
webui_opensearch = xml.fromstring(webui_opensearch_xml)
|
||||
|
||||
webui_opensearch_url = webui_opensearch.find(
|
||||
".//{http://a9.com/-/spec/opensearch/1.1/}Url"
|
||||
)
|
||||
assert (
|
||||
webui_opensearch_url is not None
|
||||
), f"no url tag found in {webui_opensearch_xml}"
|
||||
assert (
|
||||
webui_opensearch_url.get("template") == "http://localhost:8080/?q={searchTerms}"
|
||||
), "opensearch url doesn't match the configured port"
|
||||
'';
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
||||
services.seafile = {
|
||||
enable = true;
|
||||
ccnetSettings.General.SERVICE_URL = "http://server";
|
||||
seafileSettings.fileserver.host = "unix:/run/seafile/server.sock";
|
||||
adminEmail = "admin@example.com";
|
||||
initialAdminPassword = "seafile_password";
|
||||
};
|
||||
@ -22,7 +23,7 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
||||
virtualHosts."server" = {
|
||||
locations."/".proxyPass = "http://unix:/run/seahub/gunicorn.sock";
|
||||
locations."/seafhttp" = {
|
||||
proxyPass = "http://127.0.0.1:8082";
|
||||
proxyPass = "http://unix:/run/seafile/server.sock";
|
||||
extraConfig = ''
|
||||
rewrite ^/seafhttp(.*)$ $1 break;
|
||||
client_max_body_size 0;
|
||||
|
@ -24,7 +24,7 @@ import ../make-test-python.nix ({ lib, pkgs, ... }: {
|
||||
|
||||
with subtest("Home screen loads"):
|
||||
machine.succeed(
|
||||
"curl -sSfL http://localhost:8000 | grep '<title>Sign In'"
|
||||
"curl -sSfL http://localhost:8000 | grep '<title>Log In'"
|
||||
)
|
||||
|
||||
with subtest("Setting SITE_NAME via freeform option works"):
|
||||
|
@ -745,7 +745,7 @@ stdenv.mkDerivation {
|
||||
Nixpkgs periodically tries to update all packages that have a `passthru.updateScript` attribute.
|
||||
|
||||
> [!Note]
|
||||
> A common pattern is to use the [`nix-update-script`](../pkgs/common-updater/nix-update.nix) attribute provided in Nixpkgs, which runs [`nix-update`](https://github.com/Mic92/nix-update):
|
||||
> A common pattern is to use the [`nix-update-script`](../pkgs/by-name/ni/nix-update/nix-update-script.nix) attribute provided in Nixpkgs, which runs [`nix-update`](https://github.com/Mic92/nix-update):
|
||||
>
|
||||
> ```nix
|
||||
> { stdenv, nix-update-script }:
|
||||
@ -755,7 +755,7 @@ Nixpkgs periodically tries to update all packages that have a `passthru.updateSc
|
||||
> }
|
||||
> ```
|
||||
>
|
||||
> For simple packages, this is often enough, and will ensure that the package is updated automatically by [`nixpkgs-update`](https://ryantm.github.io/nixpkgs-update) when a new version is released.
|
||||
> For simple packages, this is often enough, and will ensure that the package is updated automatically by [`nixpkgs-update`](https://github.com/nix-community/nixpkgs-update) when a new version is released.
|
||||
> The [update bot](https://nix-community.org/update-bot) runs periodically to attempt to automatically update packages, and will run `passthru.updateScript` if set.
|
||||
> While not strictly necessary if the project is listed on [Repology](https://repology.org), using `nix-update-script` allows the package to update via many more sources (e.g. GitHub releases).
|
||||
|
||||
|
@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
|
||||
configureFlags = [
|
||||
"BOOST_LIB_SUFFIX="
|
||||
(lib.enableFeature outputsSupport "outputs")
|
||||
(lib.enableFeature visualizerSupport "enable-visualizer")
|
||||
(lib.enableFeature visualizerSupport "visualizer")
|
||||
(lib.withFeature visualizerSupport "fftw")
|
||||
(lib.enableFeature clockSupport "clock")
|
||||
(lib.withFeature taglibSupport "taglib")
|
||||
|
@ -6,7 +6,7 @@
|
||||
, lighthouse
|
||||
, nix-update-script
|
||||
, nodePackages
|
||||
, perl
|
||||
, openssl
|
||||
, pkg-config
|
||||
, postgresql
|
||||
, protobuf
|
||||
@ -57,7 +57,6 @@ rustPlatform.buildRustPackage rec {
|
||||
nativeBuildInputs = [
|
||||
rustPlatform.bindgenHook
|
||||
cmake
|
||||
perl
|
||||
pkg-config
|
||||
protobuf
|
||||
];
|
||||
@ -65,6 +64,8 @@ rustPlatform.buildRustPackage rec {
|
||||
buildInputs = [
|
||||
rust-jemalloc-sys
|
||||
sqlite
|
||||
] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
|
||||
openssl
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
CoreFoundation
|
||||
Security
|
||||
@ -84,6 +85,8 @@ rustPlatform.buildRustPackage rec {
|
||||
LIGHTHOUSE_DEPOSIT_CONTRACT_SPEC_URL = "file://${depositContractSpec}";
|
||||
LIGHTHOUSE_DEPOSIT_CONTRACT_TESTNET_URL = "file://${testnetDepositContractSpec}";
|
||||
|
||||
OPENSSL_NO_VENDOR = true;
|
||||
|
||||
cargoBuildFlags = [
|
||||
"--package lighthouse"
|
||||
];
|
||||
|
@ -1,17 +1,19 @@
|
||||
{ lib, fetchFromGitHub, rustPlatform }:
|
||||
{ lib, stdenv, fetchFromGitHub, rustPlatform, darwin }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "ox";
|
||||
version = "0.3.0";
|
||||
version = "0.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "curlpipe";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-g5M/d6pts4Y17CpWJAsWFL5KCq1YFaACJq6n6BQw7mo=";
|
||||
hash = "sha256-37o8Ak+8LPeGny7JBLc2STpRjfWBCwOrRyP3HJbD25o=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-6+W/guijsb9+ip1cvke8JLVa4h1nU2zQJCrLv64vsa0=";
|
||||
cargoHash = "sha256-c7XhMYfhMCxyidZJemnu5f9KwQmPmbun6mrI3v2EpZ4=";
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk.frameworks.AppKit ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Independent Rust text editor that runs in your terminal";
|
||||
|
@ -406,8 +406,8 @@ let
|
||||
mktplcRef = {
|
||||
name = "vscode-neovim";
|
||||
publisher = "asvetliakov";
|
||||
version = "1.18.11";
|
||||
hash = "sha256-j1igEItS4TT1WxSxK3tFG29McTTo8ojEs6TJShGZiGI=";
|
||||
version = "1.18.12";
|
||||
hash = "sha256-3Nmk0MFIMFYQHrRyZ7ioFk9KfHSk0CSF7FwNaEJbsyg=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://marketplace.visualstudio.com/items/asvetliakov.vscode-neovim/changelog";
|
||||
@ -2119,8 +2119,8 @@ let
|
||||
mktplcRef = {
|
||||
name = "gitlab-workflow";
|
||||
publisher = "gitlab";
|
||||
version = "5.6.0";
|
||||
hash = "sha256-K4oCMQBH5jrt61f/C3DDZC61RuDvOApnPEF3AsOrE20=";
|
||||
version = "5.13.0";
|
||||
hash = "sha256-A9QFW6Vk+g0pJfpXmZdUWJ/+WJBFXG79NXpCBuTjjok=";
|
||||
};
|
||||
meta = {
|
||||
description = "GitLab extension for Visual Studio Code";
|
||||
|
@ -1,5 +1,4 @@
|
||||
{ lib
|
||||
, cmake
|
||||
, dbus
|
||||
, fetchFromGitHub
|
||||
, fetchYarnDeps
|
||||
@ -13,12 +12,14 @@
|
||||
, cyrus_sasl
|
||||
, stdenv
|
||||
, fixup_yarn_lock
|
||||
, yarn
|
||||
, yarnConfigHook
|
||||
, nodejs-slim
|
||||
, cargo-tauri
|
||||
, cargo
|
||||
, rustPlatform
|
||||
, rustc
|
||||
, jq
|
||||
, moreutils
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@ -32,6 +33,11 @@ stdenv.mkDerivation rec {
|
||||
hash = "sha256-Bi9GCQr7yox5Plc7o0svRKYi1XoK/HDGj1VbW1z4jac=";
|
||||
};
|
||||
|
||||
# Yarn *really* wants us to use corepack if this is set
|
||||
postPatch = ''
|
||||
jq 'del(.packageManager)' package.json | sponge package.json
|
||||
'';
|
||||
|
||||
yarnOfflineCache = fetchYarnDeps {
|
||||
yarnLock = "${src}/yarn.lock";
|
||||
hash = "sha256-ih5NSOvYje981SkVfPHm/u2sS1B36kgxpfe9LmQaxdo=";
|
||||
@ -47,37 +53,22 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
};
|
||||
|
||||
configurePhase = ''
|
||||
export HOME=$(mktemp -d)
|
||||
yarn config --offline set yarn-offline-mirror ${yarnOfflineCache}
|
||||
fixup_yarn_lock yarn.lock
|
||||
yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
|
||||
patchShebangs node_modules/
|
||||
yarn run postinstall --offline
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
yarn tauri build -b deb
|
||||
'';
|
||||
|
||||
cargoRoot = "backend/";
|
||||
|
||||
preInstall = ''
|
||||
mv backend/target/release/bundle/deb/*/data/usr/ "$out"
|
||||
'';
|
||||
buildAndTestDir = cargoRoot;
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
perl
|
||||
rustPlatform.cargoSetupHook
|
||||
cargo
|
||||
rustc
|
||||
cargo-tauri
|
||||
cargo-tauri.hook
|
||||
fixup_yarn_lock
|
||||
yarn
|
||||
yarnConfigHook
|
||||
nodejs-slim
|
||||
cyrus_sasl
|
||||
jq
|
||||
moreutils # for sponge
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
@ -121,6 +121,7 @@ python3Packages.buildPythonApplication rec {
|
||||
homepage = "https://ulauncher.io/";
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
mainProgram = "ulauncher";
|
||||
maintainers = with maintainers; [ aaronjanse sebtm ];
|
||||
};
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ lib, buildGoModule, fetchFromGitHub }:
|
||||
{ lib, stdenv, buildGoModule, fetchFromGitHub, kubectl, installShellFiles }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "kubecolor";
|
||||
@ -19,6 +19,26 @@ buildGoModule rec {
|
||||
"."
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
|
||||
# kubecolor re-uses the completions of kubectl for its own executable
|
||||
|
||||
installShellCompletion --cmd kubecolor \
|
||||
--bash <(${lib.getExe kubectl} completion bash) \
|
||||
--fish <(${lib.getExe kubectl} completion fish) \
|
||||
--zsh <(${lib.getExe kubectl} completion zsh)
|
||||
|
||||
# https://kubecolor.github.io/setup/shells/bash/
|
||||
echo 'complete -o default -F __start_kubectl kubecolor' >> $out/share/bash-completion/completions/kubecolor.bash
|
||||
|
||||
# https://kubecolor.github.io/setup/shells/fish/
|
||||
echo -e 'function kubecolor --wraps kubectl\n command kubecolor $argv\nend' >> $out/share/fish/vendor_completions.d/kubecolor.fish
|
||||
|
||||
# https://kubecolor.github.io/setup/shells/zsh/
|
||||
echo 'compdef kubecolor=kubectl' >> $out/share/zsh/site-functions/_kubecolor
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Colorizes kubectl output";
|
||||
mainProgram = "kubecolor";
|
||||
|
@ -8,7 +8,7 @@ buildGoModule rec {
|
||||
owner = "stackrox";
|
||||
repo = "stackrox";
|
||||
rev = version;
|
||||
sha256 = "sha256-dJtqUYH6TUEb3IMSzVg3NBi1UYGvUPDQUaQ9h19a3NY=";
|
||||
sha256 = "sha256-H6pgPo2/RIpYnNOxP6PgIZhij1I45bm9DVkV2sNcW3A=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-qDSi1Jk6erSCwPiLubdVlqOT6PQygMQghS8leieJ78s=";
|
||||
|
@ -1,71 +0,0 @@
|
||||
{ lib, stdenv, rustPlatform, fetchFromGitHub, stfl, sqlite, curl, gettext, pkg-config, libxml2, json_c, ncurses
|
||||
, asciidoctor, libiconv, Security, Foundation, makeWrapper, nix-update-script }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "newsboat";
|
||||
version = "2.36";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "newsboat";
|
||||
repo = "newsboat";
|
||||
rev = "r${version}";
|
||||
hash = "sha256-RnDnyRAZ71aE5st5wUcUKjFFGY288oFpiyDXAno15MQ=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-0z3G8j0Qk0HEDUKA7fmjFfNW956rRtzKO+0ltNQR4es=";
|
||||
|
||||
# TODO: Check if that's still needed
|
||||
postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
# Allow other ncurses versions on Darwin
|
||||
substituteInPlace config.sh \
|
||||
--replace "ncurses5.4" "ncurses"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
asciidoctor
|
||||
gettext
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ makeWrapper ncurses ];
|
||||
|
||||
buildInputs = [ stfl sqlite curl libxml2 json_c ncurses ]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ Security Foundation libiconv gettext ];
|
||||
|
||||
postBuild = ''
|
||||
make -j $NIX_BUILD_CORES prefix="$out"
|
||||
'';
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/pull/98471#issuecomment-703100014 . We set
|
||||
# these for all platforms, since upstream's gettext crate behavior might
|
||||
# change in the future.
|
||||
GETTEXT_LIB_DIR = "${lib.getLib gettext}/lib";
|
||||
GETTEXT_INCLUDE_DIR = "${lib.getDev gettext}/include";
|
||||
GETTEXT_BIN_DIR = "${lib.getBin gettext}/bin";
|
||||
|
||||
doCheck = true;
|
||||
|
||||
preCheck = ''
|
||||
make -j $NIX_BUILD_CORES test
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
make -j $NIX_BUILD_CORES prefix="$out" install
|
||||
'' + lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
for prog in $out/bin/*; do
|
||||
wrapProgram "$prog" --prefix DYLD_LIBRARY_PATH : "${stfl}/lib"
|
||||
done
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://newsboat.org/";
|
||||
changelog = "https://github.com/newsboat/newsboat/blob/${src.rev}/CHANGELOG.md";
|
||||
description = "Fork of Newsbeuter, an RSS/Atom feed reader for the text console";
|
||||
maintainers = with lib.maintainers; [ dotlambda nicknovitski ];
|
||||
license = lib.licenses.mit;
|
||||
platforms = lib.platforms.unix;
|
||||
mainProgram = "newsboat";
|
||||
};
|
||||
}
|
@ -1,159 +0,0 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, bundlerEnv
|
||||
, alsa-utils
|
||||
, atk
|
||||
, copyDesktopItems
|
||||
, gobject-introspection
|
||||
, gtk2
|
||||
, ruby
|
||||
, libicns
|
||||
, libnotify
|
||||
, makeDesktopItem
|
||||
, which
|
||||
, wrapGAppsHook3
|
||||
, writeText
|
||||
}:
|
||||
|
||||
let
|
||||
# NOTE: $out may have different values depending on context
|
||||
mikutterPaths = rec {
|
||||
optPrefixDir = "$out/opt/mikutter";
|
||||
appPrefixDir = "$out/Applications/mikutter.app/Contents";
|
||||
appBinDir = "${appPrefixDir}/MacOS";
|
||||
appResourceDir = "${appPrefixDir}/Resources";
|
||||
iconPath = "${optPrefixDir}/core/skin/data/icon.png";
|
||||
};
|
||||
|
||||
gems = bundlerEnv {
|
||||
name = "mikutter-gems"; # leave the version out to enable package reuse
|
||||
gemdir = ./deps;
|
||||
groups = [ "default" "plugin" ];
|
||||
inherit ruby;
|
||||
|
||||
# Avoid the following error:
|
||||
# > `<module:Moneta>': uninitialized constant Moneta::Builder (NameError)
|
||||
#
|
||||
# Related:
|
||||
# https://github.com/NixOS/nixpkgs/pull/76510
|
||||
# https://github.com/NixOS/nixpkgs/pull/76765
|
||||
# https://github.com/NixOS/nixpkgs/issues/83442
|
||||
# https://github.com/NixOS/nixpkgs/issues/106545
|
||||
copyGemFiles = true;
|
||||
};
|
||||
|
||||
mkDesktopItem = { description }:
|
||||
makeDesktopItem {
|
||||
name = "mikutter";
|
||||
desktopName = "mikutter";
|
||||
exec = "mikutter";
|
||||
icon = "mikutter";
|
||||
categories = [ "Network" ];
|
||||
comment = description;
|
||||
keywords = [ "Mastodon" ];
|
||||
};
|
||||
|
||||
mkInfoPlist = { version }:
|
||||
writeText "Info.plist" (lib.generators.toPlist { } {
|
||||
CFBundleName = "mikutter";
|
||||
CFBundleDisplayName = "mikutter";
|
||||
CFBundleExecutable = "mikutter";
|
||||
CFBundleIconFile = "mikutter";
|
||||
CFBundleIdentifier = "net.hachune.mikutter";
|
||||
CFBundleInfoDictionaryVersion = "6.0";
|
||||
CFBundlePackageType = "APPL";
|
||||
CFBundleVersion = version;
|
||||
CFBundleShortVersionString = version;
|
||||
});
|
||||
|
||||
inherit (gems) wrappedRuby;
|
||||
in
|
||||
with mikutterPaths; stdenv.mkDerivation rec {
|
||||
pname = "mikutter";
|
||||
version = "4.1.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://mikutter.hachune.net/bin/mikutter-${version}.tar.gz";
|
||||
sha256 = "05253nz4i1lmnq6czj48qdab2ny4vx2mznj6nsn2l1m2z6zqkwk3";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ copyDesktopItems wrapGAppsHook3 gobject-introspection ]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ libicns ];
|
||||
buildInputs = [
|
||||
atk
|
||||
gtk2
|
||||
libnotify
|
||||
which # some plugins use it at runtime
|
||||
wrappedRuby
|
||||
] ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-utils ];
|
||||
|
||||
scriptPath = lib.makeBinPath (
|
||||
[ wrappedRuby libnotify which ]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-utils ]
|
||||
);
|
||||
|
||||
postUnpack = ''
|
||||
rm -rf vendor
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin ${optPrefixDir}
|
||||
|
||||
install -Dm644 README $out/share/doc/mikutter/README
|
||||
install -Dm644 LICENSE $out/share/doc/mikutter/LICENSE
|
||||
rm -r README LICENSE deployment
|
||||
|
||||
cp -r . ${optPrefixDir}
|
||||
|
||||
gappsWrapperArgsHook # FIXME: currently runs at preFixup
|
||||
wrapGApp ${optPrefixDir}/mikutter.rb \
|
||||
--prefix PATH : "${scriptPath}" \
|
||||
--set DISABLE_BUNDLER_SETUP 1
|
||||
mv ${optPrefixDir}/mikutter.rb $out/bin/mikutter
|
||||
|
||||
install -Dm644 ${iconPath} $out/share/icons/hicolor/256x256/apps/mikutter.png
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postInstall =
|
||||
let
|
||||
infoPlist = mkInfoPlist { inherit version; };
|
||||
in
|
||||
lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mkdir -p ${appBinDir} ${appResourceDir}
|
||||
install -Dm644 ${infoPlist} ${appPrefixDir}/Info.plist
|
||||
ln -s $out/bin/mikutter ${appBinDir}/mikutter
|
||||
png2icns ${appResourceDir}/mikutter.icns ${iconPath}
|
||||
'';
|
||||
|
||||
installCheckPhase = ''
|
||||
runHook preInstallCheck
|
||||
|
||||
testDir="$(mktemp -d)"
|
||||
install -Dm644 ${./test_plugin.rb} "$testDir/plugin/test_plugin/test_plugin.rb"
|
||||
|
||||
$out/bin/mikutter --confroot="$testDir" --plugin=test_plugin --debug
|
||||
|
||||
runHook postInstallCheck
|
||||
'';
|
||||
|
||||
desktopItems = [
|
||||
(mkDesktopItem { inherit (meta) description; })
|
||||
];
|
||||
|
||||
doInstallCheck = true;
|
||||
dontWrapGApps = true; # the target is placed outside of bin/
|
||||
|
||||
passthru.updateScript = [ ./update.sh version (toString ./.) ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "An extensible Mastodon client";
|
||||
homepage = "https://mikutter.hachune.net";
|
||||
platforms = ruby.meta.platforms;
|
||||
license = licenses.mit;
|
||||
};
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
alias __source_distinct__ source
|
||||
def source(url)
|
||||
@loaded ||= {}
|
||||
unless @loaded[url]
|
||||
@loaded[url] = true
|
||||
__source_distinct__(url) end end
|
||||
|
||||
source 'https://rubygems.org'
|
||||
|
||||
ruby '>= 2.5.0'
|
||||
|
||||
group :default do
|
||||
gem 'addressable','>= 2.7.0', '< 2.8'
|
||||
gem 'delayer','>= 1.1.2', '< 2.0'
|
||||
gem 'delayer-deferred','>= 2.2.0', '< 3.0'
|
||||
gem 'diva','>= 1.0.2', '< 2.0'
|
||||
gem 'memoist','>= 0.16.2', '< 0.17'
|
||||
gem 'oauth','>= 0.5.4'
|
||||
gem 'pluggaloid','>= 1.5.0', '< 2.0'
|
||||
gem 'typed-array','>= 0.1.2', '< 0.2'
|
||||
end
|
||||
|
||||
group :test do
|
||||
gem 'test-unit','>= 3.3.4', '< 4.0'
|
||||
gem 'rake','>= 13.0.1'
|
||||
gem 'mocha','>= 1.11.1'
|
||||
gem 'webmock','>= 3.7.6'
|
||||
gem 'ruby-prof','>= 1.1.0'
|
||||
end
|
||||
|
||||
|
||||
group :plugin do
|
||||
Dir.glob(File.expand_path(File.join(__dir__, 'plugin/*/Gemfile'))){ |path|
|
||||
eval File.open(path).read
|
||||
}
|
||||
Dir.glob(File.join(File.expand_path(ENV['MIKUTTER_CONFROOT'] || '~/.mikutter'), 'plugin/*/Gemfile')){ |path|
|
||||
eval File.open(path).read
|
||||
}
|
||||
end
|
@ -1,101 +0,0 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.7.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
atk (3.4.1)
|
||||
glib2 (= 3.4.1)
|
||||
cairo (1.17.5)
|
||||
native-package-installer (>= 1.0.3)
|
||||
pkg-config (>= 1.2.2)
|
||||
red-colors
|
||||
cairo-gobject (3.4.1)
|
||||
cairo (>= 1.16.2)
|
||||
glib2 (= 3.4.1)
|
||||
crack (0.4.5)
|
||||
rexml
|
||||
delayer (1.2.0)
|
||||
delayer-deferred (2.2.0)
|
||||
delayer (>= 1.1.2, < 2.0)
|
||||
diva (1.0.2)
|
||||
addressable (>= 2.5.2, < 2.8)
|
||||
gdk_pixbuf2 (3.4.1)
|
||||
gio2 (= 3.4.1)
|
||||
gettext (3.3.7)
|
||||
locale (>= 2.0.5)
|
||||
text (>= 1.3.0)
|
||||
gio2 (3.4.1)
|
||||
gobject-introspection (= 3.4.1)
|
||||
glib2 (3.4.1)
|
||||
native-package-installer (>= 1.0.3)
|
||||
pkg-config (>= 1.3.5)
|
||||
gobject-introspection (3.4.1)
|
||||
glib2 (= 3.4.1)
|
||||
gtk2 (3.4.1)
|
||||
atk (= 3.4.1)
|
||||
gdk_pixbuf2 (= 3.4.1)
|
||||
pango (= 3.4.1)
|
||||
hashdiff (1.0.1)
|
||||
httpclient (2.8.3)
|
||||
instance_storage (1.0.0)
|
||||
locale (2.1.3)
|
||||
memoist (0.16.2)
|
||||
mini_portile2 (2.5.0)
|
||||
mocha (1.12.0)
|
||||
moneta (1.4.1)
|
||||
native-package-installer (1.1.1)
|
||||
nokogiri (1.11.3)
|
||||
mini_portile2 (~> 2.5.0)
|
||||
racc (~> 1.4)
|
||||
oauth (0.5.6)
|
||||
pango (3.4.1)
|
||||
cairo-gobject (= 3.4.1)
|
||||
gobject-introspection (= 3.4.1)
|
||||
pkg-config (1.4.6)
|
||||
pluggaloid (1.5.0)
|
||||
delayer (>= 1.1.0, < 2.0)
|
||||
instance_storage (>= 1.0.0, < 2.0.0)
|
||||
power_assert (2.0.0)
|
||||
public_suffix (4.0.6)
|
||||
racc (1.5.2)
|
||||
rake (13.0.3)
|
||||
red-colors (0.1.1)
|
||||
rexml (3.2.5)
|
||||
ruby-prof (1.4.3)
|
||||
test-unit (3.4.0)
|
||||
power_assert
|
||||
text (1.3.1)
|
||||
typed-array (0.1.2)
|
||||
webmock (3.12.2)
|
||||
addressable (>= 2.3.6)
|
||||
crack (>= 0.3.2)
|
||||
hashdiff (>= 0.4.0, < 2.0.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
addressable (>= 2.7.0, < 2.8)
|
||||
delayer (>= 1.1.2, < 2.0)
|
||||
delayer-deferred (>= 2.2.0, < 3.0)
|
||||
diva (>= 1.0.2, < 2.0)
|
||||
gettext (>= 3.3.5, < 3.4)
|
||||
gtk2 (= 3.4.1)
|
||||
httpclient
|
||||
memoist (>= 0.16.2, < 0.17)
|
||||
mocha (>= 1.11.1)
|
||||
moneta
|
||||
nokogiri
|
||||
oauth (>= 0.5.4)
|
||||
pluggaloid (>= 1.5.0, < 2.0)
|
||||
rake (>= 13.0.1)
|
||||
ruby-prof (>= 1.1.0)
|
||||
test-unit (>= 3.3.4, < 4.0)
|
||||
typed-array (>= 0.1.2, < 0.2)
|
||||
webmock (>= 3.7.6)
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.6.6p146
|
||||
|
||||
BUNDLED WITH
|
||||
2.1.4
|
@ -1,410 +0,0 @@
|
||||
{
|
||||
addressable = {
|
||||
dependencies = ["public_suffix"];
|
||||
groups = ["default" "test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.7.0";
|
||||
};
|
||||
atk = {
|
||||
dependencies = ["glib2"];
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0a8q9a1f6x4gy55p8cf52a22bnpjgn18ad9n959x0f4gybbhs948";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.1";
|
||||
};
|
||||
cairo = {
|
||||
dependencies = ["native-package-installer" "pkg-config" "red-colors"];
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0vbj9szp2xbnxqan8hppip8vm9fxpcmpx745y5fvg2scdh9f0p7s";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.17.5";
|
||||
};
|
||||
cairo-gobject = {
|
||||
dependencies = ["cairo" "glib2"];
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0gkxdfslcvrwrs48giilji3bgxd5bwijwq33p9h00r10jzfg2028";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.1";
|
||||
};
|
||||
crack = {
|
||||
dependencies = ["rexml"];
|
||||
groups = ["default" "test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.4.5";
|
||||
};
|
||||
delayer = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0iqf4i18i8rk3x7qgvkhbiqskf0xzdf733fjimrq6xkag2mq60bl";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.2.0";
|
||||
};
|
||||
delayer-deferred = {
|
||||
dependencies = ["delayer"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0i2das3ncssacpqdgaf4as77vrxm7jfiizaja884fqv4rzv6s2sv";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.2.0";
|
||||
};
|
||||
diva = {
|
||||
dependencies = ["addressable"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "05wl4wg57vvng4nrp4lzjq148v908xzq092kq93phwvyxs7jnw2g";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.0.2";
|
||||
};
|
||||
gdk_pixbuf2 = {
|
||||
dependencies = ["gio2"];
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0194gzn0kialfh0j7crllvp808r64sg6dh297x69b0av21ar5pam";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.1";
|
||||
};
|
||||
gettext = {
|
||||
dependencies = ["locale" "text"];
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1fqlwq7i8ck1fjyhn19q3skvgrbz44q7gq51mlr0qym5rkj5f6rn";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.3.7";
|
||||
};
|
||||
gio2 = {
|
||||
dependencies = ["gobject-introspection"];
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1l3jpgbdvb55xhcmpkcqgwx5068dfyi8kijfvzhbqh96ng0p1m7g";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.1";
|
||||
};
|
||||
glib2 = {
|
||||
dependencies = ["native-package-installer" "pkg-config"];
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "18clyn0fp0h5alnkf9i2bqd6wvl78h468pdbzs1csqnba8vw4q1c";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.1";
|
||||
};
|
||||
gobject-introspection = {
|
||||
dependencies = ["glib2"];
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1a3x8qiisbax3x0izj8l5w66r53ba5ma53ax2jhdbhbvaxx3d02n";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.1";
|
||||
};
|
||||
gtk2 = {
|
||||
dependencies = ["atk" "gdk_pixbuf2" "pango"];
|
||||
groups = ["plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "17az8g0n1yzz90kdbjg2hpabi04qccda7v6lin76bs637ivfg2md";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.1";
|
||||
};
|
||||
hashdiff = {
|
||||
groups = ["default" "test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.0.1";
|
||||
};
|
||||
httpclient = {
|
||||
groups = ["plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.8.3";
|
||||
};
|
||||
instance_storage = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "08nf5fhq9dckq9lmaklxydq0hrlfi7phk66gr3bggxg45zd687pl";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.0.0";
|
||||
};
|
||||
locale = {
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0997465kxvpxm92fiwc2b16l49mngk7b68g5k35ify0m3q0yxpdn";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.1.3";
|
||||
};
|
||||
memoist = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0i9wpzix3sjhf6d9zw60dm4371iq8kyz7ckh2qapan2vyaim6b55";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.16.2";
|
||||
};
|
||||
mini_portile2 = {
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1hdbpmamx8js53yk3h8cqy12kgv6ca06k0c9n3pxh6b6cjfs19x7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.5.0";
|
||||
};
|
||||
mocha = {
|
||||
groups = ["test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "05yw6rwgjppq116jgqfg4pv4bql3ci4r2fmmg0m2c3sqib1bq41a";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.12.0";
|
||||
};
|
||||
moneta = {
|
||||
groups = ["plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0z25b4yysvnf2hi9jxnsiv3fvnicnzr2m70ci231av5093jfknc6";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.4.1";
|
||||
};
|
||||
native-package-installer = {
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1ww1mq41q7rda975byjmq5dk8k13v8dawvm33370pbkrymd8syp8";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.1.1";
|
||||
};
|
||||
nokogiri = {
|
||||
dependencies = ["mini_portile2" "racc"];
|
||||
groups = ["plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "19d78mdg2lbz9jb4ph6nk783c9jbsdm8rnllwhga6pd53xffp6x0";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.11.3";
|
||||
};
|
||||
oauth = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1zwd6v39yqfdrpg1p3d9jvzs9ljg55ana2p06m0l7qn5w0lgx1a0";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.5.6";
|
||||
};
|
||||
pango = {
|
||||
dependencies = ["cairo-gobject" "gobject-introspection"];
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1d0cn50qgpifrcv8qx72wi6l9xalw3ryngbfmm9xpg9vx5rl1qbp";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.1";
|
||||
};
|
||||
pkg-config = {
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1mjjy1grxr64znkffxsvprcckbrrnm40b6gbllnbm7jxslbr3gjl";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.4.6";
|
||||
};
|
||||
pluggaloid = {
|
||||
dependencies = ["delayer" "instance_storage"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0m3f940lf1bg01jin22by7hg9hs43y995isgcyqb6vbvlv51zj11";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.5.0";
|
||||
};
|
||||
power_assert = {
|
||||
groups = ["default" "test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "172qfmzwxdf82bmwgcb13hnz9i3p6i2s2nijxnx6r63kn3drjppr";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.0.0";
|
||||
};
|
||||
public_suffix = {
|
||||
groups = ["default" "test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.0.6";
|
||||
};
|
||||
racc = {
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.5.2";
|
||||
};
|
||||
rake = {
|
||||
groups = ["test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1iik52mf9ky4cgs38fp2m8r6skdkq1yz23vh18lk95fhbcxb6a67";
|
||||
type = "gem";
|
||||
};
|
||||
version = "13.0.3";
|
||||
};
|
||||
red-colors = {
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0ar2k7zvhr1215jx5di29hkg5h1798f1gypmq6v0sy9v35w6ijca";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.1.1";
|
||||
};
|
||||
rexml = {
|
||||
groups = ["default" "test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2.5";
|
||||
};
|
||||
ruby-prof = {
|
||||
groups = ["test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1r3xalp91l07m0cwllcxjzg6nkviiqnxkcbgg5qnzsdji6rgy65m";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.4.3";
|
||||
};
|
||||
test-unit = {
|
||||
dependencies = ["power_assert"];
|
||||
groups = ["test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1h0c323zfn4hdida4g58h8wnlh4kax438gyxlw20dd78kcp01i8m";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.0";
|
||||
};
|
||||
text = {
|
||||
groups = ["default" "plugin"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.3.1";
|
||||
};
|
||||
typed-array = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0qlv2rnkin9rwkgjx3k5qvc17m0m7jf5cdirw3wxbjnw5kga27w9";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.1.2";
|
||||
};
|
||||
webmock = {
|
||||
dependencies = ["addressable" "crack" "hashdiff"];
|
||||
groups = ["test"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "038igpmkpmn0nw0k7s4db8x88af1nwcy7wzh9m9c9q4p74h7rii0";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.12.2";
|
||||
};
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
gem 'gtk2', '3.4.1'
|
||||
|
@ -1 +0,0 @@
|
||||
gem 'moneta'
|
@ -1,4 +0,0 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
gem 'nokogiri'
|
||||
gem 'httpclient'
|
@ -1,5 +0,0 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
group :default do
|
||||
gem 'gettext', '>= 3.3.5', '< 3.4'
|
||||
end
|
@ -1,10 +0,0 @@
|
||||
# Tests mikutter's event system.
|
||||
|
||||
Plugin.create(:test_plugin) do
|
||||
require 'logger'
|
||||
Delayer.new do
|
||||
log = Logger.new(STDOUT)
|
||||
log.info("loaded test_plugin")
|
||||
exit
|
||||
end
|
||||
end
|
@ -1,51 +0,0 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p bundler bundix curl jq common-updater-scripts
|
||||
# shellcheck shell=bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
main() {
|
||||
local currentVer="$1"
|
||||
local scriptDir="$2"
|
||||
local latestVer
|
||||
local srcDir
|
||||
|
||||
if [[ -z "$UPDATE_NIX_ATTR_PATH" ]]; then
|
||||
echo "[ERROR] Please run the following instead:" >&2
|
||||
echo >&2
|
||||
echo " % nix-shell maintainers/scripts/update.nix --argstr path mikutter" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
latestVer="$(queryLatestVersion)"
|
||||
if [[ "$currentVer" == "$latestVer" ]]; then
|
||||
echo "[INFO] mikutter is already up to date" >&2
|
||||
exit
|
||||
fi
|
||||
|
||||
update-source-version "$UPDATE_NIX_ATTR_PATH" "$latestVer"
|
||||
|
||||
cd "$scriptDir"
|
||||
|
||||
rm -rf deps
|
||||
mkdir deps
|
||||
cd deps
|
||||
|
||||
srcDir="$(nix-build ../../../../../.. --no-out-link -A mikutter.src)"
|
||||
tar xvf "$srcDir" --strip-components=1
|
||||
find . -not -name Gemfile -exec rm {} \;
|
||||
find . -type d -exec rmdir -p --ignore-fail-on-non-empty {} \; || true
|
||||
|
||||
bundle lock
|
||||
bundix
|
||||
}
|
||||
|
||||
queryLatestVersion() {
|
||||
curl -sS 'https://mikutter.hachune.net/download.json?count=1' \
|
||||
| jq -r '.[].version_string' \
|
||||
| head -n1
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
# vim:set ft=bash:
|
@ -19,11 +19,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnote";
|
||||
version = "46.1";
|
||||
version = "47.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
|
||||
hash = "sha256-47v3A6WPgI3Fd9WiVsF3wYkHC5KPS9WSltDA3SXz2pk=";
|
||||
hash = "sha256-vrNcreIMYOQxVRbyCsfr7p37wrgPAHy+2LxaUlIuRC4=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -25,28 +25,28 @@
|
||||
, zsh
|
||||
, fish
|
||||
, nixosTests
|
||||
, go
|
||||
, buildGoModule
|
||||
, go_1_23
|
||||
, buildGo123Module
|
||||
, nix-update-script
|
||||
}:
|
||||
|
||||
with python3Packages;
|
||||
buildPythonApplication rec {
|
||||
pname = "kitty";
|
||||
version = "0.36.1";
|
||||
version = "0.36.4";
|
||||
format = "other";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kovidgoyal";
|
||||
repo = "kitty";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-7+MxxgQQlAje7klfJvvEWe8CfxyN0oTGQJ/QOORFUsY=";
|
||||
hash = "sha256-nN0y2VKK5UNaozpHQNPN7AYkto9z6rJNpYRJhvLPtVQ=";
|
||||
};
|
||||
|
||||
goModules = (buildGoModule {
|
||||
goModules = (buildGo123Module {
|
||||
pname = "kitty-go-modules";
|
||||
inherit src version;
|
||||
vendorHash = "sha256-YN4sSdDNDIVgtcykg60H0bZEryRHJJfZ5rXWUMYXGr4=";
|
||||
vendorHash = "sha256-8hsQH7OdsxeVG6pomuxdmTXNmQYBROoUUxoC10LeLFo=";
|
||||
}).goModules;
|
||||
|
||||
buildInputs = [
|
||||
@ -82,7 +82,7 @@ buildPythonApplication rec {
|
||||
sphinx-copybutton
|
||||
sphinxext-opengraph
|
||||
sphinx-inline-tabs
|
||||
go
|
||||
go_1_23
|
||||
fontconfig
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
imagemagick
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "fnc";
|
||||
version = "0.16";
|
||||
version = "0.18";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://fnc.bsdbox.org/tarball/${finalAttrs.version}/fnc-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-6I6wtSMHaKdnlUK4pYiaybJeODGu2P+smYW8lQDIWGM=";
|
||||
hash = "sha256-npS+sOxF0S/9TuFjtEFlev0HpIOsaP6zmcfopPNUehk=";
|
||||
};
|
||||
|
||||
buildInputs = [ libiconv ncurses zlib ];
|
||||
|
19
pkgs/applications/video/mpv/0001-fix-darwin-build.patch
Normal file
19
pkgs/applications/video/mpv/0001-fix-darwin-build.patch
Normal file
@ -0,0 +1,19 @@
|
||||
diff --git a/osdep/mac/input_helper.swift b/osdep/mac/input_helper.swift
|
||||
index 0acec6bd40..0ec5837864 100644
|
||||
--- a/osdep/mac/input_helper.swift
|
||||
+++ b/osdep/mac/input_helper.swift
|
||||
@@ -18,6 +18,14 @@
|
||||
import Cocoa
|
||||
import Carbon.HIToolbox
|
||||
|
||||
+extension NSCondition {
|
||||
+ fileprivate func withLock<T>(_ body: () throws -> T) rethrows -> T {
|
||||
+ self.lock()
|
||||
+ defer { self.unlock() }
|
||||
+ return try body()
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
class InputHelper: NSObject {
|
||||
var option: OptionHelper?
|
||||
var lock = NSCondition()
|
@ -151,6 +151,11 @@ stdenv'.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-BOGh+QBTO7hrHohh+RqjSF8eHQH8jVBPjG/k4eyFaaM=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix build with Darwin SDK 11
|
||||
./0001-fix-darwin-build.patch
|
||||
];
|
||||
|
||||
postPatch = lib.concatStringsSep "\n" [
|
||||
# Don't reference compile time dependencies or create a build outputs cycle
|
||||
# between out and dev
|
||||
@ -308,6 +313,8 @@ stdenv'.mkDerivation (finalAttrs: {
|
||||
pushd ../TOOLS
|
||||
cp mpv_identify.sh umpv $out/bin/
|
||||
popd
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
pushd $out/share/applications
|
||||
|
||||
sed -e '/Icon=/ ! s|mpv|umpv|g; s|^Exec=.*|Exec=umpv %U|' \
|
||||
|
@ -8,13 +8,13 @@
|
||||
|
||||
buildLua rec {
|
||||
pname = "mpv-quality-menu";
|
||||
version = "4.1.1";
|
||||
version = "4.1.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "christoph-heinrich";
|
||||
repo = "mpv-quality-menu";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-yrcTxqpLnOI1Tq3khhflO3wzhyeTPuvKifyH5/P57Ns=";
|
||||
hash = "sha256-W7N8H+kq/bhF917TutyilfT8FBbWmbSFUrHd8a8k5Jg=";
|
||||
};
|
||||
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
|
||||
|
||||
|
@ -90,11 +90,29 @@ if package maintainers would like to use this feature, they are welcome to migra
|
||||
To lessen PR traffic, they're encouraged to also perform some more general maintenance on the package in the same PR,
|
||||
though this is not required and must not be expected.
|
||||
|
||||
Note that definitions in `all-packages.nix` with custom arguments should not be removed.
|
||||
Note that `callPackage` definitions in `all-packages.nix` with custom arguments should not be removed.
|
||||
That is a backwards-incompatible change because it changes the `.override` interface.
|
||||
Such packages may still be moved to `pkgs/by-name` however, while keeping the definition in `all-packages.nix`.
|
||||
Such packages may still be moved to `pkgs/by-name` however, in order to avoid the slightly superficial choice of directory / category in which the `default.nix` file was placed, but please keep the definition in `all-packages.nix` using `callPackage`.
|
||||
See also [changing implicit attribute defaults](#changing-implicit-attribute-defaults).
|
||||
|
||||
Definitions like the following however, _can_ be transitioned:
|
||||
|
||||
```nix
|
||||
# all-packages.nix
|
||||
fooWithBaz = foo.override {
|
||||
bar = baz;
|
||||
};
|
||||
# turned into pkgs/by-name/fo/fooWithBaz/package.nix with:
|
||||
{
|
||||
foo,
|
||||
baz,
|
||||
}:
|
||||
|
||||
foo.override {
|
||||
bar = baz;
|
||||
}
|
||||
```
|
||||
|
||||
## Limitations
|
||||
|
||||
There's some limitations as to which packages can be defined using this structure:
|
||||
|
41
pkgs/by-name/ac/activemq/package.nix
Normal file
41
pkgs/by-name/ac/activemq/package.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchurl,
|
||||
}:
|
||||
|
||||
let
|
||||
version = "6.1.3";
|
||||
in
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "activemq";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://archive.apache.org/dist/activemq/${version}/apache-activemq-${version}-bin.tar.gz";
|
||||
hash = "sha256-ytFOgW6ZDxMScJ6/wij0KJXYxUxlLTzVbwtRRWNdx5Q=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
mv * $out/
|
||||
for j in $(find $out/lib -name "*.jar"); do
|
||||
cp="''${cp:+"$cp:"}$j";
|
||||
done
|
||||
echo "CLASSPATH=$cp" > $out/lib/classpath.env
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = "https://activemq.apache.org/";
|
||||
description = "Messaging and Integration Patterns server written in Java";
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
|
||||
license = lib.licenses.asl20;
|
||||
mainProgram = "activemq";
|
||||
maintainers = [ lib.maintainers.anthonyroussel ];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
}
|
@ -2,7 +2,8 @@
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
rustPlatform,
|
||||
perl,
|
||||
pkg-config,
|
||||
openssl,
|
||||
testers,
|
||||
avml,
|
||||
nix-update-script,
|
||||
@ -21,7 +22,12 @@ rustPlatform.buildRustPackage rec {
|
||||
|
||||
cargoHash = "sha256-gcpjrxnQDyO92OW6LZVc4x73TmTtQoaEYhmGmqhz8ng=";
|
||||
|
||||
nativeBuildInputs = [ perl ];
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ openssl ];
|
||||
|
||||
env = {
|
||||
OPENSSL_NO_VENDOR = true;
|
||||
};
|
||||
|
||||
passthru.tests.version = testers.testVersion { package = avml; };
|
||||
|
||||
|
56
pkgs/by-name/ca/cargo-tauri/hook.nix
Normal file
56
pkgs/by-name/ca/cargo-tauri/hook.nix
Normal file
@ -0,0 +1,56 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
makeSetupHook,
|
||||
cargo,
|
||||
cargo-tauri,
|
||||
rust,
|
||||
# The subdirectory of `target/` from which to copy the build artifacts
|
||||
targetSubdirectory ? stdenv.hostPlatform.rust.cargoShortTarget,
|
||||
}:
|
||||
|
||||
let
|
||||
kernelName = stdenv.hostPlatform.parsed.kernel.name;
|
||||
in
|
||||
makeSetupHook {
|
||||
name = "tauri-hook";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
cargo
|
||||
cargo-tauri
|
||||
];
|
||||
|
||||
substitutions = {
|
||||
inherit targetSubdirectory;
|
||||
inherit (rust.envVars) rustHostPlatformSpec setEnv;
|
||||
|
||||
# A map of the bundles used for Tauri's different supported platforms
|
||||
# https://github.com/tauri-apps/tauri/blob/23a912bb84d7c6088301e1ffc59adfa8a799beab/README.md#platforms
|
||||
defaultTauriBundleType =
|
||||
{
|
||||
darwin = "app";
|
||||
linux = "deb";
|
||||
}
|
||||
.${kernelName} or (throw "${kernelName} is not supported by cargo-tauri.hook");
|
||||
|
||||
# $targetDir is the path to the build artifacts (i.e., `./target/release`)
|
||||
installScript =
|
||||
{
|
||||
darwin = ''
|
||||
mkdir $out
|
||||
mv "$targetDir"/bundle/macos $out/Applications
|
||||
'';
|
||||
|
||||
linux = ''
|
||||
mv "$targetDir"/bundle/deb/*/data/usr $out
|
||||
'';
|
||||
}
|
||||
.${kernelName} or (throw "${kernelName} is not supported by cargo-tauri.hook");
|
||||
};
|
||||
|
||||
meta = {
|
||||
inherit (cargo-tauri.meta) maintainers broken;
|
||||
# Platforms that Tauri supports bundles for
|
||||
platforms = lib.platforms.darwin ++ lib.platforms.linux;
|
||||
};
|
||||
} ./hook.sh
|
101
pkgs/by-name/ca/cargo-tauri/hook.sh
Normal file
101
pkgs/by-name/ca/cargo-tauri/hook.sh
Normal file
@ -0,0 +1,101 @@
|
||||
# shellcheck shell=bash disable=SC2034,SC2154,SC2164
|
||||
|
||||
# We replace these
|
||||
export dontCargoBuild=true
|
||||
export dontCargoInstall=true
|
||||
|
||||
tauriBuildHook() {
|
||||
echo "Executing tauriBuildHook"
|
||||
|
||||
runHook preBuild
|
||||
|
||||
## The following is lifted from rustPlatform.cargoBuildHook
|
||||
## As we're replacing it, we should also be respecting its options.
|
||||
|
||||
# Account for running outside of mkRustPackage where this may not be set
|
||||
cargoBuildType="${cargoBuildType:-release}"
|
||||
|
||||
# Let stdenv handle stripping, for consistency and to not break
|
||||
# separateDebugInfo.
|
||||
export "CARGO_PROFILE_${cargoBuildType@U}_STRIP"=false
|
||||
|
||||
if [ -n "${buildAndTestSubdir-}" ]; then
|
||||
# ensure the output doesn't end up in the subdirectory
|
||||
CARGO_TARGET_DIR="$(pwd)/target"
|
||||
export CARGO_TARGET_DIR
|
||||
|
||||
# Tauri doesn't respect $CARGO_TARGET_DIR, but does respect the cargo
|
||||
# argument...but that doesn't respect `--target`, so we have to use the
|
||||
# config file
|
||||
# https://github.com/tauri-apps/tauri/issues/10190
|
||||
printf '\nbuild.target-dir = "%s"' "$CARGO_TARGET_DIR" >>config.toml
|
||||
|
||||
pushd "${buildAndTestSubdir}"
|
||||
fi
|
||||
|
||||
local cargoFlagsArray=(
|
||||
"-j" "$NIX_BUILD_CORES"
|
||||
"--target" "@rustHostPlatformSpec@"
|
||||
"--offline"
|
||||
)
|
||||
local tauriFlagsArray=(
|
||||
"--bundles" "${tauriBundleType:-@defaultTauriBundleType@}"
|
||||
"--target" "@rustHostPlatformSpec@"
|
||||
)
|
||||
|
||||
if [ "${cargoBuildType}" != "debug" ]; then
|
||||
cargoFlagsArray+=("--profile" "${cargoBuildType}")
|
||||
fi
|
||||
|
||||
if [ -n "${cargoBuildNoDefaultFeatures-}" ]; then
|
||||
cargoFlagsArray+=("--no-default-features")
|
||||
fi
|
||||
|
||||
if [ -n "${cargoBuildFeatures-}" ]; then
|
||||
cargoFlagsArray+=("--features=$(concatStringsSep "," cargoBuildFeatures)")
|
||||
fi
|
||||
|
||||
concatTo cargoFlagsArray cargoBuildFlags
|
||||
|
||||
if [ "${cargoBuildType:-}" == "debug" ]; then
|
||||
tauriFlagsArray+=("--debug")
|
||||
fi
|
||||
|
||||
concatTo tauriFlagsArray tauriBuildFlags
|
||||
|
||||
echoCmd 'cargo-tauri.hook cargoFlags' "${cargoFlagsArray[@]}"
|
||||
echoCmd 'cargo-tauri.hook tauriFlags' "${tauriFlagsArray[@]}"
|
||||
|
||||
@setEnv@ cargo tauri build "${tauriFlagsArray[@]}" -- "${cargoFlagsArray[@]}"
|
||||
|
||||
if [ -n "${buildAndTestSubdir-}" ]; then
|
||||
popd
|
||||
fi
|
||||
|
||||
runHook postBuild
|
||||
|
||||
echo "Finished tauriBuildHook"
|
||||
}
|
||||
|
||||
tauriInstallHook() {
|
||||
echo "Executing tauriInstallHook"
|
||||
|
||||
runHook preInstall
|
||||
|
||||
# Use a nice variable for our target directory in the following script
|
||||
targetDir=target/@targetSubdirectory@/$cargoBuildType
|
||||
|
||||
@installScript@
|
||||
|
||||
runHook postInstall
|
||||
|
||||
echo "Finished tauriInstallHook"
|
||||
}
|
||||
|
||||
if [ -z "${dontTauriBuild:-}" ] && [ -z "${buildPhase:-}" ]; then
|
||||
buildPhase=tauriBuildHook
|
||||
fi
|
||||
|
||||
if [ -z "${dontTauriInstall:-}" ] && [ -z "${installPhase:-}" ]; then
|
||||
installPhase=tauriInstallHook
|
||||
fi
|
@ -1,21 +1,17 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
callPackage,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
darwin,
|
||||
gtk3,
|
||||
libsoup,
|
||||
openssl,
|
||||
pkg-config,
|
||||
glibc,
|
||||
libsoup,
|
||||
cairo,
|
||||
gtk3,
|
||||
webkitgtk,
|
||||
darwin,
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (darwin.apple_sdk.frameworks) CoreServices Security SystemConfiguration;
|
||||
in
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "tauri";
|
||||
version = "1.7.1-unstable-2024-08-16";
|
||||
@ -33,33 +29,46 @@ rustPlatform.buildRustPackage rec {
|
||||
|
||||
cargoHash = "sha256-VXg/dAhwPTSrLwJm8HNzAi/sVF9RqgpHIF3PZe1LjSA=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs =
|
||||
[ openssl ]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
glibc
|
||||
libsoup
|
||||
cairo
|
||||
gtk3
|
||||
libsoup
|
||||
webkitgtk
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
CoreServices
|
||||
Security
|
||||
SystemConfiguration
|
||||
];
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin (
|
||||
with darwin.apple_sdk.frameworks;
|
||||
[
|
||||
CoreServices
|
||||
Security
|
||||
SystemConfiguration
|
||||
]
|
||||
);
|
||||
|
||||
passthru = {
|
||||
# See ./doc/hooks/tauri.section.md
|
||||
hook = callPackage ./hook.nix { };
|
||||
|
||||
tests = {
|
||||
setupHooks = callPackage ./test-app.nix { };
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Build smaller, faster, and more secure desktop applications with a web frontend";
|
||||
mainProgram = "cargo-tauri";
|
||||
homepage = "https://tauri.app/";
|
||||
changelog = "https://github.com/tauri-apps/tauri/releases/tag/tauri-v${version}";
|
||||
license = with lib.licenses; [
|
||||
asl20 # or
|
||||
mit
|
||||
];
|
||||
maintainers = with lib.maintainers; [
|
||||
dit7ya
|
||||
getchoo
|
||||
happysalada
|
||||
];
|
||||
mainProgram = "cargo-tauri";
|
||||
};
|
||||
}
|
60
pkgs/by-name/ca/cargo-tauri/test-app.nix
Normal file
60
pkgs/by-name/ca/cargo-tauri/test-app.nix
Normal file
@ -0,0 +1,60 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
rustPlatform,
|
||||
cargo-tauri,
|
||||
darwin,
|
||||
glib-networking,
|
||||
libsoup,
|
||||
openssl,
|
||||
pkg-config,
|
||||
webkitgtk,
|
||||
wrapGAppsHook3,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "test-app";
|
||||
inherit (cargo-tauri) version src;
|
||||
|
||||
# Basic example provided by upstream
|
||||
sourceRoot = "${src.name}/examples/workspace";
|
||||
|
||||
cargoPatches = [
|
||||
# https://github.com/NixOS/nixpkgs/issues/332957
|
||||
./update-time-crate.patch
|
||||
];
|
||||
|
||||
cargoHash = "sha256-ull9BWzeKsnMi4wcH67FnKFzTjqEdiRlM3f+EKIPvvU=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cargo-tauri.hook
|
||||
|
||||
pkg-config
|
||||
wrapGAppsHook3
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
[ openssl ]
|
||||
++ lib.optionals stdenv.isLinux [
|
||||
glib-networking
|
||||
libsoup
|
||||
webkitgtk
|
||||
]
|
||||
++ lib.optionals stdenv.isDarwin (
|
||||
with darwin.apple_sdk.frameworks;
|
||||
[
|
||||
AppKit
|
||||
CoreServices
|
||||
Security
|
||||
WebKit
|
||||
]
|
||||
);
|
||||
|
||||
# No one should be actually running this, so lets save some time
|
||||
buildType = "debug";
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
inherit (cargo-tauri.hook.meta) platforms;
|
||||
};
|
||||
}
|
1378
pkgs/by-name/ca/cargo-tauri/update-time-crate.patch
Normal file
1378
pkgs/by-name/ca/cargo-tauri/update-time-crate.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -3,11 +3,10 @@
|
||||
stdenv,
|
||||
darwin,
|
||||
fetchFromGitHub,
|
||||
rust,
|
||||
rustPlatform,
|
||||
cargo-tauri,
|
||||
cinny,
|
||||
copyDesktopItems,
|
||||
desktop-file-utils,
|
||||
wrapGAppsHook3,
|
||||
pkg-config,
|
||||
openssl,
|
||||
@ -16,7 +15,6 @@
|
||||
glib-networking,
|
||||
libayatana-appindicator,
|
||||
webkitgtk,
|
||||
makeDesktopItem,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
@ -58,27 +56,22 @@ rustPlatform.buildRustPackage rec {
|
||||
--replace "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
|
||||
'';
|
||||
|
||||
postBuild = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
cargo tauri build --bundles app --target "${rust.envVars.rustHostPlatform}"
|
||||
'';
|
||||
|
||||
postInstall =
|
||||
lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
install -DT icons/128x128@2x.png $out/share/icons/hicolor/256x256@2/apps/cinny.png
|
||||
install -DT icons/128x128.png $out/share/icons/hicolor/128x128/apps/cinny.png
|
||||
install -DT icons/32x32.png $out/share/icons/hicolor/32x32/apps/cinny.png
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mkdir -p "$out/Applications/"
|
||||
cp -r "target/${rust.envVars.rustHostPlatform}/release/bundle/macos/Cinny.app" "$out/Applications/"
|
||||
lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
ln -sf "$out/Applications/Cinny.app/Contents/MacOS/Cinny" "$out/bin/cinny"
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
desktop-file-edit \
|
||||
--set-comment "Yet another matrix client for desktop" \
|
||||
--set-key="Categories" --set-value="Network;InstantMessaging;" \
|
||||
$out/share/applications/cinny.desktop
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
copyDesktopItems
|
||||
wrapGAppsHook3
|
||||
pkg-config
|
||||
cargo-tauri
|
||||
cargo-tauri.hook
|
||||
desktop-file-utils
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
@ -97,20 +90,6 @@ rustPlatform.buildRustPackage rec {
|
||||
darwin.apple_sdk.frameworks.WebKit
|
||||
];
|
||||
|
||||
desktopItems = lib.optionals stdenv.hostPlatform.isLinux [
|
||||
(makeDesktopItem {
|
||||
name = "cinny";
|
||||
exec = "cinny";
|
||||
icon = "cinny";
|
||||
desktopName = "Cinny";
|
||||
comment = meta.description;
|
||||
categories = [
|
||||
"Network"
|
||||
"InstantMessaging"
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Yet another matrix client for desktop";
|
||||
homepage = "https://github.com/cinnyapp/cinny-desktop";
|
||||
|
@ -1,6 +1,5 @@
|
||||
{ rustPlatform
|
||||
, libdeltachat
|
||||
, perl
|
||||
, pkg-config
|
||||
}:
|
||||
|
||||
@ -10,10 +9,13 @@ rustPlatform.buildRustPackage {
|
||||
inherit (libdeltachat) version src cargoLock buildInputs;
|
||||
|
||||
nativeBuildInputs = [
|
||||
perl
|
||||
pkg-config
|
||||
];
|
||||
|
||||
env = {
|
||||
OPENSSL_NO_VENDOR = true;
|
||||
};
|
||||
|
||||
cargoBuildFlags = [ "--package" "deltachat-repl" ];
|
||||
|
||||
doCheck = false;
|
||||
|
@ -1,6 +1,5 @@
|
||||
{ rustPlatform
|
||||
, libdeltachat
|
||||
, perl
|
||||
, pkg-config
|
||||
}:
|
||||
|
||||
@ -10,10 +9,13 @@ rustPlatform.buildRustPackage {
|
||||
inherit (libdeltachat) version src cargoLock buildInputs;
|
||||
|
||||
nativeBuildInputs = [
|
||||
perl
|
||||
pkg-config
|
||||
];
|
||||
|
||||
env = {
|
||||
OPENSSL_NO_VENDOR = true;
|
||||
};
|
||||
|
||||
cargoBuildFlags = [ "--package" "deltachat-rpc-server" ];
|
||||
|
||||
doCheck = false;
|
||||
|
@ -24,7 +24,6 @@ python3.pkgs.buildPythonApplication rec {
|
||||
build-system = with python3.pkgs; [ poetry-core ];
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"textual"
|
||||
"tzlocal"
|
||||
];
|
||||
|
||||
@ -33,7 +32,21 @@ python3.pkgs.buildPythonApplication rec {
|
||||
pyperclip
|
||||
python-dateutil
|
||||
pyyaml
|
||||
textual
|
||||
(textual.overridePythonAttrs (oldAttrs: {
|
||||
version = "0.47.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Textualize";
|
||||
repo = "textual";
|
||||
rev = "refs/tags/v0.47.1";
|
||||
hash = "sha256-RFaZKQ+0o6ZvfZxx95a1FjSHVJ0VOIAfzkdxYQXYBKU=";
|
||||
};
|
||||
disabledTests = [
|
||||
"test_tracked_slugs"
|
||||
"test_textual_env_var"
|
||||
"test_register_language"
|
||||
"test_register_language_existing_language"
|
||||
];
|
||||
}))
|
||||
tzlocal
|
||||
];
|
||||
|
||||
@ -57,6 +70,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
maintainers = with maintainers; [
|
||||
khaneliman
|
||||
wesleyjrz
|
||||
kraanzu
|
||||
];
|
||||
mainProgram = "dooit";
|
||||
};
|
||||
|
@ -56,7 +56,7 @@ buildRustPackage rec {
|
||||
[
|
||||
pnpm_9.configHook
|
||||
nodejs
|
||||
cargo-tauri
|
||||
cargo-tauri.hook
|
||||
pkg-config
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [ wrapGAppsHook3 ]
|
||||
@ -77,35 +77,8 @@ buildRustPackage rec {
|
||||
darwin.apple_sdk_11_0.frameworks.WebKit
|
||||
];
|
||||
|
||||
# remove once cargo-tauri.hook becomes available
|
||||
# https://github.com/NixOS/nixpkgs/pull/335751
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
cargo tauri build --bundles ${if stdenv.hostPlatform.isDarwin then "app" else "deb"}
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
doCheck = false; # many scoring tests fail
|
||||
|
||||
# remove once cargo-tauri.hook becomes available
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
${lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mkdir -p "$out"/Applications
|
||||
cp -r src-tauri/target/release/bundle/macos/* "$out"/Applications
|
||||
''}
|
||||
|
||||
${lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
mkdir -p "$out"
|
||||
cp -r src-tauri/target/release/bundle/deb/*/data/usr/* "$out"
|
||||
''}
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
makeWrapper "$out"/Applications/en-croissant.app/Contents/MacOS/en-croissant $out/bin/en-croissant
|
||||
'';
|
||||
|
30
pkgs/by-name/ff/ffts/package.nix
Normal file
30
pkgs/by-name/ff/ffts/package.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
cmake,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ffts";
|
||||
version = "0-unstable-2019-03-19";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linkotec";
|
||||
repo = "ffts";
|
||||
rev = "2c8da4877588e288ff4cd550f14bec2dc7bf668c";
|
||||
hash = "sha256-Cj0n7fwFAu6+3ojgczL0Unobdx/XzGNFvNVMXdyHXE4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
cmakeFlags = [ "-DENABLE_SHARED=ON" ];
|
||||
|
||||
meta = {
|
||||
description = "The Fastest Fourier Transform in the South";
|
||||
homepage = "https://github.com/linkotec/ffts";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ bgamari ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
36
pkgs/by-name/fr/fragment-mono/package.nix
Normal file
36
pkgs/by-name/fr/fragment-mono/package.nix
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchzip,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "fragment-mono";
|
||||
version = "1.21";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/weiweihuanghuang/fragment-mono/releases/download/${finalAttrs.version}/fragment-mono-${finalAttrs.version}.zip";
|
||||
hash = "sha256-H5s4rYDN2d0J+zVRgBzg8vfZXCA/jjHrGBV8o8Dxutc=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm644 fonts/ttf/*.ttf -t $out/share/fonts/truetype
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/weiweihuanghuang/fragment-mono";
|
||||
description = "Helvetica Monospace Coding Font";
|
||||
changelog = "https://github.com/weiweihuanghuang/fragment-mono/releases/tag/${finalAttrs.version}";
|
||||
longDescription = ''
|
||||
Fragment Mono is a monospaced coding version of Helvetica created
|
||||
by modifying and extending Nimbus Sans by URW Design Studio.
|
||||
'';
|
||||
license = lib.licenses.ofl;
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = [ lib.maintainers.noahgitsham ];
|
||||
};
|
||||
})
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gancio",
|
||||
"version": "1.19.1",
|
||||
"version": "1.19.4",
|
||||
"description": "A shared agenda for local communities",
|
||||
"author": "lesion",
|
||||
"scripts": {
|
||||
|
@ -12,19 +12,19 @@
|
||||
}:
|
||||
mkYarnPackage rec {
|
||||
inherit (nodePackages) nodejs;
|
||||
version = "1.19.1";
|
||||
version = "1.19.4";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "framagit.org";
|
||||
owner = "les";
|
||||
repo = "gancio";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-V63cnyPY9todiA4V/9aENEBOfO0g0bJZBjsOfTY1O0c=";
|
||||
hash = "sha256-x8s7eBVmHCY3kAjHjACotCncvZq6OBiLPJGF6hvfawE=";
|
||||
};
|
||||
|
||||
offlineCache = fetchYarnDeps {
|
||||
yarnLock = src + "/yarn.lock";
|
||||
hash = "sha256-ONPvBvT3zf8IVkIEOmiQgcjI7zPCFwDuQfo+fOvDGzM=";
|
||||
hash = "sha256-LXeAyxZSZOm6GxRuJb5rlHTlQpYa1fdKSENVjwLY4tU=";
|
||||
};
|
||||
|
||||
packageJSON = ./package.json;
|
||||
|
@ -18,10 +18,12 @@
|
||||
libsoup,
|
||||
moreutils,
|
||||
openssl,
|
||||
rust,
|
||||
webkitgtk,
|
||||
nix-update-script,
|
||||
cacert,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "gitbutler";
|
||||
version = "0.12.16";
|
||||
@ -33,11 +35,10 @@ rustPlatform.buildRustPackage rec {
|
||||
hash = "sha256-L4PVaNb3blpLIcyA7XLc71qwUPUADclxvbOkq1Jc1no=";
|
||||
};
|
||||
|
||||
# deactivate the upstream updater in tauri configuration
|
||||
# TODO: use `tauri build`'s `--config` flag with the release configuration instead of manually merging
|
||||
# them. it doesn't seem to like using paths currently, even though it should.
|
||||
# deactivate the upstream updater in tauri configuration & set the version
|
||||
postPatch = ''
|
||||
jq --slurp ".[0] * .[1] | .tauri.updater.active = false" crates/gitbutler-tauri/tauri.conf{,.release}.json | sponge crates/gitbutler-tauri/tauri.conf.json
|
||||
tauri_conf="crates/gitbutler-tauri/tauri.conf.release.json"
|
||||
jq '.package.version = "${version}" | .tauri.updater.active = false' "$tauri_conf" | sponge "$tauri_conf"
|
||||
'';
|
||||
|
||||
cargoLock = {
|
||||
@ -54,7 +55,7 @@ rustPlatform.buildRustPackage rec {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cargo-tauri
|
||||
cargo-tauri.hook
|
||||
desktop-file-utils
|
||||
jq
|
||||
moreutils
|
||||
@ -82,7 +83,15 @@ rustPlatform.buildRustPackage rec {
|
||||
]
|
||||
);
|
||||
|
||||
# extended release configuration
|
||||
tauriBuildFlags = [ "--config crates/gitbutler-tauri/tauri.conf.release.json" ];
|
||||
|
||||
env = {
|
||||
# make sure `crates/gitbutler-tauri/inject-git-binaries.sh` can find our
|
||||
# target dir
|
||||
# https://github.com/gitbutlerapp/gitbutler/blob/56b64d778042d0e93fa362f808c35a7f095ab1d1/crates/gitbutler-tauri/inject-git-binaries.sh#L10C10-L10C26
|
||||
TRIPLE_OVERRIDE = rust.envVars.rustHostPlatformSpec;
|
||||
|
||||
# `pnpm`'s `fetchDeps` and `configHook` uses a specific version of pnpm, not upstream's
|
||||
COREPACK_ENABLE_STRICT = 0;
|
||||
|
||||
@ -95,14 +104,6 @@ rustPlatform.buildRustPackage rec {
|
||||
# we also need to have `tracing` support in `tokio` for `console-subscriber`
|
||||
RUSTFLAGS = "--cfg tokio_unstable";
|
||||
|
||||
tauriBundle =
|
||||
{
|
||||
Linux = "deb";
|
||||
Darwin = "app";
|
||||
}
|
||||
.${stdenv.hostPlatform.uname.system}
|
||||
or (throw "No tauri bundle available for ${stdenv.hostPlatform.uname.system}");
|
||||
|
||||
ESBUILD_BINARY_PATH = lib.getExe (
|
||||
esbuild.override {
|
||||
buildGoModule =
|
||||
@ -128,39 +129,23 @@ rustPlatform.buildRustPackage rec {
|
||||
OPENSSL_NO_VENDOR = true;
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
preBuild = ''
|
||||
pushd packages/ui
|
||||
pnpm package
|
||||
popd
|
||||
|
||||
cargo tauri build --bundles "$tauriBundle"
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
''
|
||||
runHook preInstall
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mkdir -p $out/bin
|
||||
cp -r target/release/bundle/macos $out/Applications
|
||||
postInstall =
|
||||
lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mv $out/Applications/GitButler.app/Contents/MacOS/GitButler $out/bin/git-butler
|
||||
ln -s $out/bin/git-butler $out/Applications/GitButler.app/Contents/MacOS/GitButler
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
cp -r target/release/bundle/"$tauriBundle"/*/data/usr $out
|
||||
|
||||
desktop-file-edit \
|
||||
--set-comment "A Git client for simultaneous branches on top of your existing workflow." \
|
||||
--set-key="Keywords" --set-value="git;" \
|
||||
--set-key="StartupWMClass" --set-value="GitButler" \
|
||||
$out/share/applications/git-butler.desktop
|
||||
''
|
||||
+ ''
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
# the `gitbutler-git` crate's checks do not support release mode
|
||||
|
@ -1,29 +1,3 @@
|
||||
diff --git a/data/meson.build b/data/meson.build
|
||||
index 5e4ce69..982b3c9 100644
|
||||
--- a/data/meson.build
|
||||
+++ b/data/meson.build
|
||||
@@ -31,7 +31,7 @@ i18n.merge_file(
|
||||
|
||||
install_data(
|
||||
'org.gnome.pomodoro.gschema.xml',
|
||||
- install_dir: get_option('datadir') / 'glib-2.0' / 'schemas',
|
||||
+ install_dir: gschema_dir,
|
||||
)
|
||||
|
||||
subdir('icons')
|
||||
diff --git a/meson-post-install.sh b/meson-post-install.sh
|
||||
index bf4013a..c87fba4 100644
|
||||
--- a/meson-post-install.sh
|
||||
+++ b/meson-post-install.sh
|
||||
@@ -7,7 +7,7 @@ datadir="${prefix}/$1"
|
||||
# want/need us to do the below
|
||||
if [ -z "${DESTDIR}" ]; then
|
||||
echo "Compiling GSchema..."
|
||||
- glib-compile-schemas "${datadir}/glib-2.0/schemas"
|
||||
+ glib-compile-schemas "${datadir}/gsettings-schemas/@pname@-@version@/glib-2.0/schemas"
|
||||
|
||||
echo "Updating icon cache..."
|
||||
gtk-update-icon-cache -f -t "${datadir}/icons/hicolor"
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 09857a1..a07d27c 100644
|
||||
--- a/meson.build
|
||||
@ -38,3 +12,12 @@ index 09857a1..a07d27c 100644
|
||||
plugin_libdir = get_option('prefix') / get_option('libdir') / meson.project_name() / 'plugins'
|
||||
extension_dir = get_option('prefix') / get_option('datadir') / 'gnome-shell' / 'extensions' / 'pomodoro@arun.codito.in'
|
||||
|
||||
@@ -134,7 +135,7 @@
|
||||
subdir('tests')
|
||||
|
||||
gnome.post_install(
|
||||
- glib_compile_schemas: true,
|
||||
+ glib_compile_schemas: false,
|
||||
gtk_update_icon_cache: true,
|
||||
update_desktop_database: true,
|
||||
)
|
||||
|
@ -1,36 +1,36 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, substituteAll
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, wrapGAppsHook3
|
||||
, desktop-file-utils
|
||||
, libcanberra
|
||||
, gst_all_1
|
||||
, vala
|
||||
, gtk3
|
||||
, gom
|
||||
, sqlite
|
||||
, libxml2
|
||||
, glib
|
||||
, gobject-introspection
|
||||
, json-glib
|
||||
, libpeas
|
||||
, gsettings-desktop-schemas
|
||||
, gettext
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
substituteAll,
|
||||
meson,
|
||||
ninja,
|
||||
pkg-config,
|
||||
wrapGAppsHook3,
|
||||
desktop-file-utils,
|
||||
libcanberra,
|
||||
gst_all_1,
|
||||
vala,
|
||||
gtk3,
|
||||
gom,
|
||||
sqlite,
|
||||
libxml2,
|
||||
glib,
|
||||
gobject-introspection,
|
||||
json-glib,
|
||||
libpeas,
|
||||
gsettings-desktop-schemas,
|
||||
gettext,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-pomodoro";
|
||||
version = "0.24.1";
|
||||
version = "0.26.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-Ml3znMz1Q9593rMgfAST8k9QglxMG9ocFD7W8kaFWCw=";
|
||||
hash = "sha256-icyS/K6H90/DWYvqJ7f7XXTTuIwLea3k+vDDEBYil6o=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@ -42,6 +42,13 @@ stdenv.mkDerivation rec {
|
||||
})
|
||||
];
|
||||
|
||||
# Manually compile schemas for package since meson option
|
||||
# gnome.post_install(glib_compile_schemas) used by package tries to compile in
|
||||
# the wrong dir.
|
||||
preFixup = ''
|
||||
glib-compile-schemas ${glib.makeSchemaPath "$out" "${pname}-${version}"}
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
@ -76,7 +83,10 @@ stdenv.mkDerivation rec {
|
||||
This GNOME utility helps to manage time according to Pomodoro Technique.
|
||||
It intends to improve productivity and focus by taking short breaks.
|
||||
'';
|
||||
maintainers = with maintainers; [ aleksana ];
|
||||
maintainers = with maintainers; [
|
||||
aleksana
|
||||
herschenglime
|
||||
];
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
|
@ -4,20 +4,22 @@
|
||||
buildGoModule,
|
||||
}:
|
||||
let
|
||||
version = "1.11.0";
|
||||
version = "1.12.0";
|
||||
in
|
||||
buildGoModule {
|
||||
pname = "gotestsum";
|
||||
inherit version;
|
||||
|
||||
# move back to stable releases when build is successful
|
||||
version = "${version}-unstable-2024-09-17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gotestyourself";
|
||||
repo = "gotestsum";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Sq0ejnX7AJoPf3deBge8PMOq1NlMbw+Ljn145C5MQ+s=";
|
||||
rev = "2f61a73f997821b2e5a1823496e8362630e213f9";
|
||||
hash = "sha256-5zgchATcpoM4g5Mxex9wYanzrR0Pie9GYqx48toORkM=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-zUqa6xlDV12ZV4N6+EZ7fLPsL8U+GB7boQ0qG9egvm0=";
|
||||
vendorHash = "sha256-DR4AyEhgD71hFFEAnPfSxaWYFFV7FlPugZBHUjDynEE=";
|
||||
|
||||
doCheck = false;
|
||||
|
4
pkgs/by-name/gr/graphite-cli/package-lock.json
generated
4
pkgs/by-name/gr/graphite-cli/package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@withgraphite/graphite-cli",
|
||||
"version": "1.4.4",
|
||||
"version": "1.4.5",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@withgraphite/graphite-cli",
|
||||
"version": "1.4.4",
|
||||
"version": "1.4.5",
|
||||
"hasInstallScript": true,
|
||||
"license": "None",
|
||||
"dependencies": {
|
||||
|
@ -7,14 +7,14 @@
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "graphite-cli";
|
||||
version = "1.4.4";
|
||||
version = "1.4.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://registry.npmjs.org/@withgraphite/graphite-cli/-/graphite-cli-${version}.tgz";
|
||||
hash = "sha256-a/ouR93i887/QnIeSZX5zVgF194LCCc2hNmSGsH8aDY=";
|
||||
hash = "sha256-ftTJPI3h/v2W3t5CQHn0CdHTYcDeoOdGjfJcRZi58Bc=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-MwJ7ALO0Ebh7K0LW4xJ79tL1FikNe5hiY06X1lwXlC4=";
|
||||
npmDepsHash = "sha256-jXrH8HltxnIU/TIllYZyUueqCEI3Q9rhUY1tzHvXvSE=";
|
||||
|
||||
postPatch = ''
|
||||
ln -s ${./package-lock.json} package-lock.json
|
||||
|
@ -5,7 +5,7 @@ https://bugs.gentoo.org/706154
|
||||
echo '#define TIFFSTRIPBYTECOUNTS uint32_t'
|
||||
echo '#define TIFFVERSION TIFF_VERSION'
|
||||
echo '#define TIFFHEADER TIFFHeader';;
|
||||
- 4.[0123456]) tiff_runlen_t="uint32_t"
|
||||
- 4.[01234567]) tiff_runlen_t="uint32_t"
|
||||
+ 4.[0-9]) tiff_runlen_t="uint32_t"
|
||||
tiff_offset_t="uint64_t"
|
||||
echo '#define TIFFSTRIPBYTECOUNTS uint64_t'
|
||||
|
@ -32,8 +32,8 @@
|
||||
let
|
||||
|
||||
pname = "hylafaxplus";
|
||||
version = "7.0.8";
|
||||
hash = "sha512-6wTLVcaHpASy+2i+jeoJ1cM2aLgI5vznGrLd4NCkLHiOxlfCh/ASRaj2Nxt9ZZ5NN/deEwf9tNSZ7MkFZHVsqA==";
|
||||
version = "7.0.9";
|
||||
hash = "sha512-3OJwM4vFC9pzPozPobFLiNNx/Qnkl8BpNNziRUpJNBDLBxjtg/eDm3GnprS2hpt7VUoV4PCsFvp1hxhNnhlUwQ==";
|
||||
|
||||
configSite = substituteAll {
|
||||
name = "${pname}-config.site";
|
||||
|
@ -8,20 +8,20 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "hyprnotify";
|
||||
version = "0.7.0";
|
||||
version = "0.8.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "codelif";
|
||||
repo = "hyprnotify";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-dL+W+iMwRNw9042bs2XUFPMCCqIvDENXOMzhcLh+RL4=";
|
||||
hash = "sha256-+vBOHXaCWEoQ/Lk9VwP55XqlhSzSS9hoVg4FQOj8dIU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [ alsa-lib ];
|
||||
|
||||
vendorHash = "sha256-AZDtaiSNq7em876Q9f+YeDxboqVwA8IE9dDM6zggFXs=";
|
||||
vendorHash = "sha256-2BuWJ57jELtfj7SGr+dLdC2KFc5sD2bC8MgjUHaIXUs=";
|
||||
|
||||
meta = {
|
||||
description = "DBus Implementation of Freedesktop Notification spec for 'hyprctl notify'";
|
||||
|
@ -7,13 +7,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "jawiki-all-titles-in-ns0";
|
||||
version = "0-unstable-2024-09-11";
|
||||
version = "0-unstable-2024-10-01";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "musjj";
|
||||
repo = "jawiki-archive";
|
||||
rev = "d205f63665e351ea853edc72157f14daa22a227f";
|
||||
hash = "sha256-Jj2vH8UMhgSzWv+RnOipnVNSdeOF6jttcLN/kVYa4D4=";
|
||||
rev = "1e26e5efa36eea5322f55b178a5c4d5a5439feb9";
|
||||
hash = "sha256-8jzsECzrrcHeMvV2K89WagSiCXHjEDEfUwLDanVVuas=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
@ -7,15 +7,15 @@
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "jp-zip-code";
|
||||
version = "0-unstable-2024-09-01";
|
||||
version = "0-unstable-2024-10-01";
|
||||
|
||||
# This package uses a mirror as the source because the
|
||||
# original provider uses the same URL for updated content.
|
||||
src = fetchFromGitHub {
|
||||
owner = "musjj";
|
||||
repo = "jp-zip-codes";
|
||||
rev = "995d7cce9ae68a31efe4b5882137dd67ac26f7ff";
|
||||
hash = "sha256-VnzczwIbYPUpWpWLMm2TYGqiDxzZaDDKs7xh4F3xA0E=";
|
||||
rev = "94ddc993224a6e2c65480f9109564f7f68125665";
|
||||
hash = "sha256-/2f/HXxrxKc6dv5E67S59xIpdJUkh0fX0lyTuo2y1N4=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
@ -1,16 +1,15 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, copyDesktopItems
|
||||
, stdenv
|
||||
, rustc
|
||||
, rustPlatform
|
||||
, cargo
|
||||
, cargo-tauri
|
||||
, desktop-file-utils
|
||||
, openssl
|
||||
, libayatana-appindicator
|
||||
, webkitgtk
|
||||
, pkg-config
|
||||
, makeDesktopItem
|
||||
, pnpm
|
||||
, nodejs
|
||||
}:
|
||||
@ -49,10 +48,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
rustPlatform.cargoSetupHook
|
||||
cargo
|
||||
rustc
|
||||
cargo-tauri
|
||||
cargo-tauri.hook
|
||||
desktop-file-utils
|
||||
nodejs
|
||||
pnpm.configHook
|
||||
copyDesktopItems
|
||||
pkg-config
|
||||
];
|
||||
|
||||
@ -62,28 +61,13 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
webkitgtk
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
cargo tauri build -b deb
|
||||
postInstall = lib.optionalString stdenv.isLinux ''
|
||||
desktop-file-edit \
|
||||
--set-comment "An UNOFFICIAL cross-platform KakaoTalk client" \
|
||||
--set-key="Categories" --set-value="Network;InstantMessaging;" \
|
||||
$out/share/applications/kiwi-talk.desktop
|
||||
'';
|
||||
|
||||
preInstall = ''
|
||||
mv target/release/bundle/deb/*/data/usr/ $out
|
||||
# delete the generated desktop entry
|
||||
rm -r $out/share/applications
|
||||
'';
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "KiwiTalk";
|
||||
exec = "kiwi-talk";
|
||||
icon = "kiwi-talk";
|
||||
desktopName = "KiwiTalk";
|
||||
comment = "An UNOFFICIAL cross-platform KakaoTalk client";
|
||||
categories = [ "Network" "InstantMessaging" ];
|
||||
terminal = false;
|
||||
})
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "UNOFFICIAL cross-platform KakaoTalk client written in TypeScript & Rust (SolidJS, tauri)";
|
||||
homepage = "https://github.com/KiwiTalk/KiwiTalk";
|
||||
|
221
pkgs/by-name/kn/knossosnet/deps.nix
generated
221
pkgs/by-name/kn/knossosnet/deps.nix
generated
@ -2,114 +2,115 @@
|
||||
# Please dont edit it manually, your changes might get overwritten!
|
||||
|
||||
{ fetchNuGet }: [
|
||||
(fetchNuGet { pname = "Avalonia"; version = "11.0.5"; sha256 = "1l8vpw7dmkgll197i42r98ikkl0g08469wkl1kxkcv8f0allgah6"; })
|
||||
(fetchNuGet { pname = "Avalonia.Angle.Windows.Natives"; version = "2.1.0.2023020321"; sha256 = "1az4s1g22ipak9a3xfh55z2h3rm6lpqh7svbpw6ag4ysrgsjjsjd"; })
|
||||
(fetchNuGet { pname = "Avalonia.BuildServices"; version = "0.0.29"; sha256 = "05mm7f0jssih3gbzqfgjnfq5cnqa85ihsg0z1897ciihv8qd3waq"; })
|
||||
(fetchNuGet { pname = "Avalonia.Controls.ColorPicker"; version = "11.0.5"; sha256 = "0w1909yjg1s1h6zzxbfw1dazvlknpgk9v7d03ik7ihd14lxzr1i2"; })
|
||||
(fetchNuGet { pname = "Avalonia.Controls.DataGrid"; version = "11.0.5"; sha256 = "14nr767zhxcqwis901sn5s9qala0wf2ip4pic3ncdvkhyhq6w9fs"; })
|
||||
(fetchNuGet { pname = "Avalonia.Desktop"; version = "11.0.5"; sha256 = "1zqp8whkvm95zxhjpwska7rhkbxjfkv2fz3821pn782931pn59ah"; })
|
||||
(fetchNuGet { pname = "Avalonia.Diagnostics"; version = "11.0.5"; sha256 = "1plr03dgq24gjlcx39qlbcg2ywh7in58yfkkq9snvnagh8yk3ifi"; })
|
||||
(fetchNuGet { pname = "Avalonia.FreeDesktop"; version = "11.0.5"; sha256 = "0sn6c3mqvc62vhy8ssmz515wbcaq418qfrck67zysp2qzw5iyv9v"; })
|
||||
(fetchNuGet { pname = "Avalonia.HtmlRenderer"; version = "11.0.0"; sha256 = "1glnc82dasxcajb84h41273cfaa5apxwfrh12bgd294hfzbza40c"; })
|
||||
(fetchNuGet { pname = "Avalonia.Native"; version = "11.0.5"; sha256 = "1n41g1z36sgvhfl7bdavc3j7ccr3qkbqjc4znimqazzyfifh0m99"; })
|
||||
(fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.5"; sha256 = "0a6a8lbpna3z5bcall7a953r3xjibcl90ic21gimwhipyp29sfn1"; })
|
||||
(fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.5"; sha256 = "008pqpim91i6mya0nfn3g9gclh0dw5mqmhi2fdalbh62sa8a18xc"; })
|
||||
(fetchNuGet { pname = "Avalonia.Themes.Fluent"; version = "11.0.5"; sha256 = "1zhg11c8iah06gkv6gk7vzs0q9lbx1whfma5p2s00k3kyhv9lcqi"; })
|
||||
(fetchNuGet { pname = "Avalonia.Themes.Simple"; version = "11.0.5"; sha256 = "1i6xpihpw32i9mywzzhw0nyc2gkifmri6ylila21y8xb0jdazdyv"; })
|
||||
(fetchNuGet { pname = "Avalonia.Win32"; version = "11.0.5"; sha256 = "03rbx4msnl8jvw1017wi88rxvgg8iz7idy7wajp3nzk9m0c4pilx"; })
|
||||
(fetchNuGet { pname = "Avalonia.X11"; version = "11.0.5"; sha256 = "1bixdr5yzd9spyjc4n2kf1bwg52q3p5akj9xsr25xp310j3kgyxf"; })
|
||||
(fetchNuGet { pname = "CommunityToolkit.Mvvm"; version = "8.2.2"; sha256 = "01kkwhz3r7l9d70p6mcgpdc0f05dad0lv6dmcj4sq9ry9ic6pnmx"; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp"; version = "2.8.2.3"; sha256 = "115aybicqs9ijjlcv6k6r5v0agkjm1bm1nkd0rj3jglv8s0xvmp2"; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "2.8.2.3"; sha256 = "1f18ahwkaginrg0vwsi6s56lvnqvvxv7pzklfs5lnknasxy1a76z"; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "2.8.2.3"; sha256 = "052d8frpkj4ijs6fm6xp55xbv95b1s9biqwa0w8zp3rgm88m9236"; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "2.8.2.3"; sha256 = "043hv36bg5240znbm8x5la7py17m4jfzy57q3ka32f6zjld83j36"; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "2.8.2.3"; sha256 = "08khd2jqm8sw58ljz5srangzfm2sz3gd2q1jzc5fr80lj8rv6r74"; })
|
||||
(fetchNuGet { pname = "ini-parser-netstandard"; version = "2.5.2"; sha256 = "14alsxh7ik07xl9xab8bdi108f4xhz8vcchxvxy1k5w3zf3gdml9"; })
|
||||
(fetchNuGet { pname = "MicroCom.Runtime"; version = "0.11.0"; sha256 = "0p9c3m0zk59x9dcqw077hzd2yk60myisbacvm36mnwpcjwzjkp2m"; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.0.0"; sha256 = "0bbl0jpqywqmzz2gagld1p2gvdfldjfjmm25hil9wj2nq1zc4di8"; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.8.0"; sha256 = "12n7rvr39bzkf2maw7zplw8rwpxpxss4ich3bb2pw770rx4nyvyw"; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.8.0"; sha256 = "1kmry65csvfn72zzc16vj1nfbfwam28wcmlrk3m5rzb8ydbzgylb"; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "3.8.0"; sha256 = "0w0yx0lpg54iw5jazqk46h48gx43ij32gwac8iywdj6kxfxm03vw"; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.8.0"; sha256 = "0hjgxcsj5zy27lqk0986m59n5dbplx2vjjla2lsvg4bwg8qa7bpk"; })
|
||||
(fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "7.0.0"; sha256 = "121zs4jp8iimgbpzm3wsglhjwkc06irg1pxy8c1zcdlsg34cfq1p"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "7.0.0"; sha256 = "181d7mp9307fs17lyy42f8cxnjwysddmpsalky4m0pqxcimnr6g7"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Http"; version = "7.0.0"; sha256 = "196b13zkkq0fhfgigkhwcw1hhaj4dj5pc27z7d5niaizzx6ycwiw"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "7.0.0"; sha256 = "1bqd3pqn5dacgnkq0grc17cgb2i0w8z1raw12nwm3p3zhrfcvgxf"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "7.0.0"; sha256 = "1gn7d18i1wfy13vrwhmdv1rmsb4vrk26kqdld4cgvh77yigj90xs"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "7.0.0"; sha256 = "0b90zkrsk5dw3wr749rbynhpxlg4bgqdnd7d5vdlw2g9c7zlhgx6"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "7.0.0"; sha256 = "1b4km9fszid9vp2zb3gya5ni9fn8bq62bzaas2ck2r7gs0sdys80"; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.1.2"; sha256 = "1507hnpr9my3z4w1r6xk5n0s1j3y6a2c2cnynj76za7cphxi1141"; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
|
||||
(fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "6.0.0"; sha256 = "0c6pcj088g1yd1vs529q3ybgsd2vjlk5y1ic6dkmbhvrp5jibl9p"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; })
|
||||
(fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; })
|
||||
(fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; })
|
||||
(fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; })
|
||||
(fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
|
||||
(fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; })
|
||||
(fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; })
|
||||
(fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; })
|
||||
(fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; })
|
||||
(fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; })
|
||||
(fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; })
|
||||
(fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; })
|
||||
(fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; })
|
||||
(fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; })
|
||||
(fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; })
|
||||
(fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; })
|
||||
(fetchNuGet { pname = "SharpCompress"; version = "0.33.0"; sha256 = "1j94hfjvkygpp97svv75jay0rmnx9ygg86d5syyahl9hayns4ig9"; })
|
||||
(fetchNuGet { pname = "SkiaSharp"; version = "2.88.6"; sha256 = "0xs11zjw9ha68maw3l825kfwlrid43qwy0mswljxhpjh0y1k6k6b"; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.6"; sha256 = "0cg38xgddww1y93xrnbfn40sin63yl39j5zm7gm5pdgp5si0cf2n"; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.6"; sha256 = "1fp9h8c8k6sbsh48b69dc6461isd4dajq7yw5i7j6fhkas78q4zf"; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.6"; sha256 = "02wpxwqwknhdhkl00in766samqfzi7r6jmhxs4d047v0fmygv1h8"; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.6"; sha256 = "1w2mwcwkqvrg4x4ybc4674xnkqwh1n2ihg520gqgpnqfc11ghc4n"; })
|
||||
(fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; })
|
||||
(fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r"; })
|
||||
(fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "4.5.0"; sha256 = "1jj6f6g87k0iwsgmg3xmnn67a14mq88np0l1ys5zkxhkvbc8976p"; })
|
||||
(fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; })
|
||||
(fetchNuGet { pname = "System.Drawing.Common"; version = "6.0.0"; sha256 = "02n8rzm58dac2np8b3xw8ychbvylja4nh6938l5k2fhyn40imlgz"; })
|
||||
(fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; })
|
||||
(fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; })
|
||||
(fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; })
|
||||
(fetchNuGet { pname = "System.IO.Pipelines"; version = "6.0.0"; sha256 = "08211lvckdsdbd67xz4f6cyk76cli565j0dby1grlc4k9bhwby65"; })
|
||||
(fetchNuGet { pname = "System.Linq"; version = "4.3.0"; sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; })
|
||||
(fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; })
|
||||
(fetchNuGet { pname = "System.Memory"; version = "4.5.4"; sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; })
|
||||
(fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
|
||||
(fetchNuGet { pname = "System.ObjectModel"; version = "4.3.0"; sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2"; })
|
||||
(fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; })
|
||||
(fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Metadata"; version = "5.0.0"; sha256 = "17qsl5nanlqk9iz0l5wijdn6ka632fs1m1fvx18dfgswm258r3ss"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; })
|
||||
(fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; })
|
||||
(fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; })
|
||||
(fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
|
||||
(fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.7.1"; sha256 = "119br3pd85lq8zcgh4f60jzmv1g976q1kdgi3hvqdlhfbw6siz2j"; })
|
||||
(fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; })
|
||||
(fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; })
|
||||
(fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; })
|
||||
(fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; })
|
||||
(fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
|
||||
(fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.5.1"; sha256 = "1z21qyfs6sg76rp68qdx0c9iy57naan89pg7p6i3qpj8kyzn921w"; })
|
||||
(fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; })
|
||||
(fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; })
|
||||
(fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; })
|
||||
(fetchNuGet { pname = "Tmds.DBus.Protocol"; version = "0.15.0"; sha256 = "0d99kcs7r9cp6gpyc7z230czkkyx4164x86dhy0mca73f2ykc2g2"; })
|
||||
(fetchNuGet { pname = "AnimatedImage.Avalonia"; version = "1.0.7"; hash = "sha256-E3wguYRmXYbdP7qcVER5IdxvB5S7rbGoZD7+jwrk5zM="; })
|
||||
(fetchNuGet { pname = "Avalonia"; version = "11.0.5"; hash = "sha256-BqpHqQIObTb7DHTyZAgCD9A5I0pZkHhSoPTN2g6/G9E="; })
|
||||
(fetchNuGet { pname = "Avalonia.Angle.Windows.Natives"; version = "2.1.0.2023020321"; hash = "sha256-TWop9cvak6cMv2vrA/GlpuYBxS8Fuj5UmupGIV7Q5Ks="; })
|
||||
(fetchNuGet { pname = "Avalonia.BuildServices"; version = "0.0.29"; hash = "sha256-WPHRMNowRnYSCh88DWNBCltWsLPyOfzXGzBqLYE7tRY="; })
|
||||
(fetchNuGet { pname = "Avalonia.Controls.ColorPicker"; version = "11.0.5"; hash = "sha256-Iob8OyWhwXhmHKCdnea7dtL9VQvcrf6/gUGHJ30CKXA="; })
|
||||
(fetchNuGet { pname = "Avalonia.Controls.DataGrid"; version = "11.0.5"; hash = "sha256-2iVuMPRw7sbsYPGSG4XjQFGFky5WB5B05Jh1+I852ZI="; })
|
||||
(fetchNuGet { pname = "Avalonia.Desktop"; version = "11.0.5"; hash = "sha256-UKVibxhJoGNvEGh8J/Z0sq8J81FT8yth/yXVPSFHF/8="; })
|
||||
(fetchNuGet { pname = "Avalonia.Diagnostics"; version = "11.0.5"; hash = "sha256-0cUxPYJP2W11wnM6j4qNB3IvHlsUp9EZlY8I/NoAmd4="; })
|
||||
(fetchNuGet { pname = "Avalonia.FreeDesktop"; version = "11.0.5"; hash = "sha256-O20fC/9YXO3/MZNlh1EgWLHFSyi/ao083MKwjetgxmo="; })
|
||||
(fetchNuGet { pname = "Avalonia.HtmlRenderer"; version = "11.0.0"; hash = "sha256-DBD113eQJNHeEgFmx/tVRSnHxhGBQIKWVKxr1QRilr4="; })
|
||||
(fetchNuGet { pname = "Avalonia.Native"; version = "11.0.5"; hash = "sha256-KVUAXXT+f4VrtJ8widfEIzN25GBbtXWog/tpM354gdg="; })
|
||||
(fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.5"; hash = "sha256-wTqdxPU3Ql7jC4JFkChbUfaRR0nqUKrYKn8oexdFyig="; })
|
||||
(fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.5"; hash = "sha256-rKOgkNLCwEVVcyLCimvhDUDKXnrDOguUryaGVOPFFwE="; })
|
||||
(fetchNuGet { pname = "Avalonia.Themes.Fluent"; version = "11.0.5"; hash = "sha256-ETOaNvRzTAC0uEVVB3noiyYM9N9nPrPnMwCqiFgID/4="; })
|
||||
(fetchNuGet { pname = "Avalonia.Themes.Simple"; version = "11.0.5"; hash = "sha256-27evmgSrIx+EopF6E3N1cT7BvAUc/s99TVEMfmG83cQ="; })
|
||||
(fetchNuGet { pname = "Avalonia.Win32"; version = "11.0.5"; hash = "sha256-ncZLGKhpfjuuVPz4Fs+P6L3dM0KRnwAC3xJRqyvpKw8="; })
|
||||
(fetchNuGet { pname = "Avalonia.X11"; version = "11.0.5"; hash = "sha256-rvs3hwRh3F5E1j3JqcodWJTHV3BTWMKkvzq170tuPa4="; })
|
||||
(fetchNuGet { pname = "CommunityToolkit.Mvvm"; version = "8.2.2"; hash = "sha256-vdprWEw+J6yJZLWZTUFTrQAHWLuPVXPBaYmePD7kcwY="; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp"; version = "2.8.2.3"; hash = "sha256-4tbdgUabPjlkBm3aUFeocj4Fdslmms2olDFpzOLyqoQ="; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "2.8.2.3"; hash = "sha256-3xwVfNfKTkuLdnT+e3bfG9tNTdEmar7ByzY+NTlUKLg="; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "2.8.2.3"; hash = "sha256-ZohUEaovj/sRB4rjuJIOq6S9eim3m+qMlpHIebNDTRQ="; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "2.8.2.3"; hash = "sha256-ZsiBGpXfODHUHPgU/50k9QR/j6Klo7rsB0SUt8zYcBA="; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "2.8.2.3"; hash = "sha256-5GSzM5IUoOwK+zJg0d74WlT3n1VZly8pKlyjiqVocCI="; })
|
||||
(fetchNuGet { pname = "ini-parser-netstandard"; version = "2.5.2"; hash = "sha256-idb2hvuDlxl83x0yttGHnTgEQmwLLdUT7QfMeGDXVJE="; })
|
||||
(fetchNuGet { pname = "MicroCom.Runtime"; version = "0.11.0"; hash = "sha256-VdwpP5fsclvNqJuppaOvwEwv2ofnAI5ZSz2V+UEdLF0="; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.0.0"; hash = "sha256-KDbCfsBWSJ5ohEXUKp1s1LX9xA2NPvXE/xVzj68EdC0="; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.8.0"; hash = "sha256-3G9vSc/gHH7FWgOySLTut1+eEaf3H66qcPOvNPLOx4o="; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.8.0"; hash = "sha256-i/r3V/No/VzqmJlWxpGoirvlbJDbBPa/ONZtzYrxuc4="; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "3.8.0"; hash = "sha256-fA9Qu+vTyMZ9REzxJ4aMg/SHCDRk4q9k4ZGUdynoHnA="; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.8.0"; hash = "sha256-866jMHp8kbc1FYpKuUWnd7ViU6kGJTAxPcL/IjXrT0I="; })
|
||||
(fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; hash = "sha256-a3dAiPaVuky0wpcHmpTVtAQJNGZ2v91/oArA+dpJgj8="; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "7.0.0"; hash = "sha256-N2DHyHiaNvYDQ77f8HI0gE0uIX2aj/rvejVGdCXRP4g="; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "7.0.0"; hash = "sha256-55lsa2QdX1CJn1TpW1vTnkvbGXKCeE9P0O6AkW49LaA="; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Http"; version = "7.0.0"; hash = "sha256-PHLmTf8/qmhLO/8IdotsRCoIA2cczhefgw7gOf8Iy6Q="; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "7.0.0"; hash = "sha256-rr/NXIZ/3FG5FYGrHD7iIIr12AksP4CnfUy1YvEdDa8="; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "7.0.0"; hash = "sha256-uoMkX/TnwP0YabThacTMmyxdc9itQp73CN7xEFFox74="; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "7.0.0"; hash = "sha256-pj9I/2HpCU7bLu002/Bb5NF+ofUrJ3IyH7yVqfP8IC0="; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "7.0.0"; hash = "sha256-AGnfNNDvZDGZ0Er9JQxeyLoUbVH+jfXF3anFr12qk6w="; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; hash = "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.1.2"; hash = "sha256-gYQQO7zsqG+OtN4ywYQyfsiggS2zmxw4+cPXlK+FB5Q="; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; hash = "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ="; })
|
||||
(fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "6.0.0"; hash = "sha256-N9EVZbl5w1VnMywGXyaVWzT9lh84iaJ3aD48hIBk1zA="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; hash = "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; hash = "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; hash = "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; hash = "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; hash = "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; hash = "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; hash = "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; hash = "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; hash = "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; hash = "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; hash = "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs="; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; hash = "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4="; })
|
||||
(fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps="; })
|
||||
(fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I="; })
|
||||
(fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA="; })
|
||||
(fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; hash = "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="; })
|
||||
(fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I="; })
|
||||
(fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM="; })
|
||||
(fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4="; })
|
||||
(fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0="; })
|
||||
(fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4="; })
|
||||
(fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g="; })
|
||||
(fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc="; })
|
||||
(fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw="; })
|
||||
(fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; hash = "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI="; })
|
||||
(fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; hash = "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs="; })
|
||||
(fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; hash = "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4="; })
|
||||
(fetchNuGet { pname = "SharpCompress"; version = "0.33.0"; hash = "sha256-6UWirVcwUai816UZ9J5P3dYMvJLl7K1Puvf5uaWDJMk="; })
|
||||
(fetchNuGet { pname = "SkiaSharp"; version = "2.88.6"; hash = "sha256-y0wzgwdQXtgl5boCz/EgLWbK3SwC0cFVRUbBxOUPQXc="; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.6"; hash = "sha256-VjgGoi73tVvqO/UXmQb1w9ioAbFu2dxH8oHz1l5H4zE="; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.6"; hash = "sha256-7hOMjlYTOiNPLNwfLFUjTcdgiGEtmYUI1EubiRiC6bo="; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.6"; hash = "sha256-CIb9fHVgHwIa0R1WafKJ3+GqtDHHRgDohA3ayTHvlws="; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.6"; hash = "sha256-ljD4QmAO2/vwA6I8GIUNkONpOzmGsOVJJy9vPDnjVfA="; })
|
||||
(fetchNuGet { pname = "System.Collections"; version = "4.3.0"; hash = "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc="; })
|
||||
(fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; hash = "sha256-GdwSIjLMM0uVfE56VUSLVNgpW0B//oCeSFj8/hSlbM8="; })
|
||||
(fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "4.5.0"; hash = "sha256-15yE2NoT9vmL9oGCaxHClQR1jLW1j1ef5hHMg55xRso="; })
|
||||
(fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; hash = "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM="; })
|
||||
(fetchNuGet { pname = "System.Drawing.Common"; version = "6.0.0"; hash = "sha256-/9EaAbEeOjELRSMZaImS1O8FmUe8j4WuFUw1VOrPyAo="; })
|
||||
(fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; hash = "sha256-k75gjOYimIQtLBD5NDzwwi3ZMUBPRW3jmc3evDMMJbU="; })
|
||||
(fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; hash = "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI="; })
|
||||
(fetchNuGet { pname = "System.IO"; version = "4.3.0"; hash = "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY="; })
|
||||
(fetchNuGet { pname = "System.IO.Pipelines"; version = "6.0.0"; hash = "sha256-xfjF4UqTMJpf8KsBWUyJlJkzPTOO/H5MW023yTYNQSA="; })
|
||||
(fetchNuGet { pname = "System.Linq"; version = "4.3.0"; hash = "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A="; })
|
||||
(fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; hash = "sha256-+3pvhZY7rip8HCbfdULzjlC9FPZFpYoQxhkcuFm2wk8="; })
|
||||
(fetchNuGet { pname = "System.Memory"; version = "4.5.4"; hash = "sha256-3sCEfzO4gj5CYGctl9ZXQRRhwAraMQfse7yzKoRe65E="; })
|
||||
(fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; hash = "sha256-qdSTIFgf2htPS+YhLGjAGiLN8igCYJnCCo6r78+Q+c8="; })
|
||||
(fetchNuGet { pname = "System.ObjectModel"; version = "4.3.0"; hash = "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q="; })
|
||||
(fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; hash = "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="; })
|
||||
(fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; hash = "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY="; })
|
||||
(fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; hash = "sha256-5LhkDmhy2FkSxulXR+bsTtMzdU3VyyuZzsxp7/DwyIU="; })
|
||||
(fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; hash = "sha256-mKRknEHNls4gkRwrEgi39B+vSaAz/Gt3IALtS98xNnA="; })
|
||||
(fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; hash = "sha256-rKx4a9yZKcajloSZHr4CKTVJ6Vjh95ni+zszPxWjh2I="; })
|
||||
(fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; hash = "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk="; })
|
||||
(fetchNuGet { pname = "System.Reflection.Metadata"; version = "5.0.0"; hash = "sha256-Wo+MiqhcP9dQ6NuFGrQTw6hpbJORFwp+TBNTq2yhGp8="; })
|
||||
(fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; hash = "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM="; })
|
||||
(fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; hash = "sha256-4U4/XNQAnddgQIHIJq3P2T80hN0oPdU2uCeghsDTWng="; })
|
||||
(fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; hash = "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo="; })
|
||||
(fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; hash = "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg="; })
|
||||
(fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.7.1"; hash = "sha256-UvyoDV8O0oY3HPG1GbA56YVdvwTGEfjYR5gW1O7IK4U="; })
|
||||
(fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; hash = "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I="; })
|
||||
(fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; hash = "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o="; })
|
||||
(fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; hash = "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms="; })
|
||||
(fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; hash = "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI="; })
|
||||
(fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; hash = "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg="; })
|
||||
(fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.5.1"; hash = "sha256-PIhkv59IXjyiuefdhKxS9hQfEwO9YWRuNudpo53HQfw="; })
|
||||
(fetchNuGet { pname = "System.Threading"; version = "4.3.0"; hash = "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc="; })
|
||||
(fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; hash = "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="; })
|
||||
(fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; hash = "sha256-owSpY8wHlsUXn5xrfYAiu847L6fAKethlvYx97Ri1ng="; })
|
||||
(fetchNuGet { pname = "Tmds.DBus.Protocol"; version = "0.15.0"; hash = "sha256-4gk2vXDjKFaBh82gTkwg3c/5GRjiH+bvM5elfDSbKTU="; })
|
||||
]
|
||||
|
@ -7,13 +7,13 @@
|
||||
|
||||
buildDotnetModule rec {
|
||||
pname = "knossosnet";
|
||||
version = "1.2.0";
|
||||
version = "1.2.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "KnossosNET";
|
||||
repo = "Knossos.NET";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4GVbwBykagSMGF3TxyZeoRb7Km+yLEMFOO8fCkH3U5A=";
|
||||
hash = "sha256-5FNb+L+ABkR/ubSZXuV4hlzy6pIWEXaTXl4piNsmkmw=";
|
||||
};
|
||||
|
||||
patches = [ ./targetframework.patch ];
|
||||
|
13
pkgs/by-name/la/lammps-mpi/package.nix
Normal file
13
pkgs/by-name/la/lammps-mpi/package.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
lammps,
|
||||
mpi,
|
||||
lowPrio,
|
||||
}:
|
||||
|
||||
lowPrio (
|
||||
lammps.override {
|
||||
extraBuildInputs = [
|
||||
mpi
|
||||
];
|
||||
}
|
||||
)
|
@ -76,7 +76,7 @@ rustPlatform.buildRustPackage {
|
||||
});
|
||||
|
||||
nativeBuildInputs = [
|
||||
cargo-tauri
|
||||
cargo-tauri.hook
|
||||
desktop-file-utils
|
||||
pnpm_8
|
||||
nodejs
|
||||
@ -100,14 +100,6 @@ rustPlatform.buildRustPackage {
|
||||
);
|
||||
|
||||
env = {
|
||||
tauriBundle =
|
||||
{
|
||||
Linux = "deb";
|
||||
Darwin = "app";
|
||||
}
|
||||
.${stdenv.hostPlatform.uname.system}
|
||||
or (builtins.throw "No tauri bundle available for ${stdenv.hostPlatform.uname.system}!");
|
||||
|
||||
ESBUILD_BINARY_PATH = lib.getExe (
|
||||
esbuild.override {
|
||||
buildGoModule = args: buildGoModule (args // rec {
|
||||
@ -137,26 +129,12 @@ rustPlatform.buildRustPackage {
|
||||
popd
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
cargo tauri build --bundles "$tauriBundle"
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
''
|
||||
runHook preInstall
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mkdir -p "$out"/bin
|
||||
cp -r target/release/bundle/macos "$out"/Applications
|
||||
postInstall =
|
||||
lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mv "$out"/Applications/Modrinth\ App.app/Contents/MacOS/Modrinth\ App "$out"/bin/modrinth-app
|
||||
ln -s "$out"/bin/modrinth-app "$out"/Applications/Modrinth\ App.app/Contents/MacOS/Modrinth\ App
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
cp -r target/release/bundle/"$tauriBundle"/*/data/usr "$out"
|
||||
desktop-file-edit \
|
||||
--set-comment "Modrinth's game launcher" \
|
||||
--set-key="StartupNotify" --set-value="true" \
|
||||
@ -164,9 +142,6 @@ rustPlatform.buildRustPackage {
|
||||
--set-key="Keywords" --set-value="game;minecraft;mc;" \
|
||||
--set-key="StartupWMClass" --set-value="ModrinthApp" \
|
||||
$out/share/applications/modrinth-app.desktop
|
||||
''
|
||||
+ ''
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
|
@ -40,7 +40,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
rustPlatform.cargoSetupHook
|
||||
cargo
|
||||
rustc
|
||||
cargo-tauri
|
||||
cargo-tauri.hook
|
||||
pkg-config
|
||||
wrapGAppsHook3
|
||||
];
|
||||
@ -62,6 +62,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
};
|
||||
|
||||
cargoRoot = "src-tauri";
|
||||
buildAndTestSubdir = finalAttrs.cargoRoot;
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit (finalAttrs) pname version src;
|
||||
@ -69,19 +70,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-H8TMpYFJWp227jPA5H2ZhSqTMiT/U6pT6eLyjibuoLU=";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
cargo-tauri build -b deb
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
postInstall = ''
|
||||
install -Dm644 ${./80-mouse-actions.rules} $out/etc/udev/rules.d/80-mouse-actions.rules
|
||||
cp -r src-tauri/target/release/bundle/deb/*/data/usr/* $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
@ -7,13 +7,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "mozcdic-ut-jawiki";
|
||||
version = "0-unstable-2024-09-21";
|
||||
version = "0-unstable-2024-09-27";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "utuhiro78";
|
||||
repo = "mozcdic-ut-jawiki";
|
||||
rev = "c7bec6a8df7a3f893646bb8c017033499a8350be";
|
||||
hash = "sha256-fjIOGT3SYKLtL31QfZVNT4vKMNuHy1YAKFVjf82BWMQ=";
|
||||
rev = "773cc08e71c4daa3c06fc577853f715a2bb4d9aa";
|
||||
hash = "sha256-TDZvB8/ZrUtkAbCr3vMfyFfhQ4v5SYWEqPNjuGB1Ve4=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
114
pkgs/by-name/ne/newsboat/package.nix
Normal file
114
pkgs/by-name/ne/newsboat/package.nix
Normal file
@ -0,0 +1,114 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
stfl,
|
||||
sqlite,
|
||||
curl,
|
||||
gettext,
|
||||
pkg-config,
|
||||
libxml2,
|
||||
json_c,
|
||||
ncurses,
|
||||
darwin,
|
||||
asciidoctor,
|
||||
libiconv,
|
||||
makeWrapper,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "newsboat";
|
||||
version = "2.37";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "newsboat";
|
||||
repo = "newsboat";
|
||||
rev = "r${version}";
|
||||
hash = "sha256-RNvzGGvicujqkRWVHBwnlROuhpH5XqPNWmx6q7n4g+U=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-EBA+ucegXr3YtU2K7bhwli8O+knnugMMUuSksDuaY9E=";
|
||||
|
||||
# TODO: Check if that's still needed
|
||||
postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
# Allow other ncurses versions on Darwin
|
||||
substituteInPlace config.sh \
|
||||
--replace "ncurses5.4" "ncurses"
|
||||
'';
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
pkg-config
|
||||
asciidoctor
|
||||
gettext
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
makeWrapper
|
||||
ncurses
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
[
|
||||
stfl
|
||||
sqlite
|
||||
curl
|
||||
libxml2
|
||||
json_c
|
||||
ncurses
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin (
|
||||
with darwin.apple_sdk.frameworks;
|
||||
[
|
||||
Security
|
||||
Foundation
|
||||
libiconv
|
||||
gettext
|
||||
]
|
||||
);
|
||||
|
||||
postBuild = ''
|
||||
make -j $NIX_BUILD_CORES prefix="$out"
|
||||
'';
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/pull/98471#issuecomment-703100014 . We set
|
||||
# these for all platforms, since upstream's gettext crate behavior might
|
||||
# change in the future.
|
||||
GETTEXT_LIB_DIR = "${lib.getLib gettext}/lib";
|
||||
GETTEXT_INCLUDE_DIR = "${lib.getDev gettext}/include";
|
||||
GETTEXT_BIN_DIR = "${lib.getBin gettext}/bin";
|
||||
|
||||
doCheck = true;
|
||||
|
||||
preCheck = ''
|
||||
make -j $NIX_BUILD_CORES test
|
||||
'';
|
||||
|
||||
postInstall =
|
||||
''
|
||||
make -j $NIX_BUILD_CORES prefix="$out" install
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
for prog in $out/bin/*; do
|
||||
wrapProgram "$prog" --prefix DYLD_LIBRARY_PATH : "${stfl}/lib"
|
||||
done
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://newsboat.org/";
|
||||
changelog = "https://github.com/newsboat/newsboat/blob/${src.rev}/CHANGELOG.md";
|
||||
description = "Fork of Newsbeuter, an RSS/Atom feed reader for the text console";
|
||||
maintainers = with lib.maintainers; [
|
||||
dotlambda
|
||||
nicknovitski
|
||||
];
|
||||
license = lib.licenses.mit;
|
||||
platforms = lib.platforms.unix;
|
||||
mainProgram = "newsboat";
|
||||
};
|
||||
}
|
@ -7,7 +7,7 @@
|
||||
|
||||
let
|
||||
bits = if stdenv.hostPlatform.is64bit then "x64" else "ia32";
|
||||
version = "0.91.0";
|
||||
version = "0.92.0";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "nwjs-ffmpeg-prebuilt";
|
||||
@ -16,8 +16,8 @@ stdenv.mkDerivation {
|
||||
src =
|
||||
let
|
||||
hashes = {
|
||||
"x64" = "sha256-C6ZOY+oFyWYqLvpYmM9KnQ3B7y0JAXp4SbeNBYvcUe0=";
|
||||
"ia32" = "sha256-C6ZOY+oFyWYqLvpYmM9KnQ3B7y0JAXp4SbeNBYvcUe0=";
|
||||
"x64" = "sha256-0Y0m9wGZGqH78LTPSWw+OCTvxd6kmIjuYzSaepwt9/I=";
|
||||
"ia32" = "sha256-0Y0m9wGZGqH78LTPSWw+OCTvxd6kmIjuYzSaepwt9/I=";
|
||||
};
|
||||
in
|
||||
fetchurl {
|
||||
|
@ -60,7 +60,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
rustPlatform.cargoSetupHook
|
||||
cargo
|
||||
rustc
|
||||
cargo-tauri
|
||||
cargo-tauri.hook
|
||||
nodejs
|
||||
pnpm.configHook
|
||||
wrapGAppsHook3
|
||||
@ -101,15 +101,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
chmod +w ..
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
# Use cargo-tauri from nixpkgs instead of pnpm tauri from npm
|
||||
cargo tauri build -b deb
|
||||
'';
|
||||
|
||||
preInstall = ''
|
||||
mv target/release/bundle/deb/*/data/usr/ $out
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Cross-platform translation software";
|
||||
mainProgram = "pot";
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "satellite";
|
||||
version = "0.4.3";
|
||||
version = "0.5.0";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
@ -19,7 +19,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
owner = "tpikonen";
|
||||
repo = "satellite";
|
||||
rev = version;
|
||||
hash = "sha256-4L6zbHjWAIJJv2N3XKcfHSZUAUC2FPjK5hT9XGBtQ3w=";
|
||||
hash = "sha256-61HCk0W07w0LybSVB4APvQX4PMSsqH9mKGzc+Rmno90=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
79
pkgs/by-name/sc/scopehal-apps/package.nix
Normal file
79
pkgs/by-name/sc/scopehal-apps/package.nix
Normal file
@ -0,0 +1,79 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
pkg-config,
|
||||
gtkmm3,
|
||||
cairomm,
|
||||
yaml-cpp,
|
||||
glfw,
|
||||
libtirpc,
|
||||
liblxi,
|
||||
libsigcxx,
|
||||
glew,
|
||||
zstd,
|
||||
wrapGAppsHook4,
|
||||
shaderc,
|
||||
vulkan-headers,
|
||||
vulkan-loader,
|
||||
vulkan-tools,
|
||||
glslang,
|
||||
spirv-tools,
|
||||
ffts,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "scopehal-apps";
|
||||
version = "0-unstable-2024-09-16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ngscopeclient";
|
||||
repo = "scopehal-apps";
|
||||
rev = "d2a1a2f17e9398a3f60c99483dd2f6dbc2e62efc";
|
||||
hash = "sha256-FQoaTuL6mEqnH8oNXwHpDcOEAPGExqj6lhrUhZ9VAQ4=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
shaderc
|
||||
spirv-tools
|
||||
wrapGAppsHook4
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
cairomm
|
||||
ffts
|
||||
glew
|
||||
glfw
|
||||
glslang
|
||||
gtkmm3
|
||||
liblxi
|
||||
libsigcxx
|
||||
libtirpc
|
||||
vulkan-headers
|
||||
vulkan-loader
|
||||
vulkan-tools
|
||||
yaml-cpp
|
||||
zstd
|
||||
];
|
||||
|
||||
# Targets InitializeSearchPaths
|
||||
postPatch = ''
|
||||
substituteInPlace lib/scopehal/scopehal.cpp \
|
||||
--replace-fail '"/share/' '"/../share/'
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Advanced test & measurement remote control and analysis suite";
|
||||
homepage = "https://www.ngscopeclient.org/";
|
||||
license = lib.licenses.bsd3;
|
||||
mainProgram = "ngscopeclient";
|
||||
maintainers = with lib.maintainers; [ bgamari ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
@ -1,4 +1,10 @@
|
||||
{ stdenv, lib, fetchFromGitHub, cmake, libevent }:
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
libevent,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libevhtp";
|
||||
@ -24,6 +30,10 @@ stdenv.mkDerivation rec {
|
||||
description = "Create extremely-fast and secure embedded HTTP servers with ease";
|
||||
homepage = "https://github.com/criticalstack/libevhtp";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ greizgh schmittlauch ];
|
||||
maintainers = with maintainers; [
|
||||
greizgh
|
||||
schmittlauch
|
||||
melvyn2
|
||||
];
|
||||
};
|
||||
}
|
@ -1,50 +1,61 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, python3
|
||||
, autoreconfHook
|
||||
, libuuid
|
||||
, sqlite
|
||||
, glib
|
||||
, libevent
|
||||
, libsearpc
|
||||
, openssl
|
||||
, fuse
|
||||
, libarchive
|
||||
, libjwt
|
||||
, curl
|
||||
, which
|
||||
, vala
|
||||
, cmake
|
||||
, oniguruma
|
||||
, nixosTests
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
pkg-config,
|
||||
python3,
|
||||
autoreconfHook,
|
||||
libuuid,
|
||||
libmysqlclient,
|
||||
sqlite,
|
||||
glib,
|
||||
libevent,
|
||||
libsearpc,
|
||||
openssl,
|
||||
fuse,
|
||||
libarchive,
|
||||
libjwt,
|
||||
curl,
|
||||
which,
|
||||
vala,
|
||||
cmake,
|
||||
oniguruma,
|
||||
nixosTests,
|
||||
}:
|
||||
|
||||
let
|
||||
# seafile-server relies on a specific version of libevhtp.
|
||||
# It contains non upstreamed patches and is forked off an outdated version.
|
||||
libevhtp = import ./libevhtp.nix {
|
||||
inherit stdenv lib fetchFromGitHub cmake libevent;
|
||||
inherit
|
||||
stdenv
|
||||
lib
|
||||
fetchFromGitHub
|
||||
cmake
|
||||
libevent
|
||||
;
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "seafile-server";
|
||||
version = "10.0.1";
|
||||
version = "11.0.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "haiwen";
|
||||
repo = "seafile-server";
|
||||
rev = "db09baec1b88fc131bf4453a808ab63a3fc714c9"; # using a fixed revision because upstream may re-tag releases :/
|
||||
sha256 = "sha256-a5vtJcbnaYzq6/3xmhbWk23BZ+Wil/Tb/q22ML4bDqs=";
|
||||
rev = "5e6c0974e6abe5d92b8ba1db41c6ddbc1029f2d5"; # using a fixed revision because upstream may re-tag releases :/
|
||||
hash = "sha256-BVa4QZiHPkqRB5FvDlCSbEVxdnyxVy2KuCDb2orRMuI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkg-config ];
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libuuid
|
||||
libmysqlclient
|
||||
sqlite
|
||||
openssl
|
||||
glib
|
||||
libsearpc
|
||||
libevent
|
||||
@ -52,7 +63,6 @@ stdenv.mkDerivation rec {
|
||||
fuse
|
||||
libarchive
|
||||
libjwt
|
||||
curl
|
||||
which
|
||||
vala
|
||||
libevhtp
|
||||
@ -73,6 +83,11 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://github.com/haiwen/seafile-server";
|
||||
license = licenses.agpl3Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ greizgh schmittlauch ];
|
||||
maintainers = with maintainers; [
|
||||
greizgh
|
||||
schmittlauch
|
||||
melvyn2
|
||||
];
|
||||
mainProgram = "seaf-server";
|
||||
};
|
||||
}
|
@ -1,47 +1,30 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, python3
|
||||
, makeWrapper
|
||||
, nixosTests
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
python3,
|
||||
makeWrapper,
|
||||
nixosTests,
|
||||
seafile-server,
|
||||
}:
|
||||
let
|
||||
python = python3.override {
|
||||
self = python;
|
||||
packageOverrides = self: super: {
|
||||
django = super.django_3;
|
||||
};
|
||||
};
|
||||
in
|
||||
python.pkgs.buildPythonApplication rec {
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "seahub";
|
||||
version = "10.0.1";
|
||||
version = "11.0.12";
|
||||
pyproject = false;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "haiwen";
|
||||
repo = "seahub";
|
||||
rev = "e8c02236c0eaca6dde009872745f089da4b77e6e"; # using a fixed revision because upstream may re-tag releases :/
|
||||
sha256 = "sha256-7JXWKEFqCsC+ZByhvyP8AmDpajT3hpgyYDNUqc3wXyg=";
|
||||
rev = "d998361dd890cac3f6d6ebec3af47a589e0332bc"; # using a fixed revision because upstream may re-tag releases :/
|
||||
hash = "sha256-n56sRZ9TVb37JA0+12ZoF2Mt7dADjaYk7V0PmdBY0EU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
# PIL update fix
|
||||
url = "https://patch-diff.githubusercontent.com/raw/haiwen/seahub/pull/5570.patch";
|
||||
sha256 = "sha256-7V2aRlacJ7Qhdi9k4Bs+t/Emx+EAM/NNCI+K40bMwLA=";
|
||||
})
|
||||
];
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
doCheck = false; # disabled because it requires a ccnet environment
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
propagatedBuildInputs = with python.pkgs; [
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
django
|
||||
future
|
||||
django-compressor
|
||||
@ -50,6 +33,7 @@ python.pkgs.buildPythonApplication rec {
|
||||
django-simple-captcha
|
||||
django-picklefield
|
||||
django-formtools
|
||||
djangosaml2
|
||||
mysqlclient
|
||||
pillow
|
||||
python-dateutil
|
||||
@ -60,14 +44,21 @@ python.pkgs.buildPythonApplication rec {
|
||||
chardet
|
||||
pyjwt
|
||||
pycryptodome
|
||||
pyopenssl
|
||||
python-ldap
|
||||
qrcode
|
||||
pysearpc
|
||||
seaserv
|
||||
gunicorn
|
||||
markdown
|
||||
bleach
|
||||
|
||||
(python3.pkgs.toPythonModule (seafile-server.override { inherit python3; }))
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace seahub/settings.py --replace-fail "SEAFILE_VERSION = '6.3.3'" "SEAFILE_VERSION = '${version}'"
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp -dr --no-preserve='ownership' . $out/
|
||||
wrapProgram $out/manage.py \
|
||||
@ -75,18 +66,23 @@ python.pkgs.buildPythonApplication rec {
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit python;
|
||||
pythonPath = python.pkgs.makePythonPath propagatedBuildInputs;
|
||||
inherit python3;
|
||||
pythonPath = python3.pkgs.makePythonPath propagatedBuildInputs;
|
||||
tests = {
|
||||
inherit (nixosTests) seafile;
|
||||
};
|
||||
inherit seafile-server;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Web end of seafile server";
|
||||
homepage = "https://github.com/haiwen/seahub";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ greizgh schmittlauch ];
|
||||
maintainers = with maintainers; [
|
||||
greizgh
|
||||
schmittlauch
|
||||
melvyn2
|
||||
];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -5,14 +5,14 @@
|
||||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "spl";
|
||||
version = "0.3.2";
|
||||
version = "0.4.0";
|
||||
src = fetchgit {
|
||||
url = "https://git.tudbut.de/tudbut/spl";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-thTKM07EtgAVvjpIx8pVssTmN0jPK/OrPYhRfwp7T+U=";
|
||||
hash = "sha256-/WjrQeE3zI71pvCil2yE9ZMaWkmyRG/tNmZ+XFF0nYw=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-7MYwWA3F7uJewmBRR0iQD4iXJZokHqIt9Q9dMoj6JVs=";
|
||||
cargoHash = "sha256-8xv7tXVklJDewnHqoRIMefsNWTD28+5WyV5ZI9imOh0=";
|
||||
|
||||
meta = {
|
||||
description = "Simple, concise, concatenative scripting language";
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
let
|
||||
pname = "spotube";
|
||||
version = "3.8.1";
|
||||
version = "3.8.2";
|
||||
|
||||
meta = {
|
||||
description = "Open source, cross-platform Spotify client compatible across multiple platforms";
|
||||
@ -56,7 +56,7 @@ let
|
||||
|
||||
src = fetchArtifact {
|
||||
filename = "Spotube-macos-universal.dmg";
|
||||
hash = "sha256-NbKFvg50n/GByVU6/vNLmTTV9bhIhl3AxlwAcG60KVY=";
|
||||
hash = "sha256-2nqWHQDxJ0PcwTiLAa8YZffqwsdnepMpXvpqRPX5JxM=";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
@ -80,7 +80,7 @@ let
|
||||
|
||||
src = fetchArtifact {
|
||||
filename = "Spotube-linux-x86_64.deb";
|
||||
hash = "sha256-R/yHXx29T/7NNc1L1AmevzXp1k98qnmvOEd3cfSlJuA=";
|
||||
hash = "sha256-kDPNWbspmORClVMH91Lt3dLVsRwGxiBtB49CHSHxQxI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -8,11 +8,11 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "stats";
|
||||
version = "2.11.7";
|
||||
version = "2.11.11";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/exelban/stats/releases/download/v${finalAttrs.version}/Stats.dmg";
|
||||
hash = "sha256-UppO7Cky+9xYg292t/78GPJ822kJ0RMG9yvetxRMVsU=";
|
||||
hash = "sha256-6USopfRy+ffxXYNAp14RcO/uKZa1yfnz2S3RP8HmCWw=";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
@ -1,7 +1,7 @@
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
|
||||
index 55f480a8..a69f9ed9 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
--- a/src-tauri/Cargo.lock
|
||||
+++ b/src-tauri/Cargo.lock
|
||||
@@ -1839,6 +1839,22 @@ dependencies = [
|
||||
"tower-service",
|
||||
]
|
||||
@ -133,10 +133,10 @@ index 55f480a8..a69f9ed9 100644
|
||||
[[package]]
|
||||
name = "tokio-rustls"
|
||||
version = "0.25.0"
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
|
||||
index 3e3ab7ee..b6612f95 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
--- a/src-tauri/Cargo.toml
|
||||
+++ b/src-tauri/Cargo.toml
|
||||
@@ -28,6 +28,8 @@ time = { version = "0.3", default-features = false}
|
||||
log = "^0.4"
|
||||
url = "2"
|
||||
|
@ -18,12 +18,10 @@
|
||||
, rustc
|
||||
, rustPlatform
|
||||
, stdenv
|
||||
, stdenvNoCC
|
||||
, webkitgtk_4_1
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
cargo-tauri_2 = let
|
||||
version = "2.0.0-rc.3";
|
||||
src = fetchFromGitHub {
|
||||
@ -68,8 +66,6 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-jOjOdrVOcGPenFW5mkkXKA64C6c+/f9KzlvtUmw6vXc=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/src-tauri";
|
||||
|
||||
# HACK: A dependency (surrealist -> tauri -> **reqwest**) contains hyper-tls
|
||||
# as an actually optional dependency. It ends up in the `Cargo.lock` file of
|
||||
# tauri, but not in the one of surrealist. We apply a patch to `Cargo.toml`
|
||||
@ -80,47 +76,25 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
./0001-Cargo.patch
|
||||
];
|
||||
|
||||
ui = stdenvNoCC.mkDerivation {
|
||||
inherit (finalAttrs) src version;
|
||||
pname = "${finalAttrs.pname}-ui";
|
||||
|
||||
pnpmDeps = pnpm.fetchDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-zGs1MWJ8TEFuHOoekCNIKQo2PBnp95xLz+R8mzeJXh8=";
|
||||
};
|
||||
|
||||
ESBUILD_BINARY_PATH = lib.getExe esbuild_21-5;
|
||||
|
||||
nativeBuildInputs = [ nodejs pnpm.configHook ];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
pnpm build:desktop
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
cp -r dist $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit (finalAttrs) patches src sourceRoot;
|
||||
inherit (finalAttrs) patches src;
|
||||
sourceRoot = finalAttrs.cargoRoot;
|
||||
name = "${finalAttrs.pname}-${finalAttrs.version}";
|
||||
hash = "sha256-LtQS0kH+2P4odV7BJYiH6T51+iZHAM9W9mV96rNfNWs=";
|
||||
};
|
||||
|
||||
pnpmDeps = pnpm.fetchDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-zGs1MWJ8TEFuHOoekCNIKQo2PBnp95xLz+R8mzeJXh8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cargo
|
||||
cargo-tauri_2
|
||||
(cargo-tauri.hook.override { cargo-tauri = cargo-tauri_2; })
|
||||
gobject-introspection
|
||||
makeBinaryWrapper
|
||||
nodejs
|
||||
pnpm.configHook
|
||||
pkg-config
|
||||
rustc
|
||||
rustPlatform.cargoSetupHook
|
||||
@ -136,23 +110,12 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
];
|
||||
|
||||
env = {
|
||||
ESBUILD_BINARY_PATH = lib.getExe esbuild_21-5;
|
||||
OPENSSL_NO_VENDOR = 1;
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace ./tauri.conf.json \
|
||||
--replace-fail '"frontendDist": "../dist",' '"frontendDist": "${finalAttrs.ui}",' \
|
||||
--replace-fail '"beforeBuildCommand": "pnpm build:desktop",' '"beforeBuildCommand": "",'
|
||||
'';
|
||||
|
||||
postBuild = ''
|
||||
cargo tauri build --bundles deb
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
install -Dm555 target/release/bundle/deb/Surrealist_${finalAttrs.version}_*/data/usr/bin/surrealist -t $out/bin
|
||||
cp -r target/release/bundle/deb/Surrealist_${finalAttrs.version}_*/data/usr/share $out
|
||||
'';
|
||||
cargoRoot = "src-tauri";
|
||||
buildAndTestSubdir = finalAttrs.cargoRoot;
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram "$out/bin/surrealist" \
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user