Merge master into haskell-updates
This commit is contained in:
@@ -90,6 +90,9 @@ insert_final_newline = unset
|
||||
indent_style = unset
|
||||
trim_trailing_whitespace = unset
|
||||
|
||||
[pkgs/misc/documentation-highlighter/**]
|
||||
insert_final_newline = unset
|
||||
|
||||
[pkgs/servers/dict/wordnet_structures.py]
|
||||
trim_trailing_whitespace = unset
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ on:
|
||||
# * is a special character in YAML so you have to quote this string
|
||||
# Merge every 24 hours
|
||||
- cron: '0 0 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
@@ -13,6 +13,7 @@ on:
|
||||
# * is a special character in YAML so you have to quote this string
|
||||
# Merge every 6 hours
|
||||
- cron: '0 */6 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
@@ -4,11 +4,12 @@ let
|
||||
inherit (builtins)
|
||||
intersectAttrs;
|
||||
inherit (lib)
|
||||
functionArgs isFunction mirrorFunctionArgs isAttrs setFunctionArgs levenshteinAtMost
|
||||
functionArgs isFunction mirrorFunctionArgs isAttrs setFunctionArgs
|
||||
optionalAttrs attrNames levenshtein filter elemAt concatStringsSep sort take length
|
||||
filterAttrs optionalString flip pathIsDirectory head pipe isDerivation listToAttrs
|
||||
mapAttrs seq flatten deepSeq warnIf isInOldestRelease extends
|
||||
;
|
||||
inherit (lib.strings) levenshteinAtMost;
|
||||
|
||||
in
|
||||
rec {
|
||||
@@ -198,7 +199,7 @@ rec {
|
||||
+ "${loc'}${prettySuggestions (getSuggestions arg)}";
|
||||
|
||||
# Only show the error for the first missing argument
|
||||
error = errorForArg missingArgs.${head (attrNames missingArgs)};
|
||||
error = errorForArg (head (attrNames missingArgs));
|
||||
|
||||
in if missingArgs == {}
|
||||
then makeOverridable f allArgs
|
||||
|
||||
@@ -1068,6 +1068,12 @@ in mkLicense lset) ({
|
||||
url = "https://github.com/thestk/stk/blob/master/LICENSE";
|
||||
};
|
||||
|
||||
sudo = {
|
||||
shortName = "sudo";
|
||||
fullName = "Sudo License (ISC-style)";
|
||||
url = "https://www.sudo.ws/about/license/";
|
||||
};
|
||||
|
||||
sustainableUse = {
|
||||
shortName = "sustainable";
|
||||
fullName = "Sustainable Use License";
|
||||
|
||||
@@ -787,6 +787,12 @@
|
||||
githubId = 2335822;
|
||||
name = "Alexandre Esteves";
|
||||
};
|
||||
alex-fu27 = {
|
||||
email = "alex.fu27@gmail.com";
|
||||
github = "alex-fu27";
|
||||
githubId = 49982580;
|
||||
name = "Alexander Fuchs";
|
||||
};
|
||||
alexnortung = {
|
||||
name = "alexnortung";
|
||||
email = "alex_nortung@live.dk";
|
||||
@@ -6555,6 +6561,12 @@
|
||||
githubId = 67984144;
|
||||
name = "Gerhard Schwanzer";
|
||||
};
|
||||
gernotfeichter = {
|
||||
email = "gernotfeichter@gmail.com";
|
||||
github = "gernotfeichter";
|
||||
githubId = 23199375;
|
||||
name = "Gernot Feichter";
|
||||
};
|
||||
gerschtli = {
|
||||
email = "tobias.happ@gmx.de";
|
||||
github = "Gerschtli";
|
||||
@@ -15230,6 +15242,12 @@
|
||||
githubId = 816465;
|
||||
name = "Redvers Davies";
|
||||
};
|
||||
redxtech = {
|
||||
email = "gabe@gabedunn.dev";
|
||||
github = "redxtech";
|
||||
githubId = 18155001;
|
||||
name = "Gabe Dunn";
|
||||
};
|
||||
reedrw = {
|
||||
email = "reedrw5601@gmail.com";
|
||||
github = "reedrw";
|
||||
@@ -15329,6 +15347,15 @@
|
||||
githubId = 44014925;
|
||||
name = "Rexx Larsson";
|
||||
};
|
||||
RGBCube = {
|
||||
name = "RGBCube";
|
||||
email = "rgbsphere+nixpkgs@gmail.com";
|
||||
github = "RGBCube";
|
||||
githubId = 78925721;
|
||||
keys = [{
|
||||
fingerprint = "jPaU3Vpm/GN0tUuDg72n2+bd9dDMWe4bnKM325eP7eI";
|
||||
}];
|
||||
};
|
||||
rgnns = {
|
||||
email = "jglievano@gmail.com";
|
||||
github = "rgnns";
|
||||
|
||||
@@ -73,6 +73,7 @@ luaposix,,,,34.1.1-1,,vyp lblasc
|
||||
luarepl,,,,,,
|
||||
luarocks-build-rust-mlua,,,,,,mrcjkb
|
||||
luasec,,,,,,flosse
|
||||
luasnip,,,,,,
|
||||
luasocket,,,,,,
|
||||
luasql-sqlite3,,,,,,vyp
|
||||
luassert,,,,,,
|
||||
|
||||
|
@@ -8,7 +8,7 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
- Create the first release note entry in this section!
|
||||
- `screen`'s module has been cleaned, and will now require you to set `programs.screen.enable` in order to populate `screenrc` and add the program to the environment.
|
||||
|
||||
## New Services {#sec-release-24.05-new-services}
|
||||
|
||||
@@ -18,6 +18,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- [Anki Sync Server](https://docs.ankiweb.net/sync-server.html), the official sync server built into recent versions of Anki. Available as [services.anki-sync-server](#opt-services.anki-sync-server.enable).
|
||||
|
||||
- [Clevis](https://github.com/latchset/clevis), a pluggable framework for automated decryption, used to unlock encrypted devices in initrd. Available as [boot.initrd.clevis.enable](#opt-boot.initrd.clevis.enable).
|
||||
|
||||
## Backward Incompatibilities {#sec-release-24.05-incompatibilities}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
@@ -38,4 +40,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
existing process, but will need to start that process from gdb (so it is a
|
||||
child). Or you can set `boot.kernel.sysctl."kernel.yama.ptrace_scope"` to 0.
|
||||
|
||||
- Gitea 1.21 upgrade has several breaking changes, including:
|
||||
- Custom themes and other assets that were previously stored in `custom/public/*` now belong in `custom/public/assets/*`
|
||||
- New instances of Gitea using MySQL now ignore the `[database].CHARSET` config option and always use the `utf8mb4` charset, existing instances should migrate via the `gitea doctor convert` CLI command.
|
||||
|
||||
- The `hardware.pulseaudio` module now sets permission of pulse user home directory to 755 when running in "systemWide" mode. It fixes [issue 114399](https://github.com/NixOS/nixpkgs/issues/114399).
|
||||
|
||||
@@ -6,6 +6,8 @@ let
|
||||
cfg = config.users.mysql;
|
||||
in
|
||||
{
|
||||
meta.maintainers = [ maintainers.netali ];
|
||||
|
||||
options = {
|
||||
users.mysql = {
|
||||
enable = mkEnableOption (lib.mdDoc "Authentication against a MySQL/MariaDB database");
|
||||
@@ -358,7 +360,7 @@ in
|
||||
user = "root";
|
||||
group = "root";
|
||||
mode = "0600";
|
||||
# password will be added from password file in activation script
|
||||
# password will be added from password file in systemd oneshot
|
||||
text = ''
|
||||
users.host=${cfg.host}
|
||||
users.db_user=${cfg.user}
|
||||
@@ -423,34 +425,45 @@ in
|
||||
mode = "0600";
|
||||
user = config.services.nscd.user;
|
||||
group = config.services.nscd.group;
|
||||
# password will be added from password file in activation script
|
||||
# password will be added from password file in systemd oneshot
|
||||
text = ''
|
||||
username ${cfg.user}
|
||||
'';
|
||||
};
|
||||
|
||||
# preStart script to append the password from the password file
|
||||
# to the configuration files. It also fixes the owner of the
|
||||
# libnss-mysql-root.cfg because it is changed to root after the
|
||||
# password is appended.
|
||||
systemd.services.mysql.preStart = ''
|
||||
if [[ -r ${cfg.passwordFile} ]]; then
|
||||
org_umask=$(umask)
|
||||
umask 0077
|
||||
systemd.services.mysql-auth-pw-init = {
|
||||
description = "Adds the mysql password to the mysql auth config files";
|
||||
|
||||
conf_nss="$(mktemp)"
|
||||
cp /etc/libnss-mysql-root.cfg $conf_nss
|
||||
printf 'password %s\n' "$(cat ${cfg.passwordFile})" >> $conf_nss
|
||||
mv -fT "$conf_nss" /etc/libnss-mysql-root.cfg
|
||||
chown ${config.services.nscd.user}:${config.services.nscd.group} /etc/libnss-mysql-root.cfg
|
||||
before = [ "nscd.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
conf_pam="$(mktemp)"
|
||||
cp /etc/security/pam_mysql.conf $conf_pam
|
||||
printf 'users.db_passwd=%s\n' "$(cat ${cfg.passwordFile})" >> $conf_pam
|
||||
mv -fT "$conf_pam" /etc/security/pam_mysql.conf
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = "root";
|
||||
Group = "root";
|
||||
};
|
||||
|
||||
umask $org_umask
|
||||
fi
|
||||
'';
|
||||
restartTriggers = [
|
||||
config.environment.etc."security/pam_mysql.conf".source
|
||||
config.environment.etc."libnss-mysql.cfg".source
|
||||
config.environment.etc."libnss-mysql-root.cfg".source
|
||||
];
|
||||
|
||||
script = ''
|
||||
if [[ -r ${cfg.passwordFile} ]]; then
|
||||
umask 0077
|
||||
conf_nss="$(mktemp)"
|
||||
cp /etc/libnss-mysql-root.cfg $conf_nss
|
||||
printf 'password %s\n' "$(cat ${cfg.passwordFile})" >> $conf_nss
|
||||
mv -fT "$conf_nss" /etc/libnss-mysql-root.cfg
|
||||
chown ${config.services.nscd.user}:${config.services.nscd.group} /etc/libnss-mysql-root.cfg
|
||||
|
||||
conf_pam="$(mktemp)"
|
||||
cp /etc/security/pam_mysql.conf $conf_pam
|
||||
printf 'users.db_passwd=%s\n' "$(cat ${cfg.passwordFile})" >> $conf_pam
|
||||
mv -fT "$conf_pam" /etc/security/pam_mysql.conf
|
||||
fi
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -442,6 +442,7 @@
|
||||
./services/databases/surrealdb.nix
|
||||
./services/databases/victoriametrics.nix
|
||||
./services/desktops/accountsservice.nix
|
||||
./services/desktops/ayatana-indicators.nix
|
||||
./services/desktops/bamf.nix
|
||||
./services/desktops/blueman.nix
|
||||
./services/desktops/cpupower-gui.nix
|
||||
@@ -1423,6 +1424,7 @@
|
||||
./system/activation/bootspec.nix
|
||||
./system/activation/top-level.nix
|
||||
./system/boot/binfmt.nix
|
||||
./system/boot/clevis.nix
|
||||
./system/boot/emergency-mode.nix
|
||||
./system/boot/grow-partition.nix
|
||||
./system/boot/initrd-network.nix
|
||||
|
||||
@@ -1,33 +1,41 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkOption mkIf types;
|
||||
cfg = config.programs.screen;
|
||||
in
|
||||
|
||||
{
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
programs.screen = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "screen, a basic terminal multiplexer");
|
||||
|
||||
screenrc = mkOption {
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
The contents of /etc/screenrc file.
|
||||
package = lib.mkPackageOptionMD pkgs "screen" { };
|
||||
|
||||
screenrc = lib.mkOption {
|
||||
type = with lib.types; nullOr lines;
|
||||
example = ''
|
||||
defscrollback 10000
|
||||
startup_message off
|
||||
'';
|
||||
type = types.lines;
|
||||
description = lib.mdDoc "The contents of {file}`/etc/screenrc` file";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf (cfg.screenrc != "") {
|
||||
environment.etc.screenrc.text = cfg.screenrc;
|
||||
|
||||
environment.systemPackages = [ pkgs.screen ];
|
||||
config = {
|
||||
# TODO: Added in 24.05, remove before 24.11
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.screenrc != null -> cfg.enable;
|
||||
message = "`programs.screen.screenrc` has been configured, but `programs.screen.enable` is not true";
|
||||
}
|
||||
];
|
||||
} // lib.mkIf cfg.enable {
|
||||
environment.etc.screenrc = {
|
||||
enable = cfg.screenrc != null;
|
||||
text = cfg.screenrc;
|
||||
};
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
security.pam.services.screen = {};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
{ config
|
||||
, pkgs
|
||||
, lib
|
||||
, ...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.ayatana-indicators;
|
||||
in
|
||||
{
|
||||
options.services.ayatana-indicators = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc ''
|
||||
Ayatana Indicators, a continuation of Canonical's Application Indicators
|
||||
'');
|
||||
|
||||
packages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [ ];
|
||||
example = lib.literalExpression "with pkgs; [ ayatana-indicator-messages ]";
|
||||
description = lib.mdDoc ''
|
||||
List of packages containing Ayatana Indicator services
|
||||
that should be brought up by the SystemD "ayatana-indicators" user target.
|
||||
|
||||
Packages specified here must have passthru.ayatana-indicators set correctly.
|
||||
|
||||
If, how, and where these indicators are displayed will depend on your DE.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment = {
|
||||
systemPackages = cfg.packages;
|
||||
|
||||
pathsToLink = [
|
||||
"/share/ayatana"
|
||||
];
|
||||
};
|
||||
|
||||
# libayatana-common's ayatana-indicators.target with explicit Wants & Before to bring up requested indicator services
|
||||
systemd.user.targets."ayatana-indicators" =
|
||||
let
|
||||
indicatorServices = lib.lists.flatten
|
||||
(map
|
||||
(pkg:
|
||||
(map (ind: "${ind}.service") pkg.passthru.ayatana-indicators))
|
||||
cfg.packages);
|
||||
in
|
||||
{
|
||||
description = "Target representing the lifecycle of the Ayatana Indicators. Each indicator should be bound to it in its individual service file";
|
||||
partOf = [ "graphical-session.target" ];
|
||||
wants = indicatorServices;
|
||||
before = indicatorServices;
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
}
|
||||
@@ -455,10 +455,10 @@ in {
|
||||
ln -s /etc/home-assistant/configuration.yaml "${cfg.configDir}/configuration.yaml"
|
||||
'';
|
||||
copyLovelaceConfig = if cfg.lovelaceConfigWritable then ''
|
||||
rm -f "${cfg.configDir}/ui-lovelace.yaml"
|
||||
cp --no-preserve=mode ${lovelaceConfigFile} "${cfg.configDir}/ui-lovelace.yaml"
|
||||
'' else ''
|
||||
rm -f "${cfg.configDir}/ui-lovelace.yaml"
|
||||
ln -s /etc/home-assistant/ui-lovelace.yaml "${cfg.configDir}/ui-lovelace.yaml"
|
||||
ln -fs /etc/home-assistant/ui-lovelace.yaml "${cfg.configDir}/ui-lovelace.yaml"
|
||||
'';
|
||||
copyCustomLovelaceModules = if cfg.customLovelaceModules != [] then ''
|
||||
mkdir -p "${cfg.configDir}/www"
|
||||
|
||||
@@ -214,7 +214,7 @@ in {
|
||||
RestrictRealtime = true;
|
||||
PrivateMounts = true;
|
||||
SystemCallFilter = [
|
||||
"@system-service @pkey"
|
||||
"@system-service @pkey @chown"
|
||||
"~@privileged @resources"
|
||||
];
|
||||
SystemCallArchitectures = "native";
|
||||
|
||||
@@ -19,7 +19,7 @@ in {
|
||||
|
||||
serviceConfig = {
|
||||
EnvironmentFile = "${cfg.package}/etc/conf.d/preload";
|
||||
ExecStart = "${getExe cfg.package} --foreground $PRELOAD_OPTS";
|
||||
ExecStart = "${getExe cfg.package} -l '' --foreground $PRELOAD_OPTS";
|
||||
Type = "simple";
|
||||
# Only preload data during CPU idle time
|
||||
IOSchedulingClass = 3;
|
||||
|
||||
@@ -317,7 +317,7 @@ in {
|
||||
|
||||
serviceConfig = defaultServiceConfig // {
|
||||
ExecStart = ''
|
||||
${pkgs.python3Packages.gunicorn}/bin/gunicorn netbox.wsgi \
|
||||
${pkg.gunicorn}/bin/gunicorn netbox.wsgi \
|
||||
--bind ${cfg.listenAddress}:${toString cfg.port} \
|
||||
--pythonpath ${pkg}/opt/netbox/netbox
|
||||
'';
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
# Clevis {#module-boot-clevis}
|
||||
|
||||
[Clevis](https://github.com/latchset/clevis)
|
||||
is a framework for automated decryption of resources.
|
||||
Clevis allows for secure unattended disk decryption during boot, using decryption policies that must be satisfied for the data to decrypt.
|
||||
|
||||
|
||||
## Create a JWE file containing your secret {#module-boot-clevis-create-secret}
|
||||
|
||||
The first step is to embed your secret in a [JWE](https://en.wikipedia.org/wiki/JSON_Web_Encryption) file.
|
||||
JWE files have to be created through the clevis command line. 3 types of policies are supported:
|
||||
|
||||
1) TPM policies
|
||||
|
||||
Secrets are pinned against the presence of a TPM2 device, for example:
|
||||
```
|
||||
echo hi | clevis encrypt tpm2 '{}' > hi.jwe
|
||||
```
|
||||
2) Tang policies
|
||||
|
||||
Secrets are pinned against the presence of a Tang server, for example:
|
||||
```
|
||||
echo hi | clevis encrypt tang '{"url": "http://tang.local"}' > hi.jwe
|
||||
```
|
||||
|
||||
3) Shamir Secret Sharing
|
||||
|
||||
Using Shamir's Secret Sharing ([sss](https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing)), secrets are pinned using a combination of the two preceding policies. For example:
|
||||
```
|
||||
echo hi | clevis encrypt sss \
|
||||
'{"t": 2, "pins": {"tpm2": {"pcr_ids": "0"}, "tang": {"url": "http://tang.local"}}}' \
|
||||
> hi.jwe
|
||||
```
|
||||
|
||||
For more complete documentation on how to generate a secret with clevis, see the [clevis documentation](https://github.com/latchset/clevis).
|
||||
|
||||
|
||||
## Activate unattended decryption of a resource at boot {#module-boot-clevis-activate}
|
||||
|
||||
In order to activate unattended decryption of a resource at boot, enable the `clevis` module:
|
||||
|
||||
```
|
||||
boot.initrd.clevis.enable = true;
|
||||
```
|
||||
|
||||
Then, specify the device you want to decrypt using a given clevis secret. Clevis will automatically try to decrypt the device at boot and will fallback to interactive unlocking if the decryption policy is not fulfilled.
|
||||
```
|
||||
boot.initrd.clevis.devices."/dev/nvme0n1p1".secretFile = ./nvme0n1p1.jwe;
|
||||
```
|
||||
|
||||
Only `bcachefs`, `zfs` and `luks` encrypted devices are supported at this time.
|
||||
@@ -0,0 +1,107 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.boot.initrd.clevis;
|
||||
systemd = config.boot.initrd.systemd;
|
||||
supportedFs = [ "zfs" "bcachefs" ];
|
||||
in
|
||||
{
|
||||
meta.maintainers = with maintainers; [ julienmalka camillemndn ];
|
||||
meta.doc = ./clevis.md;
|
||||
|
||||
options = {
|
||||
boot.initrd.clevis.enable = mkEnableOption (lib.mdDoc "Clevis in initrd");
|
||||
|
||||
|
||||
boot.initrd.clevis.package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.clevis;
|
||||
defaultText = "pkgs.clevis";
|
||||
description = lib.mdDoc "Clevis package";
|
||||
};
|
||||
|
||||
boot.initrd.clevis.devices = mkOption {
|
||||
description = "Encrypted devices that need to be unlocked at boot using Clevis";
|
||||
default = { };
|
||||
type = types.attrsOf (types.submodule ({
|
||||
options.secretFile = mkOption {
|
||||
description = lib.mdDoc "Clevis JWE file used to decrypt the device at boot, in concert with the chosen pin (one of TPM2, Tang server, or SSS).";
|
||||
type = types.path;
|
||||
};
|
||||
}));
|
||||
};
|
||||
|
||||
boot.initrd.clevis.useTang = mkOption {
|
||||
description = "Whether the Clevis JWE file used to decrypt the devices uses a Tang server as a pin.";
|
||||
default = false;
|
||||
type = types.bool;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
# Implementation of clevis unlocking for the supported filesystems are located directly in the respective modules.
|
||||
|
||||
|
||||
assertions = (attrValues (mapAttrs
|
||||
(device: _: {
|
||||
assertion = (any (fs: fs.device == device && (elem fs.fsType supportedFs)) config.system.build.fileSystems) || (hasAttr device config.boot.initrd.luks.devices);
|
||||
message = ''
|
||||
No filesystem or LUKS device with the name ${device} is declared in your configuration.'';
|
||||
})
|
||||
cfg.devices));
|
||||
|
||||
|
||||
warnings =
|
||||
if cfg.useTang && !config.boot.initrd.network.enable && !config.boot.initrd.systemd.network.enable
|
||||
then [ "In order to use a Tang pinned secret you must configure networking in initrd" ]
|
||||
else [ ];
|
||||
|
||||
boot.initrd = {
|
||||
extraUtilsCommands = mkIf (!systemd.enable) ''
|
||||
copy_bin_and_libs ${pkgs.jose}/bin/jose
|
||||
copy_bin_and_libs ${pkgs.curl}/bin/curl
|
||||
copy_bin_and_libs ${pkgs.bash}/bin/bash
|
||||
|
||||
copy_bin_and_libs ${pkgs.tpm2-tools}/bin/.tpm2-wrapped
|
||||
mv $out/bin/{.tpm2-wrapped,tpm2}
|
||||
cp {${pkgs.tpm2-tss},$out}/lib/libtss2-tcti-device.so.0
|
||||
|
||||
copy_bin_and_libs ${cfg.package}/bin/.clevis-wrapped
|
||||
mv $out/bin/{.clevis-wrapped,clevis}
|
||||
|
||||
for BIN in ${cfg.package}/bin/clevis-decrypt*; do
|
||||
copy_bin_and_libs $BIN
|
||||
done
|
||||
|
||||
for BIN in $out/bin/clevis{,-decrypt{,-null,-tang,-tpm2}}; do
|
||||
sed -i $BIN -e 's,${pkgs.bash},,' -e 's,${pkgs.coreutils},,'
|
||||
done
|
||||
|
||||
sed -i $out/bin/clevis-decrypt-tpm2 -e 's,tpm2_,tpm2 ,'
|
||||
'';
|
||||
|
||||
secrets = lib.mapAttrs' (name: value: nameValuePair "/etc/clevis/${name}.jwe" value.secretFile) cfg.devices;
|
||||
|
||||
systemd = {
|
||||
extraBin = mkIf systemd.enable {
|
||||
clevis = "${cfg.package}/bin/clevis";
|
||||
curl = "${pkgs.curl}/bin/curl";
|
||||
};
|
||||
|
||||
storePaths = mkIf systemd.enable [
|
||||
cfg.package
|
||||
"${pkgs.jose}/bin/jose"
|
||||
"${pkgs.curl}/bin/curl"
|
||||
"${pkgs.tpm2-tools}/bin/tpm2_createprimary"
|
||||
"${pkgs.tpm2-tools}/bin/tpm2_flushcontext"
|
||||
"${pkgs.tpm2-tools}/bin/tpm2_load"
|
||||
"${pkgs.tpm2-tools}/bin/tpm2_unseal"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
{ config, options, lib, pkgs, ... }:
|
||||
{ config, options, lib, utils, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
luks = config.boot.initrd.luks;
|
||||
clevis = config.boot.initrd.clevis;
|
||||
systemd = config.boot.initrd.systemd;
|
||||
kernelPackages = config.boot.kernelPackages;
|
||||
defaultPrio = (mkOptionDefault {}).priority;
|
||||
|
||||
@@ -594,7 +596,7 @@ in
|
||||
'';
|
||||
|
||||
type = with types; attrsOf (submodule (
|
||||
{ name, ... }: { options = {
|
||||
{ config, name, ... }: { options = {
|
||||
|
||||
name = mkOption {
|
||||
visible = false;
|
||||
@@ -894,6 +896,19 @@ in
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf (clevis.enable && (hasAttr name clevis.devices)) {
|
||||
preOpenCommands = mkIf (!systemd.enable) ''
|
||||
mkdir -p /clevis-${name}
|
||||
mount -t ramfs none /clevis-${name}
|
||||
clevis decrypt < /etc/clevis/${name}.jwe > /clevis-${name}/decrypted
|
||||
'';
|
||||
keyFile = "/clevis-${name}/decrypted";
|
||||
fallbackToPassword = !systemd.enable;
|
||||
postOpenCommands = mkIf (!systemd.enable) ''
|
||||
umount /clevis-${name}
|
||||
'';
|
||||
};
|
||||
}));
|
||||
};
|
||||
|
||||
@@ -1081,6 +1096,35 @@ in
|
||||
boot.initrd.preLVMCommands = mkIf (!config.boot.initrd.systemd.enable) (commonFunctions + preCommands + concatStrings (mapAttrsToList openCommand preLVM) + postCommands);
|
||||
boot.initrd.postDeviceCommands = mkIf (!config.boot.initrd.systemd.enable) (commonFunctions + preCommands + concatStrings (mapAttrsToList openCommand postLVM) + postCommands);
|
||||
|
||||
boot.initrd.systemd.services = let devicesWithClevis = filterAttrs (device: _: (hasAttr device clevis.devices)) luks.devices; in
|
||||
mkIf (clevis.enable && systemd.enable) (
|
||||
(mapAttrs'
|
||||
(name: _: nameValuePair "cryptsetup-clevis-${name}" {
|
||||
wantedBy = [ "systemd-cryptsetup@${utils.escapeSystemdPath name}.service" ];
|
||||
before = [
|
||||
"systemd-cryptsetup@${utils.escapeSystemdPath name}.service"
|
||||
"initrd-switch-root.target"
|
||||
"shutdown.target"
|
||||
];
|
||||
wants = [ "systemd-udev-settle.service" ] ++ optional clevis.useTang "network-online.target";
|
||||
after = [ "systemd-modules-load.service" "systemd-udev-settle.service" ] ++ optional clevis.useTang "network-online.target";
|
||||
script = ''
|
||||
mkdir -p /clevis-${name}
|
||||
mount -t ramfs none /clevis-${name}
|
||||
umask 277
|
||||
clevis decrypt < /etc/clevis/${name}.jwe > /clevis-${name}/decrypted
|
||||
'';
|
||||
conflicts = [ "initrd-switch-root.target" "shutdown.target" ];
|
||||
unitConfig.DefaultDependencies = "no";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
ExecStop = "${config.boot.initrd.systemd.package.util-linux}/bin/umount /clevis-${name}";
|
||||
};
|
||||
})
|
||||
devicesWithClevis)
|
||||
);
|
||||
|
||||
environment.systemPackages = [ pkgs.cryptsetup ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -57,7 +57,15 @@ let
|
||||
# bcachefs does not support mounting devices with colons in the path, ergo we don't (see #49671)
|
||||
firstDevice = fs: lib.head (lib.splitString ":" fs.device);
|
||||
|
||||
openCommand = name: fs: ''
|
||||
openCommand = name: fs: if config.boot.initrd.clevis.enable && (lib.hasAttr (firstDevice fs) config.boot.initrd.clevis.devices) then ''
|
||||
if clevis decrypt < /etc/clevis/${firstDevice fs}.jwe | bcachefs unlock ${firstDevice fs}
|
||||
then
|
||||
printf "unlocked ${name} using clevis\n"
|
||||
else
|
||||
printf "falling back to interactive unlocking...\n"
|
||||
tryUnlock ${name} ${firstDevice fs}
|
||||
fi
|
||||
'' else ''
|
||||
tryUnlock ${name} ${firstDevice fs}
|
||||
'';
|
||||
|
||||
|
||||
@@ -17,6 +17,9 @@ let
|
||||
cfgZED = config.services.zfs.zed;
|
||||
|
||||
selectModulePackage = package: config.boot.kernelPackages.${package.kernelModuleAttribute};
|
||||
clevisDatasets = map (e: e.device) (filter (e: (hasAttr e.device config.boot.initrd.clevis.devices) && e.fsType == "zfs" && (fsNeededForBoot e)) config.system.build.fileSystems);
|
||||
|
||||
|
||||
inInitrd = any (fs: fs == "zfs") config.boot.initrd.supportedFilesystems;
|
||||
inSystem = any (fs: fs == "zfs") config.boot.supportedFilesystems;
|
||||
|
||||
@@ -120,12 +123,12 @@ let
|
||||
# but don't *require* it, because mounts shouldn't be killed if it's stopped.
|
||||
# In the future, hopefully someone will complete this:
|
||||
# https://github.com/zfsonlinux/zfs/pull/4943
|
||||
wants = [ "systemd-udev-settle.service" ];
|
||||
wants = [ "systemd-udev-settle.service" ] ++ optional (config.boot.initrd.clevis.useTang) "network-online.target";
|
||||
after = [
|
||||
"systemd-udev-settle.service"
|
||||
"systemd-modules-load.service"
|
||||
"systemd-ask-password-console.service"
|
||||
];
|
||||
] ++ optional (config.boot.initrd.clevis.useTang) "network-online.target";
|
||||
requiredBy = getPoolMounts prefix pool ++ [ "zfs-import.target" ];
|
||||
before = getPoolMounts prefix pool ++ [ "zfs-import.target" ];
|
||||
unitConfig = {
|
||||
@@ -154,6 +157,9 @@ let
|
||||
poolImported "${pool}" || poolImport "${pool}" # Try one last time, e.g. to import a degraded pool.
|
||||
fi
|
||||
if poolImported "${pool}"; then
|
||||
${concatMapStringsSep "\n" (elem: "clevis decrypt < /etc/clevis/${elem}.jwe | zfs load-key ${elem} || true ") (filter (p: (elemAt (splitString "/" p) 0) == pool) clevisDatasets)}
|
||||
|
||||
|
||||
${optionalString keyLocations.hasKeys ''
|
||||
${keyLocations.command} | while IFS=$'\t' read ds kl ks; do
|
||||
{
|
||||
@@ -623,6 +629,9 @@ in
|
||||
fi
|
||||
poolImported "${pool}" || poolImport "${pool}" # Try one last time, e.g. to import a degraded pool.
|
||||
fi
|
||||
|
||||
${concatMapStringsSep "\n" (elem: "clevis decrypt < /etc/clevis/${elem}.jwe | zfs load-key ${elem}") (filter (p: (elemAt (splitString "/" p) 0) == pool) clevisDatasets)}
|
||||
|
||||
${if isBool cfgZfs.requestEncryptionCredentials
|
||||
then optionalString cfgZfs.requestEncryptionCredentials ''
|
||||
zfs load-key -a
|
||||
|
||||
@@ -10,7 +10,11 @@ import ./make-test-python.nix ({ pkgs, ... }: rec {
|
||||
let
|
||||
o = builtins.tryEval drv;
|
||||
in
|
||||
o.success && lib.isDerivation o.value && o.value ? outputs && builtins.elem "terminfo" o.value.outputs;
|
||||
o.success &&
|
||||
lib.isDerivation o.value &&
|
||||
o.value ? outputs &&
|
||||
builtins.elem "terminfo" o.value.outputs &&
|
||||
!o.value.meta.broken;
|
||||
terminfos = lib.filterAttrs infoFilter pkgs;
|
||||
excludedTerminfos = lib.filterAttrs (_: drv: !(builtins.elem drv.terminfo config.environment.systemPackages)) terminfos;
|
||||
includedOuts = lib.filterAttrs (_: drv: builtins.elem drv.out config.environment.systemPackages) terminfos;
|
||||
|
||||
@@ -135,6 +135,7 @@ in {
|
||||
authelia = handleTest ./authelia.nix {};
|
||||
avahi = handleTest ./avahi.nix {};
|
||||
avahi-with-resolved = handleTest ./avahi.nix { networkd = true; };
|
||||
ayatana-indicators = handleTest ./ayatana-indicators.nix {};
|
||||
babeld = handleTest ./babeld.nix {};
|
||||
bazarr = handleTest ./bazarr.nix {};
|
||||
bcachefs = handleTestOn ["x86_64-linux" "aarch64-linux"] ./bcachefs.nix {};
|
||||
|
||||
@@ -84,7 +84,7 @@ in
|
||||
getpwuid = ''
|
||||
SELECT name, 'x', uid, gid, name, CONCAT('/home/', name), "/run/current-system/sw/bin/bash" \
|
||||
FROM users \
|
||||
WHERE id=%1$u \
|
||||
WHERE uid=%1$u \
|
||||
LIMIT 1
|
||||
'';
|
||||
getspnam = ''
|
||||
@@ -140,6 +140,7 @@ in
|
||||
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.wait_for_unit("mysql.service")
|
||||
machine.wait_until_succeeds("cat /etc/security/pam_mysql.conf | grep users.db_passwd")
|
||||
machine.wait_until_succeeds("pgrep -f 'agetty.*tty1'")
|
||||
|
||||
with subtest("Local login"):
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }: let
|
||||
user = "alice";
|
||||
in {
|
||||
name = "ayatana-indicators";
|
||||
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
};
|
||||
|
||||
nodes.machine = { config, ... }: {
|
||||
imports = [
|
||||
./common/auto.nix
|
||||
./common/user-account.nix
|
||||
];
|
||||
|
||||
test-support.displayManager.auto = {
|
||||
enable = true;
|
||||
inherit user;
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager.mate.enable = true;
|
||||
displayManager.defaultSession = lib.mkForce "mate";
|
||||
};
|
||||
|
||||
services.ayatana-indicators = {
|
||||
enable = true;
|
||||
packages = with pkgs; [
|
||||
ayatana-indicator-messages
|
||||
];
|
||||
};
|
||||
|
||||
# Services needed by some indicators
|
||||
services.accounts-daemon.enable = true; # messages
|
||||
};
|
||||
|
||||
# TODO session indicator starts up in a semi-broken state, but works fine after a restart. maybe being started before graphical session is truly up & ready?
|
||||
testScript = { nodes, ... }: let
|
||||
runCommandPerIndicatorService = command: lib.strings.concatMapStringsSep "\n" command nodes.machine.systemd.user.targets."ayatana-indicators".wants;
|
||||
in ''
|
||||
start_all()
|
||||
machine.wait_for_x()
|
||||
|
||||
# Desktop environment should reach graphical-session.target
|
||||
machine.wait_for_unit("graphical-session.target", "${user}")
|
||||
|
||||
# MATE relies on XDG autostart to bring up the indicators.
|
||||
# Not sure *when* XDG autostart fires them up, and awaiting pgrep success seems to misbehave?
|
||||
machine.sleep(10)
|
||||
|
||||
# Now check if all indicators were brought up successfully, and kill them for later
|
||||
'' + (runCommandPerIndicatorService (service: let serviceExec = builtins.replaceStrings [ "." ] [ "-" ] service; in ''
|
||||
machine.succeed("pgrep -f ${serviceExec}")
|
||||
machine.succeed("pkill -f ${serviceExec}")
|
||||
'')) + ''
|
||||
|
||||
# Ayatana target is the preferred way of starting up indicators on SystemD session, the graphical session is responsible for starting this if it supports them.
|
||||
# Mate currently doesn't do this, so start it manually for checking (https://github.com/mate-desktop/mate-indicator-applet/issues/63)
|
||||
machine.systemctl("start ayatana-indicators.target", "${user}")
|
||||
machine.wait_for_unit("ayatana-indicators.target", "${user}")
|
||||
|
||||
# Let all indicator services do their startups, potential post-launch crash & restart cycles so we can properly check for failures
|
||||
# Not sure if there's a better way of awaiting this without false-positive potential
|
||||
machine.sleep(10)
|
||||
|
||||
# Now check if all indicator services were brought up successfully
|
||||
'' + runCommandPerIndicatorService (service: ''
|
||||
machine.wait_for_unit("${service}", "${user}")
|
||||
'');
|
||||
})
|
||||
@@ -32,6 +32,10 @@
|
||||
stratisRoot
|
||||
swraid
|
||||
zfsroot
|
||||
clevisLuks
|
||||
clevisLuksFallback
|
||||
clevisZfs
|
||||
clevisZfsFallback
|
||||
;
|
||||
|
||||
}
|
||||
|
||||
+233
-15
@@ -12,6 +12,7 @@ let
|
||||
# The configuration to install.
|
||||
makeConfig = { bootLoader, grubDevice, grubIdentifier, grubUseEfi
|
||||
, extraConfig, forceGrubReinstallCount ? 0, flake ? false
|
||||
, clevisTest
|
||||
}:
|
||||
pkgs.writeText "configuration.nix" ''
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
@@ -52,6 +53,15 @@ let
|
||||
|
||||
boot.initrd.secrets."/etc/secret" = ./secret;
|
||||
|
||||
${optionalString clevisTest ''
|
||||
boot.kernelParams = [ "console=tty0" "ip=192.168.1.1:::255.255.255.0::eth1:none" ];
|
||||
boot.initrd = {
|
||||
availableKernelModules = [ "tpm_tis" ];
|
||||
clevis = { enable = true; useTang = true; };
|
||||
network.enable = true;
|
||||
};
|
||||
''}
|
||||
|
||||
users.users.alice = {
|
||||
isNormalUser = true;
|
||||
home = "/home/alice";
|
||||
@@ -71,7 +81,7 @@ let
|
||||
# partitions and filesystems.
|
||||
testScriptFun = { bootLoader, createPartitions, grubDevice, grubUseEfi, grubIdentifier
|
||||
, postInstallCommands, preBootCommands, postBootCommands, extraConfig
|
||||
, testSpecialisationConfig, testFlakeSwitch
|
||||
, testSpecialisationConfig, testFlakeSwitch, clevisTest, clevisFallbackTest
|
||||
}:
|
||||
let iface = "virtio";
|
||||
isEfi = bootLoader == "systemd-boot" || (bootLoader == "grub" && grubUseEfi);
|
||||
@@ -79,12 +89,16 @@ let
|
||||
in if !isEfi && !pkgs.stdenv.hostPlatform.isx86 then ''
|
||||
machine.succeed("true")
|
||||
'' else ''
|
||||
import subprocess
|
||||
tpm_folder = os.environ['NIX_BUILD_TOP']
|
||||
def assemble_qemu_flags():
|
||||
flags = "-cpu max"
|
||||
${if (system == "x86_64-linux" || system == "i686-linux")
|
||||
then ''flags += " -m 1024"''
|
||||
else ''flags += " -m 768 -enable-kvm -machine virt,gic-version=host"''
|
||||
}
|
||||
${optionalString clevisTest ''flags += f" -chardev socket,id=chrtpm,path={tpm_folder}/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0"''}
|
||||
${optionalString clevisTest ''flags += " -device virtio-net-pci,netdev=vlan1,mac=52:54:00:12:11:02 -netdev vde,id=vlan1,sock=\"$QEMU_VDE_SOCKET_1\""''}
|
||||
return flags
|
||||
|
||||
|
||||
@@ -110,8 +124,45 @@ let
|
||||
def create_machine_named(name):
|
||||
return create_machine({**default_flags, "name": name})
|
||||
|
||||
class Tpm:
|
||||
def __init__(self):
|
||||
self.start()
|
||||
|
||||
def start(self):
|
||||
self.proc = subprocess.Popen(["${pkgs.swtpm}/bin/swtpm",
|
||||
"socket",
|
||||
"--tpmstate", f"dir={tpm_folder}/swtpm",
|
||||
"--ctrl", f"type=unixio,path={tpm_folder}/swtpm-sock",
|
||||
"--tpm2"
|
||||
])
|
||||
|
||||
# Check whether starting swtpm failed
|
||||
try:
|
||||
exit_code = self.proc.wait(timeout=0.2)
|
||||
if exit_code is not None and exit_code != 0:
|
||||
raise Exception("failed to start swtpm")
|
||||
except subprocess.TimeoutExpired:
|
||||
pass
|
||||
|
||||
"""Check whether the swtpm process exited due to an error"""
|
||||
def check(self):
|
||||
exit_code = self.proc.poll()
|
||||
if exit_code is not None and exit_code != 0:
|
||||
raise Exception("swtpm process died")
|
||||
|
||||
|
||||
os.mkdir(f"{tpm_folder}/swtpm")
|
||||
tpm = Tpm()
|
||||
tpm.check()
|
||||
|
||||
start_all()
|
||||
${optionalString clevisTest ''
|
||||
tang.wait_for_unit("sockets.target")
|
||||
tang.wait_for_unit("network-online.target")
|
||||
machine.wait_for_unit("network-online.target")
|
||||
''}
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
machine.start()
|
||||
|
||||
with subtest("Assert readiness of login prompt"):
|
||||
machine.succeed("echo hello")
|
||||
@@ -127,13 +178,23 @@ let
|
||||
machine.copy_from_host(
|
||||
"${ makeConfig {
|
||||
inherit bootLoader grubDevice grubIdentifier
|
||||
grubUseEfi extraConfig;
|
||||
grubUseEfi extraConfig clevisTest;
|
||||
}
|
||||
}",
|
||||
"/mnt/etc/nixos/configuration.nix",
|
||||
)
|
||||
machine.copy_from_host("${pkgs.writeText "secret" "secret"}", "/mnt/etc/nixos/secret")
|
||||
|
||||
${optionalString clevisTest ''
|
||||
with subtest("Create the Clevis secret with Tang"):
|
||||
machine.wait_for_unit("network-online.target")
|
||||
machine.succeed('echo -n password | clevis encrypt sss \'{"t": 2, "pins": {"tpm2": {}, "tang": {"url": "http://192.168.1.2"}}}\' -y > /mnt/etc/nixos/clevis-secret.jwe')''}
|
||||
|
||||
${optionalString clevisFallbackTest ''
|
||||
with subtest("Shutdown Tang to check fallback to interactive prompt"):
|
||||
tang.shutdown()
|
||||
''}
|
||||
|
||||
with subtest("Perform the installation"):
|
||||
machine.succeed("nixos-install < /dev/null >&2")
|
||||
|
||||
@@ -200,7 +261,7 @@ let
|
||||
machine.copy_from_host_via_shell(
|
||||
"${ makeConfig {
|
||||
inherit bootLoader grubDevice grubIdentifier
|
||||
grubUseEfi extraConfig;
|
||||
grubUseEfi extraConfig clevisTest;
|
||||
forceGrubReinstallCount = 1;
|
||||
}
|
||||
}",
|
||||
@@ -229,7 +290,7 @@ let
|
||||
machine.copy_from_host_via_shell(
|
||||
"${ makeConfig {
|
||||
inherit bootLoader grubDevice grubIdentifier
|
||||
grubUseEfi extraConfig;
|
||||
grubUseEfi extraConfig clevisTest;
|
||||
forceGrubReinstallCount = 2;
|
||||
}
|
||||
}",
|
||||
@@ -303,7 +364,7 @@ let
|
||||
""")
|
||||
machine.copy_from_host_via_shell(
|
||||
"${makeConfig {
|
||||
inherit bootLoader grubDevice grubIdentifier grubUseEfi extraConfig;
|
||||
inherit bootLoader grubDevice grubIdentifier grubUseEfi extraConfig clevisTest;
|
||||
forceGrubReinstallCount = 1;
|
||||
flake = true;
|
||||
}}",
|
||||
@@ -379,6 +440,8 @@ let
|
||||
, enableOCR ? false, meta ? {}
|
||||
, testSpecialisationConfig ? false
|
||||
, testFlakeSwitch ? false
|
||||
, clevisTest ? false
|
||||
, clevisFallbackTest ? false
|
||||
}:
|
||||
makeTest {
|
||||
inherit enableOCR;
|
||||
@@ -416,13 +479,13 @@ let
|
||||
virtualisation.rootDevice = "/dev/vdb";
|
||||
virtualisation.bootLoaderDevice = "/dev/vda";
|
||||
virtualisation.qemu.diskInterface = "virtio";
|
||||
|
||||
# We don't want to have any networking in the guest whatsoever.
|
||||
# Also, if any vlans are enabled, the guest will reboot
|
||||
# (with a different configuration for legacy reasons),
|
||||
# and spend 5 minutes waiting for the vlan interface to show up
|
||||
# (which will never happen).
|
||||
virtualisation.vlans = [];
|
||||
virtualisation.qemu.options = mkIf (clevisTest) [
|
||||
"-chardev socket,id=chrtpm,path=$NIX_BUILD_TOP/swtpm-sock"
|
||||
"-tpmdev emulator,id=tpm0,chardev=chrtpm"
|
||||
"-device tpm-tis,tpmdev=tpm0"
|
||||
];
|
||||
# We don't want to have any networking in the guest apart from the clevis tests.
|
||||
virtualisation.vlans = mkIf (!clevisTest) [];
|
||||
|
||||
boot.loader.systemd-boot.enable = mkIf (bootLoader == "systemd-boot") true;
|
||||
|
||||
@@ -471,7 +534,7 @@ let
|
||||
in [
|
||||
(pkgs.grub2.override { inherit zfsSupport; })
|
||||
(pkgs.grub2_efi.override { inherit zfsSupport; })
|
||||
]);
|
||||
]) ++ optionals clevisTest [ pkgs.klibc ];
|
||||
|
||||
nix.settings = {
|
||||
substituters = mkForce [];
|
||||
@@ -480,12 +543,21 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
} // optionalAttrs clevisTest {
|
||||
tang = {
|
||||
services.tang = {
|
||||
enable = true;
|
||||
listenStream = [ "80" ];
|
||||
ipAddressAllow = [ "192.168.1.0/24" ];
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = testScriptFun {
|
||||
inherit bootLoader createPartitions postInstallCommands preBootCommands postBootCommands
|
||||
grubDevice grubIdentifier grubUseEfi extraConfig
|
||||
testSpecialisationConfig testFlakeSwitch;
|
||||
testSpecialisationConfig testFlakeSwitch clevisTest clevisFallbackTest;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -586,6 +658,145 @@ let
|
||||
zfs = super.zfs.overrideAttrs(_: {meta.platforms = [];});}
|
||||
)];
|
||||
};
|
||||
|
||||
mkClevisBcachefsTest = { fallback ? false }: makeInstallerTest "clevis-bcachefs${optionalString fallback "-fallback"}" {
|
||||
clevisTest = true;
|
||||
clevisFallbackTest = fallback;
|
||||
enableOCR = fallback;
|
||||
extraInstallerConfig = {
|
||||
imports = [ no-zfs-module ];
|
||||
boot.supportedFilesystems = [ "bcachefs" ];
|
||||
environment.systemPackages = with pkgs; [ keyutils clevis ];
|
||||
};
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB"
|
||||
+ " mkpart primary linux-swap 100M 1024M"
|
||||
+ " mkpart primary 1024M -1s",
|
||||
"udevadm settle",
|
||||
"mkswap /dev/vda2 -L swap",
|
||||
"swapon -L swap",
|
||||
"keyctl link @u @s",
|
||||
"echo -n password | mkfs.bcachefs -L root --encrypted /dev/vda3",
|
||||
"echo -n password | bcachefs unlock /dev/vda3",
|
||||
"echo -n password | mount -t bcachefs /dev/vda3 /mnt",
|
||||
"mkfs.ext3 -L boot /dev/vda1",
|
||||
"mkdir -p /mnt/boot",
|
||||
"mount LABEL=boot /mnt/boot",
|
||||
"udevadm settle")
|
||||
'';
|
||||
extraConfig = ''
|
||||
boot.initrd.clevis.devices."/dev/vda3".secretFile = "/etc/nixos/clevis-secret.jwe";
|
||||
|
||||
# We override what nixos-generate-config has generated because we do
|
||||
# not know the UUID in advance.
|
||||
fileSystems."/" = lib.mkForce { device = "/dev/vda3"; fsType = "bcachefs"; };
|
||||
'';
|
||||
preBootCommands = ''
|
||||
tpm = Tpm()
|
||||
tpm.check()
|
||||
'' + optionalString fallback ''
|
||||
machine.start()
|
||||
machine.wait_for_text("enter passphrase for")
|
||||
machine.send_chars("password\n")
|
||||
'';
|
||||
};
|
||||
|
||||
mkClevisLuksTest = { fallback ? false }: makeInstallerTest "clevis-luks${optionalString fallback "-fallback"}" {
|
||||
clevisTest = true;
|
||||
clevisFallbackTest = fallback;
|
||||
enableOCR = fallback;
|
||||
extraInstallerConfig = {
|
||||
environment.systemPackages = with pkgs; [ clevis ];
|
||||
};
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB"
|
||||
+ " mkpart primary linux-swap 100M 1024M"
|
||||
+ " mkpart primary 1024M -1s",
|
||||
"udevadm settle",
|
||||
"mkswap /dev/vda2 -L swap",
|
||||
"swapon -L swap",
|
||||
"modprobe dm_mod dm_crypt",
|
||||
"echo -n password | cryptsetup luksFormat -q /dev/vda3 -",
|
||||
"echo -n password | cryptsetup luksOpen --key-file - /dev/vda3 crypt-root",
|
||||
"mkfs.ext3 -L nixos /dev/mapper/crypt-root",
|
||||
"mount LABEL=nixos /mnt",
|
||||
"mkfs.ext3 -L boot /dev/vda1",
|
||||
"mkdir -p /mnt/boot",
|
||||
"mount LABEL=boot /mnt/boot",
|
||||
"udevadm settle")
|
||||
'';
|
||||
extraConfig = ''
|
||||
boot.initrd.clevis.devices."crypt-root".secretFile = "/etc/nixos/clevis-secret.jwe";
|
||||
'';
|
||||
preBootCommands = ''
|
||||
tpm = Tpm()
|
||||
tpm.check()
|
||||
'' + optionalString fallback ''
|
||||
machine.start()
|
||||
${if systemdStage1 then ''
|
||||
machine.wait_for_text("Please enter")
|
||||
'' else ''
|
||||
machine.wait_for_text("Passphrase for")
|
||||
''}
|
||||
machine.send_chars("password\n")
|
||||
'';
|
||||
};
|
||||
|
||||
mkClevisZfsTest = { fallback ? false }: makeInstallerTest "clevis-zfs${optionalString fallback "-fallback"}" {
|
||||
clevisTest = true;
|
||||
clevisFallbackTest = fallback;
|
||||
enableOCR = fallback;
|
||||
extraInstallerConfig = {
|
||||
boot.supportedFilesystems = [ "zfs" ];
|
||||
environment.systemPackages = with pkgs; [ clevis ];
|
||||
};
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB"
|
||||
+ " mkpart primary linux-swap 100M 1024M"
|
||||
+ " mkpart primary 1024M -1s",
|
||||
"udevadm settle",
|
||||
"mkswap /dev/vda2 -L swap",
|
||||
"swapon -L swap",
|
||||
"zpool create -O mountpoint=legacy rpool /dev/vda3",
|
||||
"echo -n password | zfs create"
|
||||
+ " -o encryption=aes-256-gcm -o keyformat=passphrase rpool/root",
|
||||
"mount -t zfs rpool/root /mnt",
|
||||
"mkfs.ext3 -L boot /dev/vda1",
|
||||
"mkdir -p /mnt/boot",
|
||||
"mount LABEL=boot /mnt/boot",
|
||||
"udevadm settle")
|
||||
'';
|
||||
extraConfig = ''
|
||||
boot.initrd.clevis.devices."rpool/root".secretFile = "/etc/nixos/clevis-secret.jwe";
|
||||
boot.zfs.requestEncryptionCredentials = true;
|
||||
|
||||
|
||||
# Using by-uuid overrides the default of by-id, and is unique
|
||||
# to the qemu disks, as they don't produce by-id paths for
|
||||
# some reason.
|
||||
boot.zfs.devNodes = "/dev/disk/by-uuid/";
|
||||
networking.hostId = "00000000";
|
||||
'';
|
||||
preBootCommands = ''
|
||||
tpm = Tpm()
|
||||
tpm.check()
|
||||
'' + optionalString fallback ''
|
||||
machine.start()
|
||||
${if systemdStage1 then ''
|
||||
machine.wait_for_text("Enter key for rpool/root")
|
||||
'' else ''
|
||||
machine.wait_for_text("Key load error")
|
||||
''}
|
||||
machine.send_chars("password\n")
|
||||
'';
|
||||
};
|
||||
|
||||
in {
|
||||
|
||||
# !!! `parted mkpart' seems to silently create overlapping partitions.
|
||||
@@ -1175,6 +1386,13 @@ in {
|
||||
)
|
||||
'';
|
||||
};
|
||||
} // {
|
||||
clevisBcachefs = mkClevisBcachefsTest { };
|
||||
clevisBcachefsFallback = mkClevisBcachefsTest { fallback = true; };
|
||||
clevisLuks = mkClevisLuksTest { };
|
||||
clevisLuksFallback = mkClevisLuksTest { fallback = true; };
|
||||
clevisZfs = mkClevisZfsTest { };
|
||||
clevisZfsFallback = mkClevisZfsTest { fallback = true; };
|
||||
} // optionalAttrs systemdStage1 {
|
||||
stratisRoot = makeInstallerTest "stratisRoot" {
|
||||
createPartitions = ''
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{ lib, fetchurl, buildPythonApplication, libjack2, pydbus, pyliblo, pyqt5, which, bash, qt5 }:
|
||||
{ lib, fetchurl, buildPythonApplication, libjack2, pyliblo, pyqt5, which, bash, qt5 }:
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "raysession";
|
||||
version = "0.13.1";
|
||||
version = "0.14.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/Houston4444/RaySession/releases/download/v${version}/RaySession-${version}-source.tar.gz";
|
||||
sha256 = "sha256-iiFRtX43u9BHe7a4ojza7kav+dMW9e05dPi7Gf9d1GM=";
|
||||
sha256 = "sha256-qEN3zBK/goRLIZaU06XXm8H5yj4Qjj/NH+bkHkjhLaw=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -25,7 +25,7 @@ buildPythonApplication rec {
|
||||
qt5.wrapQtAppsHook
|
||||
];
|
||||
buildInputs = [ libjack2 bash ];
|
||||
propagatedBuildInputs = [ pydbus pyliblo pyqt5 ];
|
||||
propagatedBuildInputs = [ pyliblo pyqt5 ];
|
||||
|
||||
dontWrapQtApps = true; # The program is a python script.
|
||||
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rust
|
||||
, rustPlatform
|
||||
, cmake
|
||||
, makeWrapper
|
||||
, cosmic-icons
|
||||
, just
|
||||
, pkg-config
|
||||
, libxkbcommon
|
||||
, glib
|
||||
, gtk3
|
||||
, libinput
|
||||
, fontconfig
|
||||
, freetype
|
||||
, wayland
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cosmic-edit";
|
||||
version = "unstable-2023-11-02";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-edit";
|
||||
rev = "ee2dea71e6e21967bc705046f9650407d07cdada";
|
||||
sha256 = "sha256-27j9Imlyzwy2yjpNsWWcX0qW38ZxMDkht1Eaggr4NYY=";
|
||||
};
|
||||
|
||||
cargoLock = {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"accesskit-0.11.0" = "sha256-xVhe6adUb8VmwIKKjHxwCwOo5Y1p3Or3ylcJJdLDrrE=";
|
||||
"cosmic-config-0.1.0" = "sha256-VKvJ7cNwMLLs6ElpgP6xwsBUnD5MDApwWl7rrb/Lr/U=";
|
||||
"cosmic-text-0.10.0" = "sha256-g9y2qZ2ivpDtZAtsXqMXgGjUFi9QZx/weMhk7hmnB3E=";
|
||||
"sctk-adwaita-0.5.4" = "sha256-yK0F2w/0nxyKrSiHZbx7+aPNY2vlFs7s8nu/COp2KqQ=";
|
||||
"smithay-client-toolkit-0.16.1" = "sha256-z7EZThbh7YmKzAACv181zaEZmWxTrMkFRzP0nfsHK6c=";
|
||||
"softbuffer-0.2.0" = "sha256-VD2GmxC58z7Qfu/L+sfENE+T8L40mvUKKSfgLmCTmjY=";
|
||||
"taffy-0.3.11" = "sha256-0hXOEj6IjSW8e1t+rvxBFX6V9XRum3QO2Des1XlHJEw=";
|
||||
"winit-0.28.6" = "sha256-FhW6d2XnXCGJUMoT9EMQew9/OPXiehy/JraeCiVd76M=";
|
||||
};
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace justfile --replace '#!/usr/bin/env' "#!$(command -v env)"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake just pkg-config makeWrapper ];
|
||||
buildInputs = [ libxkbcommon libinput fontconfig freetype wayland glib gtk3 ];
|
||||
|
||||
dontUseJustBuild = true;
|
||||
|
||||
justFlags = [
|
||||
"--set"
|
||||
"prefix"
|
||||
(placeholder "out")
|
||||
"--set"
|
||||
"bin-src"
|
||||
"target/${rust.lib.toRustTargetSpecShort stdenv.hostPlatform}/release/cosmic-edit"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/${pname}" \
|
||||
--suffix XDG_DATA_DIRS : "${cosmic-icons}/share"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/pop-os/cosmic-edit";
|
||||
description = "Text Editor for the COSMIC Desktop Environment";
|
||||
license = licenses.gpl3Only;
|
||||
mainProgram = "cosmic-edit";
|
||||
maintainers = with maintainers; [ ahoneybun ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -120,7 +120,8 @@ with stdenv; lib.makeOverridable mkDerivation (rec {
|
||||
item=${desktopItem}
|
||||
|
||||
wrapProgram "$out/$pname/bin/${loName}.sh" \
|
||||
--prefix PATH : "$out/libexec/${pname}:${lib.makeBinPath [ jdk coreutils gnugrep which git python3 ]}" \
|
||||
--prefix PATH : "$out/libexec/${pname}:${lib.makeBinPath [ jdk coreutils gnugrep which git ]}" \
|
||||
--suffix PATH : "${lib.makeBinPath [ python3 ]}" \
|
||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath extraLdPath}" \
|
||||
${lib.concatStringsSep " " extraWrapperArgs} \
|
||||
--set-default JDK_HOME "$jdk" \
|
||||
|
||||
@@ -2287,12 +2287,12 @@ final: prev:
|
||||
|
||||
conform-nvim = buildVimPlugin {
|
||||
pname = "conform.nvim";
|
||||
version = "2023-11-30";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "stevearc";
|
||||
repo = "conform.nvim";
|
||||
rev = "3fc2c956d99216b2816f07d2b946020ba2e02457";
|
||||
sha256 = "1hv712cn3vn4gnr01a9maq787nb13x8nwachksnik49bq28g43g6";
|
||||
rev = "e8ac7f1a9a3973ecce6942b2f26d16e65902aa70";
|
||||
sha256 = "127shx9vzq9rkjk44xpr24w76b51fywwrni6nvrdq29swqdpk9yw";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
meta.homepage = "https://github.com/stevearc/conform.nvim/";
|
||||
@@ -2348,12 +2348,12 @@ final: prev:
|
||||
|
||||
copilot-lua = buildVimPlugin {
|
||||
pname = "copilot.lua";
|
||||
version = "2023-11-28";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "zbirenbaum";
|
||||
repo = "copilot.lua";
|
||||
rev = "3665ed0f3ef3ad68673df7195789d134d0d1fdb0";
|
||||
sha256 = "1vsyjxqzq57ckmj942i018r1zg56l908fg8i5z3rv4qyqrwjz725";
|
||||
rev = "38a41d0d78f8823cc144c99784528b9a68bdd608";
|
||||
sha256 = "05v2cxa10s98pk7w0g3g8p440bz6n2r2k4ygxz9vkbcjf39kgjaj";
|
||||
};
|
||||
meta.homepage = "https://github.com/zbirenbaum/copilot.lua/";
|
||||
};
|
||||
@@ -2480,12 +2480,12 @@ final: prev:
|
||||
|
||||
csv-vim = buildVimPlugin {
|
||||
pname = "csv.vim";
|
||||
version = "2023-09-28";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "chrisbra";
|
||||
repo = "csv.vim";
|
||||
rev = "4fd88346aed02123aa5daa1a363868a576c6fdcf";
|
||||
sha256 = "10c2hgzhnv1zr461hvp4cnxpfs0aja43whjimdsb5sjd4xk5x7cc";
|
||||
rev = "962f88787ec6873eba1c7dbbd81d2723f1ee3c4b";
|
||||
sha256 = "11gwamrqqmcy5jvbmnmyvx94pknlx3ppvyk4b6vhm4dghwmhq9nb";
|
||||
};
|
||||
meta.homepage = "https://github.com/chrisbra/csv.vim/";
|
||||
};
|
||||
@@ -3046,12 +3046,12 @@ final: prev:
|
||||
|
||||
dressing-nvim = buildVimPlugin {
|
||||
pname = "dressing.nvim";
|
||||
version = "2023-11-07";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "stevearc";
|
||||
repo = "dressing.nvim";
|
||||
rev = "fe3071330a0720ce3695ac915820c8134b22d1b0";
|
||||
sha256 = "0a76mkvgya5hygfjbk2wbha18fhwhv6kmkxgvda053z325505mc6";
|
||||
rev = "8b7ae53d7f04f33be3439a441db8071c96092d19";
|
||||
sha256 = "1gj3apvif9bfz1vqrxr6xmj5p7byjq5qdjv159lnm09hca3vfdnb";
|
||||
};
|
||||
meta.homepage = "https://github.com/stevearc/dressing.nvim/";
|
||||
};
|
||||
@@ -3649,12 +3649,12 @@ final: prev:
|
||||
|
||||
fzf-lua = buildVimPlugin {
|
||||
pname = "fzf-lua";
|
||||
version = "2023-11-30";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ibhagwan";
|
||||
repo = "fzf-lua";
|
||||
rev = "474af4d6e2f0ebfbb5df85ca7827b67949717bae";
|
||||
sha256 = "0236ccalzkwv2qzspqdglnkvpflzcppllp4v5bn6v1lbnlyqj7dm";
|
||||
rev = "a1a2d0f42eaec400cc6918a8e898fc1f9c4dbc5f";
|
||||
sha256 = "14pdspy8932fh5w247vqs0fyywb6mwg1af9sk5irgxfsv7c0xlg2";
|
||||
};
|
||||
meta.homepage = "https://github.com/ibhagwan/fzf-lua/";
|
||||
};
|
||||
@@ -3877,12 +3877,12 @@ final: prev:
|
||||
|
||||
go-nvim = buildVimPlugin {
|
||||
pname = "go.nvim";
|
||||
version = "2023-11-28";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ray-x";
|
||||
repo = "go.nvim";
|
||||
rev = "e0528b5868b8c488fb6eaf1a4f7b298976d419a5";
|
||||
sha256 = "08xh4i09akm13gaj5zzlqlhcrr1i21jwqzxljf7i5wklpw7hf03c";
|
||||
rev = "7b7c20029a817ef51f6b498388488e9850fe45ac";
|
||||
sha256 = "0qbgmg9kvhxz4akmxd56lwr2zjxrayccgiynkcfnqakvya271jji";
|
||||
};
|
||||
meta.homepage = "https://github.com/ray-x/go.nvim/";
|
||||
};
|
||||
@@ -4080,24 +4080,24 @@ final: prev:
|
||||
|
||||
harpoon = buildVimPlugin {
|
||||
pname = "harpoon";
|
||||
version = "2023-10-10";
|
||||
version = "2023-12-02";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ThePrimeagen";
|
||||
repo = "harpoon";
|
||||
rev = "c1aebbad9e3d13f20bedb8f2ce8b3a94e39e424a";
|
||||
sha256 = "0wqxg31z7gi7ap8r0057lpadywx3d245ghlljr6mkmp0jz3waad5";
|
||||
rev = "c5f2d71c32a4aa2569bef1066e668947b78f9682";
|
||||
sha256 = "1jn3sj3r1mczg5wyh7qcs51mab8sz02sgff5d2p3qhz0gjvyq22m";
|
||||
};
|
||||
meta.homepage = "https://github.com/ThePrimeagen/harpoon/";
|
||||
};
|
||||
|
||||
haskell-tools-nvim = buildNeovimPlugin {
|
||||
pname = "haskell-tools.nvim";
|
||||
version = "2023-11-26";
|
||||
version = "2023-12-02";
|
||||
src = fetchFromGitHub {
|
||||
owner = "MrcJkb";
|
||||
repo = "haskell-tools.nvim";
|
||||
rev = "8bfbba643d908e8757d591cf01e2241dd46b0858";
|
||||
sha256 = "05np6ahzf6mk6ksfak12y7iwgfkrpkwhgf366bqlbk236g3k7sk0";
|
||||
rev = "fdb248c2cc724b151b0886044b5fd8b88968d0d1";
|
||||
sha256 = "0wj9aqihym10bmdybdmvlf8nlaghhfxl5z7gaamzbzlwhwlx71zy";
|
||||
};
|
||||
meta.homepage = "https://github.com/MrcJkb/haskell-tools.nvim/";
|
||||
};
|
||||
@@ -4271,12 +4271,12 @@ final: prev:
|
||||
|
||||
hotpot-nvim = buildVimPlugin {
|
||||
pname = "hotpot.nvim";
|
||||
version = "2023-10-20";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "rktjmp";
|
||||
repo = "hotpot.nvim";
|
||||
rev = "eb5531b5f6285656408d1ed07b4d9bcc8067bad4";
|
||||
sha256 = "0yl1l11dp58mg3bfk42ydcc7s2fxnnz6nlkkc09kxmdf4gxwr3wc";
|
||||
rev = "05d9325e14ee1af9114b5c4586d1b200e75ccac9";
|
||||
sha256 = "1ffhx1i9p7a13k6qmpry507ypk45sff6api5nnnc709bd7360743";
|
||||
};
|
||||
meta.homepage = "https://github.com/rktjmp/hotpot.nvim/";
|
||||
};
|
||||
@@ -4439,12 +4439,12 @@ final: prev:
|
||||
|
||||
indent-blankline-nvim = buildVimPlugin {
|
||||
pname = "indent-blankline.nvim";
|
||||
version = "2023-10-30";
|
||||
version = "2023-12-02";
|
||||
src = fetchFromGitHub {
|
||||
owner = "lukas-reineke";
|
||||
repo = "indent-blankline.nvim";
|
||||
rev = "29be0919b91fb59eca9e90690d76014233392bef";
|
||||
sha256 = "0z8n9d6f4qiq8m4ai1r2xz90955cp6cikqprq74ivfch3icrzdi1";
|
||||
rev = "dbd90bb689ff10d21fee6792eb8928f0584b5860";
|
||||
sha256 = "1fbx8l5m09qyis4d767gmmwa9rgify6vwjvj3b1jqfzhlz1fmd24";
|
||||
};
|
||||
meta.homepage = "https://github.com/lukas-reineke/indent-blankline.nvim/";
|
||||
};
|
||||
@@ -4860,12 +4860,12 @@ final: prev:
|
||||
|
||||
leap-nvim = buildVimPlugin {
|
||||
pname = "leap.nvim";
|
||||
version = "2023-10-22";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ggandor";
|
||||
repo = "leap.nvim";
|
||||
rev = "b6ae80f8fc9993638608fc1a51c6ab0eeb12618c";
|
||||
sha256 = "19nffffmczlqfsgjs10hqs9abgbygiv0ns64apk7gzf5anjaj0z1";
|
||||
rev = "d55acc28ecc1f3ab3c396afd1f8b11a239285d9b";
|
||||
sha256 = "0g4savdihdh15lddh5yj8vq5py9flzl59dqc93w6yx2kvj1r9ad2";
|
||||
};
|
||||
meta.homepage = "https://github.com/ggandor/leap.nvim/";
|
||||
};
|
||||
@@ -5016,12 +5016,12 @@ final: prev:
|
||||
|
||||
lightspeed-nvim = buildVimPlugin {
|
||||
pname = "lightspeed.nvim";
|
||||
version = "2022-10-21";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ggandor";
|
||||
repo = "lightspeed.nvim";
|
||||
rev = "299eefa6a9e2d881f1194587c573dad619fdb96f";
|
||||
sha256 = "1697plp2f6r5vmayi4xw23lj69pc31r3zh3p07rzxgl2ir4zrj1z";
|
||||
rev = "fcc72d8a4d5f4ebba62d8a3a0660f88f1b5c3b05";
|
||||
sha256 = "1006047i88h1sad2xdi6h26vy13wnh4mnsdqqp4gpvh2sg6avnd5";
|
||||
};
|
||||
meta.homepage = "https://github.com/ggandor/lightspeed.nvim/";
|
||||
};
|
||||
@@ -5279,12 +5279,12 @@ final: prev:
|
||||
|
||||
lspsaga-nvim = buildVimPlugin {
|
||||
pname = "lspsaga.nvim";
|
||||
version = "2023-11-21";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "nvimdev";
|
||||
repo = "lspsaga.nvim";
|
||||
rev = "d3dfaea0125315110ea720c337ab88aa451d75e7";
|
||||
sha256 = "07bm8gvzx68cdy7jkhva3caqjqazrh5hnhr3yi1qa6g1vlmnb0f7";
|
||||
rev = "e9f08958e5f8410cadaa6388844788aedec5f78a";
|
||||
sha256 = "1rhrjh36nlwrms9ikd3vfmvf1lh5m8wqx79n82g68lkaxch6g8v1";
|
||||
};
|
||||
meta.homepage = "https://github.com/nvimdev/lspsaga.nvim/";
|
||||
};
|
||||
@@ -5325,14 +5325,14 @@ final: prev:
|
||||
meta.homepage = "https://github.com/nvim-lualine/lualine.nvim/";
|
||||
};
|
||||
|
||||
luasnip = buildVimPlugin {
|
||||
luasnip = buildNeovimPlugin {
|
||||
pname = "luasnip";
|
||||
version = "2023-11-28";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "l3mon4d3";
|
||||
repo = "luasnip";
|
||||
rev = "1def35377854535bb3b0f4cc7a33c083cdb12571";
|
||||
sha256 = "1g34ivzymgv214rpmwcmv91l4gp29q4r6cbv8xszzvxmc7dxcgkr";
|
||||
rev = "118263867197a111717b5f13d954cd1ab8124387";
|
||||
sha256 = "05gf35zb1m4baz3xiw8qh647l2w89861jljrhbbjnhnn48vfqgzw";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
meta.homepage = "https://github.com/l3mon4d3/luasnip/";
|
||||
@@ -5436,24 +5436,24 @@ final: prev:
|
||||
|
||||
mason-lspconfig-nvim = buildVimPlugin {
|
||||
pname = "mason-lspconfig.nvim";
|
||||
version = "2023-11-28";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "williamboman";
|
||||
repo = "mason-lspconfig.nvim";
|
||||
rev = "41674c9d50f23cfa3e11f0ca964eb9100c2a8922";
|
||||
sha256 = "030vyd0n45kd9j33kb20v8kx9pg66702525gnjbcrv5a8npldm1q";
|
||||
rev = "4eb8e15e3c0757303d4c6dea64d2981fc679e990";
|
||||
sha256 = "0ng3zhxcxdkpwd4zy17yl51h7bhknd3qv8j6rkbq1js237zv027p";
|
||||
};
|
||||
meta.homepage = "https://github.com/williamboman/mason-lspconfig.nvim/";
|
||||
};
|
||||
|
||||
mason-tool-installer-nvim = buildVimPlugin {
|
||||
pname = "mason-tool-installer.nvim";
|
||||
version = "2023-10-10";
|
||||
version = "2023-12-02";
|
||||
src = fetchFromGitHub {
|
||||
owner = "WhoIsSethDaniel";
|
||||
repo = "mason-tool-installer.nvim";
|
||||
rev = "e4f34741daa9cf95de68a603d3e7a6844a69fdf0";
|
||||
sha256 = "1pk19mlssn6f4pqm2j0kf9841nmxd0scphhrrd02w81gmsr912zh";
|
||||
rev = "8b70e7f1e0a4119c1234c3bde4a01c241cabcc74";
|
||||
sha256 = "1jxk8hz4p84f725f35hdkqnk6dnkanly86k89n7p551qwjs21mv0";
|
||||
};
|
||||
meta.homepage = "https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim/";
|
||||
};
|
||||
@@ -5556,12 +5556,12 @@ final: prev:
|
||||
|
||||
mini-nvim = buildVimPlugin {
|
||||
pname = "mini.nvim";
|
||||
version = "2023-11-28";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "echasnovski";
|
||||
repo = "mini.nvim";
|
||||
rev = "964fab7fecd14f66a69a96162f8aa816480690fd";
|
||||
sha256 = "1vxbjidpxhjbrbhg5kl4x4dcsn77nfybzbnlq4yjcpcsrmf8ms5i";
|
||||
rev = "6d1cbcaec421b3768088b4047e78ce22e5503b99";
|
||||
sha256 = "1924d432sym9qbp2q9h9gj5ky81vnxq1y4zzfrg5ay76clplaa95";
|
||||
};
|
||||
meta.homepage = "https://github.com/echasnovski/mini.nvim/";
|
||||
};
|
||||
@@ -6036,12 +6036,12 @@ final: prev:
|
||||
|
||||
neogit = buildVimPlugin {
|
||||
pname = "neogit";
|
||||
version = "2023-11-30";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "NeogitOrg";
|
||||
repo = "neogit";
|
||||
rev = "1ab1504ab87016e1d12b8f23543532a3006adb3b";
|
||||
sha256 = "147k8rxcqqp85l1mjklak0bfzbwn2gkxkm4ykw01srkzy5jlhdwp";
|
||||
rev = "d0e87541130b2cf62d7f8a54487ef99560232fb6";
|
||||
sha256 = "16mmrhn83k8jrjavxbzq5ql32q2c9jqdgfx3a6hd2iv810y664qi";
|
||||
};
|
||||
meta.homepage = "https://github.com/NeogitOrg/neogit/";
|
||||
};
|
||||
@@ -6108,12 +6108,12 @@ final: prev:
|
||||
|
||||
neorg = buildVimPlugin {
|
||||
pname = "neorg";
|
||||
version = "2023-11-28";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "nvim-neorg";
|
||||
repo = "neorg";
|
||||
rev = "f4466457396717d10d2d235d019e0a80e1770087";
|
||||
sha256 = "07gs0hdgy7q5sq3cj29jc8qlwsjmr74hqgy0l38pljbqxajigsww";
|
||||
rev = "bf3daa2229c60f92f48ac6d7db3049b65fd01371";
|
||||
sha256 = "0si90zng5x0p6qcrzzib8gifbxxw3m3sqbh22jiwwdjxwr3vhy9d";
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-neorg/neorg/";
|
||||
};
|
||||
@@ -6445,12 +6445,12 @@ final: prev:
|
||||
|
||||
nerdtree = buildVimPlugin {
|
||||
pname = "nerdtree";
|
||||
version = "2023-11-15";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "preservim";
|
||||
repo = "nerdtree";
|
||||
rev = "0cb04e9245b000daf32f04aae5f606011a6aa3b5";
|
||||
sha256 = "1rws27wc2l3qahvbfd5b2i1js9kwldxxsfsn0abah96q2m1i3q85";
|
||||
rev = "50a394b2bfa93674381cb913d6330e5075b5c787";
|
||||
sha256 = "1p8qmnbi3l4y743db35sig5nxgqj83s20yyqhld9b5v0yr27rhbl";
|
||||
};
|
||||
meta.homepage = "https://github.com/preservim/nerdtree/";
|
||||
};
|
||||
@@ -6589,12 +6589,12 @@ final: prev:
|
||||
|
||||
no-neck-pain-nvim = buildVimPlugin {
|
||||
pname = "no-neck-pain.nvim";
|
||||
version = "2023-11-29";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "shortcuts";
|
||||
repo = "no-neck-pain.nvim";
|
||||
rev = "0311b1654098b28c29a99007844dfa4bfe315b0a";
|
||||
sha256 = "01rx8pf5qkga3x4y9902pwkjh0xifgba4xk6wfr0akn1slwd1g11";
|
||||
rev = "968ad52ee472e950d104303c4c0bfcd3de664fe1";
|
||||
sha256 = "0lqhi74fjvsflx642g04k2zf8i8dxfycmgd7hh0nkc6012b1ma3x";
|
||||
};
|
||||
meta.homepage = "https://github.com/shortcuts/no-neck-pain.nvim/";
|
||||
};
|
||||
@@ -6613,12 +6613,12 @@ final: prev:
|
||||
|
||||
none-ls-nvim = buildVimPlugin {
|
||||
pname = "none-ls.nvim";
|
||||
version = "2023-11-29";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "nvimtools";
|
||||
repo = "none-ls.nvim";
|
||||
rev = "3a4826687da4310af379515086d71faca4d21288";
|
||||
sha256 = "1fcln8z31cmmg0dclp8gwiy74pfa4ylic74pdf4mcsaqbm5blkr4";
|
||||
rev = "7bf88cd3b37a411fdacfdca1745408a77a420493";
|
||||
sha256 = "0ynlhj5vskv6laixs79lh334fxxkm0yx1vcgc9vyk9cr19v5109n";
|
||||
};
|
||||
meta.homepage = "https://github.com/nvimtools/none-ls.nvim/";
|
||||
};
|
||||
@@ -7236,12 +7236,12 @@ final: prev:
|
||||
|
||||
nvim-lspconfig = buildVimPlugin {
|
||||
pname = "nvim-lspconfig";
|
||||
version = "2023-11-30";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "neovim";
|
||||
repo = "nvim-lspconfig";
|
||||
rev = "fcf153fbbf1facd16a71d46b92be8be495123a9f";
|
||||
sha256 = "13h9nx74afvabrn51b4wjb6k6svidbmwq5czl03p3rp37lywkxcw";
|
||||
rev = "694aaec65733e2d54d393abf80e526f86726c988";
|
||||
sha256 = "16nrq7gxnk33qgpmcnjd8yq738vd7qpr2x77v7xf84qp2443nbkx";
|
||||
};
|
||||
meta.homepage = "https://github.com/neovim/nvim-lspconfig/";
|
||||
};
|
||||
@@ -7464,12 +7464,12 @@ final: prev:
|
||||
|
||||
nvim-scrollview = buildVimPlugin {
|
||||
pname = "nvim-scrollview";
|
||||
version = "2023-11-30";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "dstein64";
|
||||
repo = "nvim-scrollview";
|
||||
rev = "1b11329ece4cd25884b56c129aedc23ff1665d92";
|
||||
sha256 = "0n7mqssagmq40glaiybmf8d5664665q32d9kbgz00jgnnj9n93ay";
|
||||
rev = "7eb9030662fad8bfbc1df2c6cfc165aa4a8904b2";
|
||||
sha256 = "1245qk1s00svnh57ijamziam8lm3d419a5vf3wry9fdf2lm01j1g";
|
||||
};
|
||||
meta.homepage = "https://github.com/dstein64/nvim-scrollview/";
|
||||
};
|
||||
@@ -7596,12 +7596,12 @@ final: prev:
|
||||
|
||||
nvim-treesitter = buildVimPlugin {
|
||||
pname = "nvim-treesitter";
|
||||
version = "2023-11-30";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "nvim-treesitter";
|
||||
repo = "nvim-treesitter";
|
||||
rev = "b41bbcbb9a2c5543d3bfa4cf7e2b0948a5f61ce6";
|
||||
sha256 = "1nsfxaxi2wkbs32kfxsbd23m2xx0fickffjgcprj079bgl64z47k";
|
||||
rev = "80a16deb5146a3eb4648effccda1ab9f45e43e76";
|
||||
sha256 = "0mgm5b80flk5171b3b2gsy2pjdimc0xbjbsdg4qf9hgzjyxf9jmi";
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/";
|
||||
};
|
||||
@@ -7656,12 +7656,12 @@ final: prev:
|
||||
|
||||
nvim-treesitter-textobjects = buildVimPlugin {
|
||||
pname = "nvim-treesitter-textobjects";
|
||||
version = "2023-11-30";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "nvim-treesitter";
|
||||
repo = "nvim-treesitter-textobjects";
|
||||
rev = "aa7935c60aff501580b7f4872a7082e615ea5be3";
|
||||
sha256 = "0j9fv564l4k1jf29h0mb5vnm2h1x3balrpnmchav527ylcaxhgmm";
|
||||
rev = "ec1c5bdb3d87ac971749fa6c7dbc2b14884f1f6a";
|
||||
sha256 = "1kdfwihk8ci827aq4w6xv7vn2740qpmh6dk892cd6yi0ab4zxvxn";
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects/";
|
||||
};
|
||||
@@ -7727,12 +7727,12 @@ final: prev:
|
||||
|
||||
nvim-ufo = buildVimPlugin {
|
||||
pname = "nvim-ufo";
|
||||
version = "2023-11-28";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "kevinhwang91";
|
||||
repo = "nvim-ufo";
|
||||
rev = "c1e75fb93a5413c73221e23d549cc9f208d592fb";
|
||||
sha256 = "0kwxqrbb0n12bq3iqidk8i67ag4g6rdnqzk5gcjjvm6qlvvylggz";
|
||||
rev = "47a2f8d4da670db6e01a7373cdf97249e332d6d4";
|
||||
sha256 = "0k2l5ls9fhc53a7fvyz8p75n0b3spy7s3j4z9l3ilzvhd6m7al6d";
|
||||
};
|
||||
meta.homepage = "https://github.com/kevinhwang91/nvim-ufo/";
|
||||
};
|
||||
@@ -7871,12 +7871,12 @@ final: prev:
|
||||
|
||||
oil-nvim = buildVimPlugin {
|
||||
pname = "oil.nvim";
|
||||
version = "2023-11-24";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "stevearc";
|
||||
repo = "oil.nvim";
|
||||
rev = "e89a8f8adeef2dfab851fd056d38ee7afc97c249";
|
||||
sha256 = "1f5201yb7kqbggn0dgpl9p5mnxdxg6ffpfmzih7rzzkp4fhn2vb4";
|
||||
rev = "58340545c6a01e5e9f7966df448714a156db137a";
|
||||
sha256 = "0s3yd9336yqk8s8f07lf0195pn5q0ij1qphp0yaisrpxbfarl63p";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
meta.homepage = "https://github.com/stevearc/oil.nvim/";
|
||||
@@ -8774,12 +8774,12 @@ final: prev:
|
||||
|
||||
rustaceanvim = buildNeovimPlugin {
|
||||
pname = "rustaceanvim";
|
||||
version = "2023-11-28";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mrcjkb";
|
||||
repo = "rustaceanvim";
|
||||
rev = "bdd7155a18249f39a014115a8832ee770e503812";
|
||||
sha256 = "0abwc7shfqcr31m7gaaxq07ym24s6gz8mkc49f5j0idcfj4k4n1v";
|
||||
rev = "3cad6912b16d5e0a5375d465ca28fda4c6ea4ee9";
|
||||
sha256 = "12lzw6jh7z5bvd7ss9xils11paiv3b9by31nlxfarnpcvqf0m9l4";
|
||||
};
|
||||
meta.homepage = "https://github.com/mrcjkb/rustaceanvim/";
|
||||
};
|
||||
@@ -8875,7 +8875,7 @@ final: prev:
|
||||
owner = "VonHeikemen";
|
||||
repo = "searchbox.nvim";
|
||||
rev = "110949af8963185b4e732b45ae57beb731bfcede";
|
||||
sha256 = "1dahiggnc8hqfgd9akxlsyck7gxz05w0phrvahc5g1kskyr0q7h7";
|
||||
sha256 = "sha256-Bx4Msp96hlcYVDvDC3gBv78zmde0T5XacxgiZt+LULU=";
|
||||
};
|
||||
meta.homepage = "https://github.com/VonHeikemen/searchbox.nvim/";
|
||||
};
|
||||
@@ -9256,12 +9256,12 @@ final: prev:
|
||||
|
||||
srcery-vim = buildVimPlugin {
|
||||
pname = "srcery-vim";
|
||||
version = "2023-11-13";
|
||||
version = "2023-12-02";
|
||||
src = fetchFromGitHub {
|
||||
owner = "srcery-colors";
|
||||
repo = "srcery-vim";
|
||||
rev = "ffe6b8e975bb2f218cbeb3e785d2f12d9f88b37d";
|
||||
sha256 = "0nwk81y9j5ljjm3k19kf1zmscdxiis4mwan026wv7cqp7f9qhxlr";
|
||||
rev = "e605292319d9c964281d840ac87d3deddfc06559";
|
||||
sha256 = "0b5zj2ilvhkv01n480gd6zylnhc3yhq9p7gcj0f12fn9yfihqdnf";
|
||||
};
|
||||
meta.homepage = "https://github.com/srcery-colors/srcery-vim/";
|
||||
};
|
||||
@@ -9848,12 +9848,12 @@ final: prev:
|
||||
|
||||
telescope-project-nvim = buildVimPlugin {
|
||||
pname = "telescope-project.nvim";
|
||||
version = "2023-11-06";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "nvim-telescope";
|
||||
repo = "telescope-project.nvim";
|
||||
rev = "5460c6c60d48618c5c746e5b1cad4c3e8262fdae";
|
||||
sha256 = "0mj5sg698idk6lsaw6fd56j206vf0djv5sgaszjm4vffgc7666sb";
|
||||
rev = "1aaf16580a614601a7f7077d9639aeb457dc5559";
|
||||
sha256 = "1g03lnl79245d0vn7ydda4aixd2qbv9kcxc584msk7jwbc58r2xn";
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-telescope/telescope-project.nvim/";
|
||||
};
|
||||
@@ -10077,12 +10077,12 @@ final: prev:
|
||||
|
||||
text-case-nvim = buildVimPlugin {
|
||||
pname = "text-case.nvim";
|
||||
version = "2023-11-30";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "johmsalas";
|
||||
repo = "text-case.nvim";
|
||||
rev = "1680642717be198d5b16fc4de9b8080d77111270";
|
||||
sha256 = "1hi1j2xnbqy0zmm06zfgwmikl6hphgkhbnhvdagap9h4nifpn9vz";
|
||||
rev = "8f22e5fcbb8d591e04fa3e9780e2e16809278f9f";
|
||||
sha256 = "0gpmfvj26kcm8ii9fhjgpwh5c571hy7xb253qq1vaak9cxa9m9yh";
|
||||
};
|
||||
meta.homepage = "https://github.com/johmsalas/text-case.nvim/";
|
||||
};
|
||||
@@ -10438,12 +10438,12 @@ final: prev:
|
||||
|
||||
unison = buildVimPlugin {
|
||||
pname = "unison";
|
||||
version = "2023-11-30";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "unisonweb";
|
||||
repo = "unison";
|
||||
rev = "d56c7c469b52448164d078e26802b2e3071b17b0";
|
||||
sha256 = "1xflz3f5qm5injgzag7c4l2k4pflhv4knd5gpsxryzyxizlxkadl";
|
||||
rev = "ebf9874e64a8c96041af727d2aa17033a8718f03";
|
||||
sha256 = "1ndm54q3qg2hhcnh1bncjpmknczmngy9n6jgbr2wrxsvrsq8mb06";
|
||||
};
|
||||
meta.homepage = "https://github.com/unisonweb/unison/";
|
||||
};
|
||||
@@ -12888,12 +12888,12 @@ final: prev:
|
||||
|
||||
vim-just = buildVimPlugin {
|
||||
pname = "vim-just";
|
||||
version = "2023-11-16";
|
||||
version = "2023-12-01";
|
||||
src = fetchFromGitHub {
|
||||
owner = "NoahTheDuke";
|
||||
repo = "vim-just";
|
||||
rev = "fda7259fc3b16af1d16e467c1482aac3bcc4df9a";
|
||||
sha256 = "0rfj8hknzwjp59x51wf99j4ymda4gnc2ly1rl3185dw4p3v7n4ph";
|
||||
rev = "90e299ec91fa8ff88f73150f824f77f86b0f867e";
|
||||
sha256 = "03kk30lskwhq5d1jmyhfws74l0iayrvsk7v0ki93k099k1fv5n7m";
|
||||
};
|
||||
meta.homepage = "https://github.com/NoahTheDuke/vim-just/";
|
||||
};
|
||||
|
||||
@@ -1921,12 +1921,12 @@
|
||||
};
|
||||
rbs = buildGrammar {
|
||||
language = "rbs";
|
||||
version = "0.0.0+rev=192eda4";
|
||||
version = "0.0.0+rev=23c69a4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "joker1007";
|
||||
repo = "tree-sitter-rbs";
|
||||
rev = "192eda46774fd0281cdd41d372d5b4da86148780";
|
||||
hash = "sha256-Bxgh7K3j0oPvZw7JX3kXFmaEAEKefB0A9ATmrbvXrB8=";
|
||||
rev = "23c69a4fa9803abc9d87b235ca88d52418250041";
|
||||
hash = "sha256-tdxx+feI0UIHkk1eS5VrIuYvOZWpuWF3NEioqrnZ+30=";
|
||||
};
|
||||
meta.homepage = "https://github.com/joker1007/tree-sitter-rbs";
|
||||
};
|
||||
|
||||
@@ -48,16 +48,16 @@
|
||||
, serviceSupport ? true
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "monado";
|
||||
version = "unstable-2023-08-22";
|
||||
version = "unstable-2023-11-09";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.freedesktop.org";
|
||||
owner = "monado";
|
||||
repo = "monado";
|
||||
rev = "4cc68f07c0f3c2fee57b01dde28a02e314d3bee6";
|
||||
sha256 = "sha256-VibdOSA/b4RmwwwXrwhivuiukNK10YazYF/p+YnqRZ8=";
|
||||
rev = "e983eecd73b1b91d2dfb356e1bc054e9202b2a7f";
|
||||
hash = "sha256-a4ukfmJbDkhr7P3NMTfbuhXjyOta3WCc5gswX7KUAw0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -135,16 +135,13 @@ stdenv.mkDerivation rec {
|
||||
patches = [
|
||||
# We don't have $HOME/.steam when building
|
||||
./force-enable-steamvr_lh.patch
|
||||
|
||||
# A recent (as of August 2023) SteamVR Beta has upgraded a driver interface which is incompatible with Monado
|
||||
./steamvr_lh-use-old-interface.patch
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Open source XR runtime";
|
||||
homepage = "https://monado.freedesktop.org/";
|
||||
license = licenses.boost;
|
||||
maintainers = with maintainers; [ expipiplus1 prusnak ];
|
||||
maintainers = with maintainers; [ Scrumplex expipiplus1 prusnak ];
|
||||
platforms = platforms.linux;
|
||||
mainProgram = "monado-cli";
|
||||
};
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
diff --git a/src/xrt/drivers/steamvr_lh/steamvr_lh.cpp b/src/xrt/drivers/steamvr_lh/steamvr_lh.cpp
|
||||
index 24b69fd..5b3a5ca 100644
|
||||
--- a/src/xrt/drivers/steamvr_lh/steamvr_lh.cpp
|
||||
+++ b/src/xrt/drivers/steamvr_lh/steamvr_lh.cpp
|
||||
@@ -138,7 +138,7 @@ Context::setup_hmd(const char *serial, vr::ITrackedDeviceServerDriver *driver)
|
||||
vr::EVRInitError err = driver->Activate(0);
|
||||
VERIFY(err == vr::VRInitError_None, std::to_string(err).c_str());
|
||||
|
||||
- auto *display = static_cast<vr::IVRDisplayComponent *>(driver->GetComponent(vr::IVRDisplayComponent_Version));
|
||||
+ auto *display = static_cast<vr::IVRDisplayComponent *>(driver->GetComponent("IVRDisplayComponent_003"));
|
||||
VERIFY(display, "IVRDisplayComponent is null");
|
||||
#undef VERIFY
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
# From NUR https://github.com/nix-community/nur-combined/blob/6bddae47680482383b5769dd3aa7d82b88e6cbc8/repos/renesat/pkgs/normcap/default.nix
|
||||
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
python3,
|
||||
fetchFromGitHub,
|
||||
tesseract4,
|
||||
leptonica,
|
||||
wl-clipboard
|
||||
}:
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "normcap";
|
||||
version = "0.4.4";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dynobo";
|
||||
repo = "normcap";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-dShtmoqS9TC3PHuwq24OEOhYfBHGhDCma8Du8QCkFuI=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
wl-clipboard
|
||||
];
|
||||
|
||||
nativeBuildInputs = with python3.pkgs; [
|
||||
poetry-core
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
tesseract4
|
||||
leptonica
|
||||
pyside6
|
||||
|
||||
# Test
|
||||
toml
|
||||
pytest-qt
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml --replace 'PySide6-Essentials = "6.5.1"' ""
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "OCR powered screen-capture tool to capture information instead of images";
|
||||
homepage = "https://dynobo.github.io/normcap/";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ cafkafk ];
|
||||
};
|
||||
}
|
||||
@@ -4,11 +4,11 @@
|
||||
lib,
|
||||
}: let
|
||||
pname = "upscayl";
|
||||
version = "2.9.1";
|
||||
version = "2.9.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/upscayl/upscayl/releases/download/v${version}/upscayl-${version}-linux.AppImage";
|
||||
hash = "sha256-x7tNGWXrg4hkr4d5QK4Z/cOmGGdbWLJ/GIASZjmiL4w=";
|
||||
hash = "sha256-H9/z0NIqGGJPipioWvv67vIFQ46RZr5+ycm3NQrO9ZE=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
|
||||
@@ -35,13 +35,13 @@ in appimageTools.wrapType2 rec {
|
||||
$out/share/applications/Chrysalis.desktop \
|
||||
--replace 'Exec=Chrysalis' 'Exec=${pname}'
|
||||
|
||||
cp -r ${appimageContents}/usr/share/icons $out/share
|
||||
install -Dm444 ${appimageContents}/usr/share/icons/hicolor/256x256/chrysalis.png -t $out/share/pixmaps
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A graphical configurator for Kaleidoscope-powered keyboards";
|
||||
homepage = "https://github.com/keyboardio/Chrysalis";
|
||||
license = licenses.gpl3;
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ aw ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
mainProgram = pname;
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "clipcat";
|
||||
version = "0.8.0";
|
||||
version = "0.9.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xrelkd";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-2Sh8VakHeAotdw1kkpRgNtLj1gnH1Ei7OC9INF/lkZo=";
|
||||
hash = "sha256-P/8C+Gfmcuy7DGbH8+y6ZYlRrmV5t9U/uiykZ4bERSU=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-cgyvIu56Ab3h6tgyQxtGsR0UPxgL65vb7fUAc0lMj5Q=";
|
||||
cargoHash = "sha256-r2J5ysvLl7hKXfW+BIF15vBygUkuwNj222P1AckUu0E=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
protobuf
|
||||
|
||||
@@ -8,10 +8,10 @@ buildGoModule rec {
|
||||
pname = "itd";
|
||||
version = "1.1.0";
|
||||
|
||||
# https://gitea.arsenm.dev/Arsen6331/itd/tags
|
||||
# https://gitea.elara.ws/Elara6331/itd/tags
|
||||
src = fetchFromGitea {
|
||||
domain = "gitea.arsenm.dev";
|
||||
owner = "Arsen6331";
|
||||
domain = "gitea.elara.ws";
|
||||
owner = "Elara6331";
|
||||
repo = "itd";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-95/9Qy0HhrX+ORuv6g1T4/Eq1hf539lYG5fTkLeY6B0=";
|
||||
@@ -34,7 +34,7 @@ buildGoModule rec {
|
||||
|
||||
meta = with lib; {
|
||||
description = "itd is a daemon to interact with the PineTime running InfiniTime";
|
||||
homepage = "https://gitea.arsenm.dev/Arsen6331/itd";
|
||||
homepage = "https://gitea.elara.ws/Elara6331/itd";
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ mindavi raphaelr ];
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "lscolors";
|
||||
version = "0.15.0";
|
||||
version = "0.16.0";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit version pname;
|
||||
sha256 = "sha256-C7aM9jlChRwPvYnBjLbV+sfbTHDVVi6evIR5PvT9jN4=";
|
||||
hash = "sha256-gLtQIqdU6syTo+Z+P59kIpwEtiGCr/DOom9+jA8Uq98=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-93FAEhl0WFXRq1SaoLRNDd/fy7NyDbeRFgIqUWAssQE=";
|
||||
cargoHash = "sha256-OA9iYGwKElvRaKoyelH9w5ZphoLKrbk8VXwZ2NyLLQY=";
|
||||
|
||||
buildFeatures = [ "nu-ansi-term" ];
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"packageVersion": "120.0-1",
|
||||
"packageVersion": "120.0.1-1",
|
||||
"source": {
|
||||
"rev": "120.0-1",
|
||||
"sha256": "1wms3kyimmfzl64rbphgap2sm87lwkl0pr24rx4rxf3px3bq97f3"
|
||||
"rev": "120.0.1-1",
|
||||
"sha256": "0kvfa97m7dq1b030d62zblpb445fkbgb2w19bckxwxv7mx36awy7"
|
||||
},
|
||||
"settings": {
|
||||
"rev": "b587388bdbe63511c478cb8b5f82c2e80040414c",
|
||||
"sha256": "03cw6wh7358pgld4qgs534pl2lnfvwc0xl2yyb3n3pyvmba6cyrp"
|
||||
"rev": "9dac02778ebed3e2614da52c36b7cede45f4f602",
|
||||
"sha256": "0flk6v50cyiaajzcz9gm1hig00vkw9xdbjd5rdxidrmhcqxy24vy"
|
||||
},
|
||||
"firefox": {
|
||||
"version": "120.0",
|
||||
"sha512": "31d5f9e1d4173280c8de6d9b8551bc6bba5e2c49b84f944f50d42002d5b39c2fb743bc130f26c81160388a102b8301b94a0a378ecdfa6f943860f971a860df8c"
|
||||
"version": "120.0.1",
|
||||
"sha512": "dd0e3eb234d58c39431d1f100834ef4bcc8cfb89ff471a37b948eda4dd3874b63b1979cda39a0db0dd3b4a579b5f09a7d2d1f39d26fd9f2b8d5635e4b8738b6c"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
, at-spi2-core
|
||||
, autoPatchelfHook
|
||||
, wrapGAppsHook
|
||||
, qt5
|
||||
, qt6
|
||||
, proprietaryCodecs ? false
|
||||
, vivaldi-ffmpeg-codecs
|
||||
}:
|
||||
@@ -51,11 +51,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "opera";
|
||||
version = "100.0.4815.47";
|
||||
version = "105.0.4970.21";
|
||||
|
||||
src = fetchurl {
|
||||
url = "${mirror}/${version}/linux/${pname}-stable_${version}_amd64.deb";
|
||||
hash = "sha256-746imLXqxzf9zK2QEVRuWkLA6m+HHXBYZFUwTD0HEVc=";
|
||||
hash = "sha256-fgbR7qAWKaZgxMeMo1/le8g1/zSoTl+5iIJeKl1Rc3Y=";
|
||||
};
|
||||
|
||||
unpackPhase = "dpkg-deb -x $src .";
|
||||
@@ -64,7 +64,7 @@ stdenv.mkDerivation rec {
|
||||
dpkg
|
||||
autoPatchelfHook
|
||||
wrapGAppsHook
|
||||
qt5.wrapQtAppsHook
|
||||
qt6.wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@@ -103,6 +103,7 @@ stdenv.mkDerivation rec {
|
||||
nss
|
||||
pango
|
||||
stdenv.cc.cc.lib
|
||||
qt6.qtbase
|
||||
];
|
||||
|
||||
runtimeDependencies = [
|
||||
@@ -128,6 +129,9 @@ stdenv.mkDerivation rec {
|
||||
mkdir -p $out/bin
|
||||
cp -r usr $out
|
||||
cp -r usr/share $out/share
|
||||
|
||||
# we already using QT6, autopatchelf wants to patch this as well
|
||||
rm $out/usr/lib/x86_64-linux-gnu/opera/libqt5_shim.so
|
||||
ln -s $out/usr/bin/opera $out/bin/opera
|
||||
'';
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
, gtk2-x11
|
||||
, withGTK3 ? true
|
||||
, gtk3
|
||||
, libglvnd
|
||||
, libXt
|
||||
, libpulseaudio
|
||||
, makeDesktopItem
|
||||
@@ -18,7 +19,7 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "palemoon-bin";
|
||||
version = "32.5.0";
|
||||
version = "32.5.1";
|
||||
|
||||
src = fetchzip {
|
||||
urls = [
|
||||
@@ -26,9 +27,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"https://rm-us.palemoon.org/release/palemoon-${finalAttrs.version}.linux-x86_64-gtk${if withGTK3 then "3" else "2"}.tar.xz"
|
||||
];
|
||||
hash = if withGTK3 then
|
||||
"sha256-1MJ5K9Zc/BHeQwwlq3XyUV8XTFEpPytNyTnsDpE1tBI="
|
||||
"sha256-hWqL/WoRRigw8cNeJImOQLM8hewyS3PYNGr2WYP+cMk="
|
||||
else
|
||||
"sha256-xXunZTqoc2A+ilosRUUluxDwewD3xwITF5nb5Lbyv7Y=";
|
||||
"sha256-dlBnXP3WUgQ0spkLRowfzMcPArhGfpowsvwgCA+kvUA=";
|
||||
};
|
||||
|
||||
preferLocalBuild = true;
|
||||
@@ -147,6 +148,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
gappsWrapperArgs+=(
|
||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [
|
||||
ffmpeg
|
||||
libglvnd
|
||||
libpulseaudio
|
||||
]}"
|
||||
)
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
buildGoModule rec {
|
||||
pname = "bosh-cli";
|
||||
|
||||
version = "7.4.1";
|
||||
version = "7.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cloudfoundry";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-T8fPD0i15U/PzDOAVP0sifLYFHr76jD1o7q+nn+N0cY=";
|
||||
sha256 = "sha256-LWfS722V0ubh4QaUNuGwrvFsVAzA9Hd5xLlDfTG0PBs=";
|
||||
};
|
||||
vendorHash = null;
|
||||
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "eks-node-viewer";
|
||||
version = "0.5.0";
|
||||
version = "0.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "awslabs";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-kfX9BzARDWUOBIu67j60K38uwkRELxd/gXtEHOHAXS8=";
|
||||
sha256 = "sha256-BK84hxbwZSJDO5WoyborJnVBS5pB69jTMU1csgiT0sw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-7axI7R8cTntc1IcOwVPmPj8MHeIvhbnkYKQdqu5fZOU=";
|
||||
vendorHash = "sha256-EJAL5jNftA/g5H6WUMBJ98EyRp7QJ1C53EKr6GRz71I=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "dnscontrol";
|
||||
version = "4.6.1";
|
||||
version = "4.6.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "StackExchange";
|
||||
repo = "dnscontrol";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-FJxr3uq2f8jDG3g06SRO8sTIc6qHqSAOJVYHr4Ug1ag=";
|
||||
hash = "sha256-FcEpUNFPwottpuIsO53voucKULTkWOdbDgEXKYLb9LQ=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-O7uuUkS9kX0TdevSg1mrrPMVl4kMZW3rwoIVb/eaNiM=";
|
||||
vendorHash = "sha256-cW6urAJ3H30HY4Q7JLWFsQebg6YhdGSBgICWMl85v9U=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
||||
@@ -109,6 +109,7 @@ stdenv.mkDerivation rec {
|
||||
description = "Desktop client for the Matrix protocol";
|
||||
homepage = "https://github.com/Nheko-Reborn/nheko";
|
||||
license = licenses.gpl3Plus;
|
||||
mainProgram = "nheko";
|
||||
maintainers = with maintainers; [ ekleog fpletz ];
|
||||
platforms = platforms.all;
|
||||
# Should be fixable if a higher clang version is used, see:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{ callPackage }: builtins.mapAttrs (pname: attrs: callPackage ./generic.nix (attrs // { inherit pname; })) {
|
||||
signal-desktop = {
|
||||
dir = "Signal";
|
||||
version = "6.39.1";
|
||||
hash = "sha256-dDbUpxXpQg1SoVyYO33Nczqf+WmWDPNE6cmw792wjGY=";
|
||||
version = "6.40.0";
|
||||
hash = "sha256-vyXHlycPSyEyv938IKzGM6pdERHHerx2CLY/U+WMrH4=";
|
||||
};
|
||||
signal-desktop-beta = {
|
||||
dir = "Signal Beta";
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libutp";
|
||||
version = "unstable-2023-10-16";
|
||||
version = "unstable-2023-11-14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
# Use transmission fork from post-3.4-transmission branch
|
||||
owner = "transmission";
|
||||
repo = pname;
|
||||
rev = "2589200eac82fc91b65979680e4b3c026dff0278";
|
||||
hash = "sha256-wsDqdbMWVm3ubTbg5XClEWutJz1irSIazVLFeCyAAL4=";
|
||||
rev = "52645d6d0fb16009e11d2f84469d2e43b7b6b48a";
|
||||
hash = "sha256-pcPVkDEEtriN9zlEcVFKwKhhh51wpJGxYlcu7bH1RkI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
, libjpeg, libredirect, tzdata, cacert, systemd, libcxxabi, libcxx, e2fsprogs, symlinkJoin
|
||||
, libpulseaudio, pcsclite, glib-networking, llvmPackages_12, opencv4
|
||||
, libfaketime
|
||||
, libinput, libcap, libjson, libsecret, libcanberra-gtk3
|
||||
|
||||
, homepage, version, prefix, hash
|
||||
|
||||
@@ -38,7 +39,7 @@ stdenv.mkDerivation rec {
|
||||
${homepage}
|
||||
|
||||
(if you do not find version ${version} there, try at
|
||||
https://www.citrix.com/downloads/workspace-app/
|
||||
https://www.citrix.com/downloads/workspace-app/)
|
||||
|
||||
Once you have downloaded the file, please use the following command and re-run the
|
||||
installation:
|
||||
@@ -80,11 +81,16 @@ stdenv.mkDerivation rec {
|
||||
gtk_engines
|
||||
heimdal
|
||||
krb5
|
||||
libcap
|
||||
libcanberra-gtk3
|
||||
libcxx
|
||||
libcxxabi
|
||||
libinput
|
||||
libjpeg
|
||||
libjson
|
||||
libpng12
|
||||
libpulseaudio
|
||||
libsecret
|
||||
libsoup
|
||||
libvorbis
|
||||
libxml2
|
||||
@@ -119,6 +125,8 @@ stdenv.mkDerivation rec {
|
||||
xorg.libXrender
|
||||
xorg.libXtst
|
||||
xorg.libxcb
|
||||
xorg.xprop
|
||||
xorg.xdpyinfo
|
||||
];
|
||||
|
||||
installPhase = let
|
||||
|
||||
@@ -33,6 +33,17 @@ let
|
||||
x86hash = "4a7da238286ae28d7baf0fefa1e7e09d077c8bc56c2bf7bec00da42c331bee59";
|
||||
x64suffix = "17";
|
||||
x86suffix = "17";
|
||||
homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest21.html";
|
||||
};
|
||||
|
||||
"23.09.0" = {
|
||||
major = "23";
|
||||
minor = "9";
|
||||
patch = "0";
|
||||
x64hash = "7b06339654aa27258d6dfa922828b43256e780b282d07109f452246c7aa27514";
|
||||
x86hash = "95436fb289602cf31c65b7df89da145fc170233cb2e758a2f11116f15b57d382";
|
||||
x64suffix = "24";
|
||||
x86suffix = "24";
|
||||
homepage = "https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html";
|
||||
};
|
||||
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
{ callPackage, fetchurl, lib, stdenv
|
||||
, ocamlPackages, coqPackages, rubber, hevea, emacs }:
|
||||
, ocamlPackages, coqPackages, rubber, hevea, emacs
|
||||
, version ? "1.7.0"
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "why3";
|
||||
version = "1.6.0";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://why3.gitlabpages.inria.fr/releases/${pname}-${version}.tar.gz";
|
||||
hash = "sha256-hFvM6kHScaCtcHCc6Vezl9CR7BFbiKPoTEh7kj0ZJxw=";
|
||||
hash = {
|
||||
"1.7.0" = "sha256-rygrjzuJVukOvpuXTG/yeoEP98ZFkLQHObgc3My1PVY=";
|
||||
"1.6.0" = "sha256-hFvM6kHScaCtcHCc6Vezl9CR7BFbiKPoTEh7kj0ZJxw=";
|
||||
}."${version}";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
@@ -20,14 +20,14 @@ in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "simgrid";
|
||||
version = "3.34";
|
||||
version = "3.35";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "framagit.org";
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-EVTpW9jD1h8T2KRlDIqptKS6Wv1dVDfyJbXxrpsgmoo=";
|
||||
sha256 = "sha256-WaFANZiPfiN/utfNZbwyH5mxgJNWafPMCcL863V8w0g=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ boost ];
|
||||
|
||||
@@ -1,122 +1,184 @@
|
||||
{ cmake
|
||||
{ cereal_1_3_2
|
||||
, cmake
|
||||
, fetchFromGitHub
|
||||
, fetchFromGitLab
|
||||
, git
|
||||
, glfw
|
||||
, glm
|
||||
, lib
|
||||
, libGL
|
||||
, spdlog
|
||||
, stdenv
|
||||
, xorg
|
||||
}:
|
||||
|
||||
let
|
||||
# See https://github.com/deepmind/mujoco/blob/c9246e1f5006379d599e0bcddf159a8616d31441/cmake/MujocoDependencies.cmake#L17-L55
|
||||
abseil-cpp = fetchFromGitHub {
|
||||
owner = "abseil";
|
||||
repo = "abseil-cpp";
|
||||
rev = "c2435f8342c2d0ed8101cb43adfd605fdc52dca2";
|
||||
hash = "sha256-PLoI7ix+reUqkZ947kWzls8lujYqWXk9A9a55UcfahI=";
|
||||
};
|
||||
benchmark = fetchFromGitHub {
|
||||
owner = "google";
|
||||
repo = "benchmark";
|
||||
rev = "2dd015dfef425c866d9a43f2c67d8b52d709acb6";
|
||||
hash = "sha256-pUW9YVaujs/y00/SiPqDgK4wvVsaM7QUp/65k0t7Yr0=";
|
||||
};
|
||||
ccd = fetchFromGitHub {
|
||||
owner = "danfis";
|
||||
repo = "libccd";
|
||||
rev = "7931e764a19ef6b21b443376c699bbc9c6d4fba8";
|
||||
hash = "sha256-TIZkmqQXa0+bSWpqffIgaBela0/INNsX9LPM026x1Wk=";
|
||||
};
|
||||
eigen3 = fetchFromGitLab {
|
||||
owner = "libeigen";
|
||||
repo = "eigen";
|
||||
rev = "211c5dfc6741a5570ad007983c113ef4d144f9f3";
|
||||
hash = "sha256-oT/h8QkL0vwaflh46Zsnu9Db1b65AP6p//nAga8M5jI=";
|
||||
};
|
||||
googletest = fetchFromGitHub {
|
||||
owner = "google";
|
||||
repo = "googletest";
|
||||
rev = "b796f7d44681514f58a683a3a71ff17c94edb0c1";
|
||||
hash = "sha256-LVLEn+e7c8013pwiLzJiiIObyrlbBHYaioO/SWbItPQ=";
|
||||
};
|
||||
lodepng = fetchFromGitHub {
|
||||
owner = "lvandeve";
|
||||
repo = "lodepng";
|
||||
rev = "b4ed2cd7ecf61d29076169b49199371456d4f90b";
|
||||
hash = "sha256-5cCkdj/izP4e99BKfs/Mnwu9aatYXjlyxzzYiMD/y1M=";
|
||||
};
|
||||
qhull = fetchFromGitHub {
|
||||
owner = "qhull";
|
||||
repo = "qhull";
|
||||
rev = "0c8fc90d2037588024d9964515c1e684f6007ecc";
|
||||
hash = "sha256-Ptzxad3ewmKJbbcmrBT+os4b4SR976zlCG9F0nq0x94=";
|
||||
};
|
||||
tinyobjloader = fetchFromGitHub {
|
||||
owner = "tinyobjloader";
|
||||
repo = "tinyobjloader";
|
||||
rev = "1421a10d6ed9742f5b2c1766d22faa6cfbc56248";
|
||||
hash = "sha256-9z2Ne/WPCiXkQpT8Cun/pSGUwgClYH+kQ6Dx1JvW6w0=";
|
||||
};
|
||||
tinyxml2 = fetchFromGitHub {
|
||||
owner = "leethomason";
|
||||
repo = "tinyxml2";
|
||||
rev = "9a89766acc42ddfa9e7133c7d81a5bda108a0ade";
|
||||
hash = "sha256-YGAe4+Ttv/xeou+9FoJjmQCKgzupTYdDhd+gzvtz/88=";
|
||||
pin = {
|
||||
|
||||
# See https://github.com/google-deepmind/mujoco/blob/3.0.0/cmake/MujocoDependencies.cmake#L17-L64
|
||||
abseil-cpp = fetchFromGitHub {
|
||||
owner = "abseil";
|
||||
repo = "abseil-cpp";
|
||||
rev = "fb3621f4f897824c0dbe0615fa94543df6192f30";
|
||||
hash = "sha256-uNGrTNg5G5xFGtc+BSWE389x0tQ/KxJQLHfebNWas/k=";
|
||||
};
|
||||
benchmark = fetchFromGitHub {
|
||||
owner = "google";
|
||||
repo = "benchmark";
|
||||
rev = "344117638c8ff7e239044fd0fa7085839fc03021";
|
||||
hash = "sha256-gztnxui9Fe/FTieMjdvfJjWHjkImtlsHn6fM1FruyME=";
|
||||
};
|
||||
ccd = fetchFromGitHub {
|
||||
owner = "danfis";
|
||||
repo = "libccd";
|
||||
rev = "7931e764a19ef6b21b443376c699bbc9c6d4fba8";
|
||||
hash = "sha256-TIZkmqQXa0+bSWpqffIgaBela0/INNsX9LPM026x1Wk=";
|
||||
};
|
||||
eigen3 = fetchFromGitLab {
|
||||
owner = "libeigen";
|
||||
repo = "eigen";
|
||||
rev = "e8515f78ac098329ab9f8cab21c87caede090a3f";
|
||||
hash = "sha256-HXKtFJsKGpug+wNPjYynTuyaG0igo3oG4rFQktveh1g=";
|
||||
};
|
||||
googletest = fetchFromGitHub {
|
||||
owner = "google";
|
||||
repo = "googletest";
|
||||
rev = "f8d7d77c06936315286eb55f8de22cd23c188571";
|
||||
hash = "sha256-t0RchAHTJbuI5YW4uyBPykTvcjy90JW9AOPNjIhwh6U=";
|
||||
};
|
||||
lodepng = fetchFromGitHub {
|
||||
owner = "lvandeve";
|
||||
repo = "lodepng";
|
||||
rev = "b4ed2cd7ecf61d29076169b49199371456d4f90b";
|
||||
hash = "sha256-5cCkdj/izP4e99BKfs/Mnwu9aatYXjlyxzzYiMD/y1M=";
|
||||
};
|
||||
qhull = fetchFromGitHub {
|
||||
owner = "qhull";
|
||||
repo = "qhull";
|
||||
rev = "0c8fc90d2037588024d9964515c1e684f6007ecc";
|
||||
hash = "sha256-Ptzxad3ewmKJbbcmrBT+os4b4SR976zlCG9F0nq0x94=";
|
||||
};
|
||||
tinyobjloader = fetchFromGitHub {
|
||||
owner = "tinyobjloader";
|
||||
repo = "tinyobjloader";
|
||||
rev = "1421a10d6ed9742f5b2c1766d22faa6cfbc56248";
|
||||
hash = "sha256-9z2Ne/WPCiXkQpT8Cun/pSGUwgClYH+kQ6Dx1JvW6w0=";
|
||||
};
|
||||
tinyxml2 = fetchFromGitHub {
|
||||
owner = "leethomason";
|
||||
repo = "tinyxml2";
|
||||
rev = "9a89766acc42ddfa9e7133c7d81a5bda108a0ade";
|
||||
hash = "sha256-YGAe4+Ttv/xeou+9FoJjmQCKgzupTYdDhd+gzvtz/88=";
|
||||
};
|
||||
marchingcubecpp = fetchFromGitHub {
|
||||
owner = "aparis69";
|
||||
repo = "MarchingCubeCpp";
|
||||
rev = "5b79e5d6bded086a0abe276a4b5a69fc17ae9bf1";
|
||||
hash = "sha256-L0DH1GJZ/3vatQAU/KZj/2xTKE6Fwcw9eQYzLdqX2N4=";
|
||||
};
|
||||
|
||||
tmd = stdenv.mkDerivation rec {
|
||||
name = "TriangleMeshDistance";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "InteractiveComputerGraphics";
|
||||
repo = name;
|
||||
rev = "e55a15c20551f36242fd6368df099a99de71d43a";
|
||||
hash = "sha256-vj6TMMT8mp7ciLa5nzVAhMWPcAHXq+ZwHlWsRA3uCmg=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/include/tmd
|
||||
cp ${name}/include/tmd/${name}.h $out/include/tmd/
|
||||
'';
|
||||
};
|
||||
|
||||
sdflib = stdenv.mkDerivation rec {
|
||||
name = "SdfLib";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "UPC-ViRVIG";
|
||||
repo = name;
|
||||
rev = "7c49cfba9bbec763b5d0f7b90b26555f3dde8088";
|
||||
hash = "sha256-5bnQ3rHH9Pw1jRVpZpamFnhIJHWnGm6krgZgIBqNtVg=";
|
||||
};
|
||||
|
||||
patches = [ ./sdflib-system-deps.patch ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DSDFLIB_USE_ASSIMP=OFF"
|
||||
"-DSDFLIB_USE_OPENMP=OFF"
|
||||
"-DSDFLIB_USE_ENOKI=OFF"
|
||||
"-DSDFLIB_USE_SYSTEM_GLM=ON"
|
||||
"-DSDFLIB_USE_SYSTEM_SPDLOG=ON"
|
||||
"-DSDFLIB_USE_SYSTEM_CEREAL=ON"
|
||||
"-DSDFLIB_USE_SYSTEM_TRIANGLEMESHDISTANCE=ON"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [
|
||||
pin.tmd
|
||||
|
||||
# Mainline. The otherwise pinned glm realease from 2018 does
|
||||
# not build due to test failures and missing files.
|
||||
glm
|
||||
|
||||
spdlog
|
||||
cereal_1_3_2
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
# See https://github.com/deepmind/mujoco/blob/c9246e1f5006379d599e0bcddf159a8616d31441/simulate/cmake/SimulateDependencies.cmake#L32-L35
|
||||
glfw3 = fetchFromGitHub {
|
||||
owner = "glfw";
|
||||
repo = "glfw";
|
||||
rev = "7482de6071d21db77a7236155da44c172a7f6c9e";
|
||||
hash = "sha256-4+H0IXjAwbL5mAWfsIVhW0BSJhcWjkQx4j2TrzZ3aIo=";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "mujoco";
|
||||
version = "2.3.7";
|
||||
version = "3.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "deepmind";
|
||||
owner = "google-deepmind";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-LgpA+iPGqciHuWBSD6/7yvZ7p+vo48ZYKjjrDZSnAwE=";
|
||||
hash = "sha256-UXE+7KDti8RarpoJoo9Ei3TgW/Qdnj3ASRo8uTWhGrU=";
|
||||
};
|
||||
|
||||
patches = [ ./dependencies.patch ];
|
||||
patches = [ ./mujoco-system-deps-dont-fetch.patch ];
|
||||
|
||||
nativeBuildInputs = [ cmake git ];
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
buildInputs = [
|
||||
libGL
|
||||
xorg.libX11
|
||||
xorg.libXcursor
|
||||
xorg.libXext
|
||||
xorg.libXi
|
||||
xorg.libXinerama
|
||||
xorg.libXrandr
|
||||
pin.sdflib
|
||||
glm
|
||||
|
||||
# non-numerical
|
||||
spdlog
|
||||
cereal_1_3_2
|
||||
glfw
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DMUJOCO_USE_SYSTEM_sdflib=ON"
|
||||
"-DMUJOCO_SIMULATE_USE_SYSTEM_GLFW=ON"
|
||||
"-DMUJOCO_SAMPLES_USE_SYSTEM_GLFW=ON"
|
||||
];
|
||||
|
||||
# Move things into place so that cmake doesn't try downloading dependencies.
|
||||
preConfigure = ''
|
||||
mkdir -p build/_deps
|
||||
ln -s ${abseil-cpp} build/_deps/abseil-cpp-src
|
||||
ln -s ${benchmark} build/_deps/benchmark-src
|
||||
ln -s ${ccd} build/_deps/ccd-src
|
||||
ln -s ${eigen3} build/_deps/eigen3-src
|
||||
ln -s ${glfw3} build/_deps/glfw3-src
|
||||
ln -s ${googletest} build/_deps/googletest-src
|
||||
ln -s ${lodepng} build/_deps/lodepng-src
|
||||
ln -s ${qhull} build/_deps/qhull-src
|
||||
ln -s ${tinyobjloader} build/_deps/tinyobjloader-src
|
||||
ln -s ${tinyxml2} build/_deps/tinyxml2-src
|
||||
ln -s ${pin.abseil-cpp} build/_deps/abseil-cpp-src
|
||||
ln -s ${pin.benchmark} build/_deps/benchmark-src
|
||||
ln -s ${pin.ccd} build/_deps/ccd-src
|
||||
ln -s ${pin.eigen3} build/_deps/eigen3-src
|
||||
ln -s ${pin.googletest} build/_deps/googletest-src
|
||||
ln -s ${pin.lodepng} build/_deps/lodepng-src
|
||||
ln -s ${pin.qhull} build/_deps/qhull-src
|
||||
ln -s ${pin.tinyobjloader} build/_deps/tinyobjloader-src
|
||||
ln -s ${pin.tinyxml2} build/_deps/tinyxml2-src
|
||||
ln -s ${pin.marchingcubecpp} build/_deps/marchingcubecpp-src
|
||||
'';
|
||||
|
||||
passthru.pin = { inherit (pin) lodepng eigen3 abseil-cpp; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Multi-Joint dynamics with Contact. A general purpose physics simulator.";
|
||||
homepage = "https://mujoco.org/";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ samuela ];
|
||||
maintainers = with maintainers; [ samuela tmplt ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,114 +0,0 @@
|
||||
diff --git a/cmake/MujocoDependencies.cmake b/cmake/MujocoDependencies.cmake
|
||||
index 3e322ea..980aace 100644
|
||||
--- a/cmake/MujocoDependencies.cmake
|
||||
+++ b/cmake/MujocoDependencies.cmake
|
||||
@@ -87,8 +87,6 @@ set(BUILD_SHARED_LIBS
|
||||
if(NOT TARGET lodepng)
|
||||
FetchContent_Declare(
|
||||
lodepng
|
||||
- GIT_REPOSITORY https://github.com/lvandeve/lodepng.git
|
||||
- GIT_TAG ${MUJOCO_DEP_VERSION_lodepng}
|
||||
)
|
||||
|
||||
FetchContent_GetProperties(lodepng)
|
||||
@@ -127,10 +125,6 @@ findorfetch(
|
||||
qhull
|
||||
LIBRARY_NAME
|
||||
qhull
|
||||
- GIT_REPO
|
||||
- https://github.com/qhull/qhull.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_qhull}
|
||||
TARGETS
|
||||
qhull
|
||||
EXCLUDE_FROM_ALL
|
||||
@@ -151,10 +145,6 @@ findorfetch(
|
||||
tinyxml2
|
||||
LIBRARY_NAME
|
||||
tinyxml2
|
||||
- GIT_REPO
|
||||
- https://github.com/leethomason/tinyxml2.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_tinyxml2}
|
||||
TARGETS
|
||||
tinyxml2
|
||||
EXCLUDE_FROM_ALL
|
||||
@@ -169,10 +159,6 @@ findorfetch(
|
||||
tinyobjloader
|
||||
LIBRARY_NAME
|
||||
tinyobjloader
|
||||
- GIT_REPO
|
||||
- https://github.com/tinyobjloader/tinyobjloader.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_tinyobjloader}
|
||||
TARGETS
|
||||
tinyobjloader
|
||||
EXCLUDE_FROM_ALL
|
||||
@@ -187,10 +173,6 @@ findorfetch(
|
||||
ccd
|
||||
LIBRARY_NAME
|
||||
ccd
|
||||
- GIT_REPO
|
||||
- https://github.com/danfis/libccd.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_ccd}
|
||||
TARGETS
|
||||
ccd
|
||||
EXCLUDE_FROM_ALL
|
||||
@@ -227,10 +209,6 @@ if(MUJOCO_BUILD_TESTS)
|
||||
absl
|
||||
LIBRARY_NAME
|
||||
abseil-cpp
|
||||
- GIT_REPO
|
||||
- https://github.com/abseil/abseil-cpp.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_abseil}
|
||||
TARGETS
|
||||
absl::core_headers
|
||||
EXCLUDE_FROM_ALL
|
||||
@@ -254,10 +232,6 @@ if(MUJOCO_BUILD_TESTS)
|
||||
GTest
|
||||
LIBRARY_NAME
|
||||
googletest
|
||||
- GIT_REPO
|
||||
- https://github.com/google/googletest.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_gtest}
|
||||
TARGETS
|
||||
gtest
|
||||
gmock
|
||||
@@ -288,10 +262,6 @@ if(MUJOCO_BUILD_TESTS)
|
||||
benchmark
|
||||
LIBRARY_NAME
|
||||
benchmark
|
||||
- GIT_REPO
|
||||
- https://github.com/google/benchmark.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_benchmark}
|
||||
TARGETS
|
||||
benchmark::benchmark
|
||||
benchmark::benchmark_main
|
||||
@@ -308,8 +278,6 @@ if(MUJOCO_TEST_PYTHON_UTIL)
|
||||
|
||||
FetchContent_Declare(
|
||||
Eigen3
|
||||
- GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
|
||||
- GIT_TAG ${MUJOCO_DEP_VERSION_Eigen3}
|
||||
)
|
||||
|
||||
FetchContent_GetProperties(Eigen3)
|
||||
diff --git a/simulate/cmake/SimulateDependencies.cmake b/simulate/cmake/SimulateDependencies.cmake
|
||||
index fa539c2..5985d5a 100644
|
||||
--- a/simulate/cmake/SimulateDependencies.cmake
|
||||
+++ b/simulate/cmake/SimulateDependencies.cmake
|
||||
@@ -81,10 +81,6 @@ findorfetch(
|
||||
glfw3
|
||||
LIBRARY_NAME
|
||||
glfw3
|
||||
- GIT_REPO
|
||||
- https://github.com/glfw/glfw.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_glfw3}
|
||||
TARGETS
|
||||
glfw
|
||||
EXCLUDE_FROM_ALL
|
||||
@@ -0,0 +1,538 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 285250b..32d03e3 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -92,7 +92,7 @@ add_subdirectory(src/render)
|
||||
add_subdirectory(src/thread)
|
||||
add_subdirectory(src/ui)
|
||||
|
||||
-target_compile_definitions(mujoco PRIVATE _GNU_SOURCE CCD_STATIC_DEFINE MUJOCO_DLL_EXPORTS -DMC_IMPLEM_ENABLE)
|
||||
+target_compile_definitions(mujoco PRIVATE _GNU_SOURCE MUJOCO_DLL_EXPORTS -DMC_IMPLEM_ENABLE)
|
||||
if(MUJOCO_ENABLE_AVX_INTRINSICS)
|
||||
target_compile_definitions(mujoco PUBLIC mjUSEPLATFORMSIMD)
|
||||
endif()
|
||||
@@ -117,7 +117,7 @@ target_link_libraries(
|
||||
lodepng
|
||||
qhullstatic_r
|
||||
tinyobjloader
|
||||
- tinyxml2
|
||||
+ tinyxml2::tinyxml2
|
||||
)
|
||||
|
||||
set_target_properties(
|
||||
diff --git a/cmake/MujocoDependencies.cmake b/cmake/MujocoDependencies.cmake
|
||||
index 4e3e2c8..f6143d9 100644
|
||||
--- a/cmake/MujocoDependencies.cmake
|
||||
+++ b/cmake/MujocoDependencies.cmake
|
||||
@@ -90,153 +90,203 @@ set(BUILD_SHARED_LIBS
|
||||
CACHE INTERNAL "Build SHARED libraries"
|
||||
)
|
||||
|
||||
+
|
||||
if(NOT TARGET lodepng)
|
||||
- FetchContent_Declare(
|
||||
+ fetchcontent_declare(
|
||||
lodepng
|
||||
- GIT_REPOSITORY https://github.com/lvandeve/lodepng.git
|
||||
- GIT_TAG ${MUJOCO_DEP_VERSION_lodepng}
|
||||
)
|
||||
+endif()
|
||||
+
|
||||
+if(NOT TARGET lodepng)
|
||||
+ if(NOT MUJOCO_USE_SYSTEM_lodepng)
|
||||
+ fetchcontent_declare(
|
||||
+ lodepng
|
||||
+ GIT_REPOSITORY https://github.com/lvandeve/lodepng.git
|
||||
+ GIT_TAG ${MUJOCO_DEP_VERSION_lodepng}
|
||||
+ )
|
||||
|
||||
- FetchContent_GetProperties(lodepng)
|
||||
- if(NOT lodepng_POPULATED)
|
||||
- FetchContent_Populate(lodepng)
|
||||
- # This is not a CMake project.
|
||||
- set(LODEPNG_SRCS ${lodepng_SOURCE_DIR}/lodepng.cpp)
|
||||
- set(LODEPNG_HEADERS ${lodepng_SOURCE_DIR}/lodepng.h)
|
||||
- add_library(lodepng STATIC ${LODEPNG_HEADERS} ${LODEPNG_SRCS})
|
||||
- target_compile_options(lodepng PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||
- target_link_options(lodepng PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||
- target_include_directories(lodepng PUBLIC ${lodepng_SOURCE_DIR})
|
||||
+ fetchcontent_getproperties(lodepng)
|
||||
+ if(NOT lodepng_POPULATED)
|
||||
+ fetchcontent_populate(lodepng)
|
||||
+ # This is not a CMake project.
|
||||
+ set(LODEPNG_SRCS ${lodepng_SOURCE_DIR}/lodepng.cpp)
|
||||
+ set(LODEPNG_HEADERS ${lodepng_SOURCE_DIR}/lodepng.h)
|
||||
+ add_library(lodepng STATIC ${LODEPNG_HEADERS} ${LODEPNG_SRCS})
|
||||
+ target_compile_options(lodepng PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||
+ target_link_options(lodepng PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||
+ target_include_directories(lodepng PUBLIC ${lodepng_SOURCE_DIR})
|
||||
+ endif()
|
||||
+ else()
|
||||
+ find_package(lodepng REQUIRED)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT TARGET marchingcubecpp)
|
||||
- FetchContent_Declare(
|
||||
+ fetchcontent_declare(
|
||||
marchingcubecpp
|
||||
- GIT_REPOSITORY https://github.com/aparis69/MarchingCubeCpp.git
|
||||
- GIT_TAG ${MUJOCO_DEP_VERSION_MarchingCubeCpp}
|
||||
)
|
||||
|
||||
- FetchContent_GetProperties(marchingcubecpp)
|
||||
+ fetchcontent_getproperties(marchingcubecpp)
|
||||
if(NOT marchingcubecpp_POPULATED)
|
||||
- FetchContent_Populate(marchingcubecpp)
|
||||
+ fetchcontent_populate(marchingcubecpp)
|
||||
include_directories(${marchingcubecpp_SOURCE_DIR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
+option(MUJOCO_USE_SYSTEM_qhull "Use installed qhull version." OFF)
|
||||
+mark_as_advanced(MUJOCO_USE_SYSTEM_qhull)
|
||||
+
|
||||
set(QHULL_ENABLE_TESTING OFF)
|
||||
|
||||
findorfetch(
|
||||
USE_SYSTEM_PACKAGE
|
||||
- OFF
|
||||
+ ${MUJOCO_USE_SYSTEM_qhull}
|
||||
PACKAGE_NAME
|
||||
- qhull
|
||||
+ Qhull
|
||||
LIBRARY_NAME
|
||||
qhull
|
||||
- GIT_REPO
|
||||
- https://github.com/qhull/qhull.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_qhull}
|
||||
TARGETS
|
||||
qhull
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
-# MuJoCo includes a file from libqhull_r which is not exported by the qhull include directories.
|
||||
-# Add it to the target.
|
||||
-target_include_directories(
|
||||
- qhullstatic_r INTERFACE $<BUILD_INTERFACE:${qhull_SOURCE_DIR}/src/libqhull_r>
|
||||
-)
|
||||
-target_compile_options(qhullstatic_r PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||
-target_link_options(qhullstatic_r PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||
+
|
||||
+if(NOT MUJOCO_USE_SYSTEM_qhull)
|
||||
+ # MuJoCo includes a file from libqhull_r which is not exported by the qhull include directories.
|
||||
+ # Add it to the target.
|
||||
+ target_include_directories(
|
||||
+ qhullstatic_r INTERFACE $<BUILD_INTERFACE:${qhull_SOURCE_DIR}/src/libqhull_r>
|
||||
+ )
|
||||
+ target_compile_options(qhullstatic_r PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||
+ target_link_options(qhullstatic_r PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||
+else()
|
||||
+ if(NOT TARGET qhullstatic_r)
|
||||
+ add_library(qhullstatic_r INTERFACE)
|
||||
+ set_target_properties(qhullstatic_r PROPERTIES INTERFACE_LINK_LIBRARIES Qhull::qhull_r)
|
||||
+
|
||||
+ # Workaround as headers are installed in <prefix>/include/libqhull_r/something.h
|
||||
+ # but mujoco include them as #include <something.h>
|
||||
+ get_property(qhull_include_dirs TARGET Qhull::qhull_r PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
|
||||
+ foreach(qhull_include_dir IN LISTS qhull_include_dirs)
|
||||
+ target_include_directories(qhullstatic_r INTERFACE ${qhull_include_dirs}/libqhull_r)
|
||||
+ endforeach()
|
||||
+ target_include_directories(qhullstatic_r INTERFACE )
|
||||
+ endif()
|
||||
+endif()
|
||||
+
|
||||
+option(MUJOCO_USE_SYSTEM_tinyxml2 "Use installed tinyxml2 version." OFF)
|
||||
+mark_as_advanced(MUJOCO_USE_SYSTEM_tinyxml2)
|
||||
|
||||
set(tinyxml2_BUILD_TESTING OFF)
|
||||
findorfetch(
|
||||
USE_SYSTEM_PACKAGE
|
||||
- OFF
|
||||
+ ${MUJOCO_USE_SYSTEM_tinyxml2}
|
||||
PACKAGE_NAME
|
||||
tinyxml2
|
||||
LIBRARY_NAME
|
||||
tinyxml2
|
||||
- GIT_REPO
|
||||
- https://github.com/leethomason/tinyxml2.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_tinyxml2}
|
||||
TARGETS
|
||||
- tinyxml2
|
||||
+ tinyxml2::tinyxml2
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
-target_compile_options(tinyxml2 PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||
-target_link_options(tinyxml2 PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||
+
|
||||
+if(NOT MUJOCO_USE_SYSTEM_tinyxml2)
|
||||
+ target_compile_options(tinyxml2 PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||
+ target_link_options(tinyxml2 PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||
+endif()
|
||||
+
|
||||
+option(MUJOCO_USE_SYSTEM_tinyobjloader "Use installed tinyobjloader version." OFF)
|
||||
+mark_as_advanced(MUJOCO_USE_SYSTEM_tinyobjloader)
|
||||
|
||||
findorfetch(
|
||||
USE_SYSTEM_PACKAGE
|
||||
- OFF
|
||||
+ ${MUJOCO_USE_SYSTEM_tinyobjloader}
|
||||
PACKAGE_NAME
|
||||
tinyobjloader
|
||||
LIBRARY_NAME
|
||||
tinyobjloader
|
||||
- GIT_REPO
|
||||
- https://github.com/tinyobjloader/tinyobjloader.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_tinyobjloader}
|
||||
TARGETS
|
||||
tinyobjloader
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
|
||||
+if(MUJOCO_USE_SYSTEM_tinyobjloader)
|
||||
+ # As of tinyobjloader v2.0.0rc10, the tinyobjloader target is named tinyobjloader in the build,
|
||||
+ # but tinyobjloader::tinyobjloader when it is installed. To deal with this, if tinyobjloader is
|
||||
+ # found in the system, we create an ALIAS
|
||||
+ # The following is equivalent to add_library(tinyobjloader ALIAS tinyobjloader::tinyobjloader),
|
||||
+ # but compatible with CMake 3.16 . Once the minimum CMake is bumped to CMake 3.18, we can use
|
||||
+ # the simpler version
|
||||
+ add_library(tinyobjloader INTERFACE IMPORTED)
|
||||
+ set_target_properties(tinyobjloader PROPERTIES INTERFACE_LINK_LIBRARIES tinyobjloader::tinyobjloader)
|
||||
+endif()
|
||||
+
|
||||
+option(MUJOCO_USE_SYSTEM_sdflib "Use installed sdflib version." OFF)
|
||||
+mark_as_advanced(MUJOCO_USE_SYSTEM_sdflib)
|
||||
+
|
||||
option(SDFLIB_USE_ASSIMP OFF)
|
||||
option(SDFLIB_USE_OPENMP OFF)
|
||||
option(SDFLIB_USE_ENOKI OFF)
|
||||
+
|
||||
findorfetch(
|
||||
USE_SYSTEM_PACKAGE
|
||||
- OFF
|
||||
+ ${MUJOCO_USE_SYSTEM_sdflib}
|
||||
PACKAGE_NAME
|
||||
- sdflib
|
||||
+ SdfLib
|
||||
LIBRARY_NAME
|
||||
sdflib
|
||||
- GIT_REPO
|
||||
- https://github.com/UPC-ViRVIG/SdfLib.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_sdflib}
|
||||
TARGETS
|
||||
- SdfLib
|
||||
+ SdfLib::SdfLib
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
-target_compile_options(SdfLib PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||
-target_link_options(SdfLib PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||
+
|
||||
+if(NOT MUJOCO_USE_SYSTEM_sdflib)
|
||||
+ target_compile_options(SdfLib PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||
+ target_link_options(SdfLib PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||
+endif()
|
||||
+
|
||||
+option(MUJOCO_USE_SYSTEM_ccd "Use installed ccd version." OFF)
|
||||
+mark_as_advanced(MUJOCO_USE_SYSTEM_ccd)
|
||||
|
||||
set(ENABLE_DOUBLE_PRECISION ON)
|
||||
set(CCD_HIDE_ALL_SYMBOLS ON)
|
||||
findorfetch(
|
||||
USE_SYSTEM_PACKAGE
|
||||
- OFF
|
||||
+ ${MUJOCO_USE_SYSTEM_ccd}
|
||||
PACKAGE_NAME
|
||||
ccd
|
||||
LIBRARY_NAME
|
||||
ccd
|
||||
- GIT_REPO
|
||||
- https://github.com/danfis/libccd.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_ccd}
|
||||
TARGETS
|
||||
ccd
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
-target_compile_options(ccd PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||
-target_link_options(ccd PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||
-
|
||||
-# libCCD has an unconditional `#define _CRT_SECURE_NO_WARNINGS` on Windows.
|
||||
-# TODO(stunya): Remove this after https://github.com/danfis/libccd/pull/77 is merged.
|
||||
-if(WIN32)
|
||||
- if(MSVC)
|
||||
- # C4005 is the MSVC equivalent of -Wmacro-redefined.
|
||||
- target_compile_options(ccd PRIVATE /wd4005)
|
||||
- else()
|
||||
- target_compile_options(ccd PRIVATE -Wno-macro-redefined)
|
||||
+
|
||||
+if(NOT MUJOCO_USE_SYSTEM_ccd)
|
||||
+ target_compile_options(ccd PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||
+ target_link_options(ccd PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||
+ # This is necessary to ensure that the any library that consumes the ccd
|
||||
+ # compiled internally by MuJoCo (as static library) has CCD_EXPORT correctly
|
||||
+ # defined as an empty string. For ccd itself, this is ensured by the variable
|
||||
+ # CCD_HIDE_ALL_SYMBOLS set to ON before the call to findorfetch
|
||||
+ # See https://github.com/danfis/libccd/pull/79
|
||||
+ target_compile_definitions(ccd INTERFACE CCD_STATIC_DEFINE)
|
||||
+
|
||||
+ # libCCD has an unconditional `#define _CRT_SECURE_NO_WARNINGS` on Windows.
|
||||
+ # TODO(stunya): Remove this after https://github.com/danfis/libccd/pull/77 is merged.
|
||||
+ if(WIN32)
|
||||
+ if(MSVC)
|
||||
+ # C4005 is the MSVC equivalent of -Wmacro-redefined.
|
||||
+ target_compile_options(ccd PRIVATE /wd4005)
|
||||
+ else()
|
||||
+ target_compile_options(ccd PRIVATE -Wno-macro-redefined)
|
||||
+ endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(MUJOCO_BUILD_TESTS)
|
||||
+ option(MUJOCO_USE_SYSTEM_abseil "Use installed abseil version." OFF)
|
||||
+ mark_as_advanced(MUJOCO_USE_SYSTEM_abseil)
|
||||
+
|
||||
set(ABSL_PROPAGATE_CXX_STD ON)
|
||||
|
||||
# This specific version of Abseil does not have the following variable. We need to work with BUILD_TESTING
|
||||
@@ -249,15 +299,11 @@ if(MUJOCO_BUILD_TESTS)
|
||||
set(ABSL_BUILD_TESTING OFF)
|
||||
findorfetch(
|
||||
USE_SYSTEM_PACKAGE
|
||||
- OFF
|
||||
+ ${MUJOCO_USE_SYSTEM_abseil}
|
||||
PACKAGE_NAME
|
||||
absl
|
||||
LIBRARY_NAME
|
||||
abseil-cpp
|
||||
- GIT_REPO
|
||||
- https://github.com/abseil/abseil-cpp.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_abseil}
|
||||
TARGETS
|
||||
absl::core_headers
|
||||
EXCLUDE_FROM_ALL
|
||||
@@ -268,6 +314,9 @@ if(MUJOCO_BUILD_TESTS)
|
||||
CACHE BOOL "Build tests." FORCE
|
||||
)
|
||||
|
||||
+ option(MUJOCO_USE_SYSTEM_gtest "Use installed gtest version." OFF)
|
||||
+ mark_as_advanced(MUJOCO_USE_SYSTEM_gtest)
|
||||
+
|
||||
# Avoid linking errors on Windows by dynamically linking to the C runtime.
|
||||
set(gtest_force_shared_crt
|
||||
ON
|
||||
@@ -276,22 +325,20 @@ if(MUJOCO_BUILD_TESTS)
|
||||
|
||||
findorfetch(
|
||||
USE_SYSTEM_PACKAGE
|
||||
- OFF
|
||||
+ ${MUJOCO_USE_SYSTEM_gtest}
|
||||
PACKAGE_NAME
|
||||
GTest
|
||||
LIBRARY_NAME
|
||||
googletest
|
||||
- GIT_REPO
|
||||
- https://github.com/google/googletest.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_gtest}
|
||||
TARGETS
|
||||
- gtest
|
||||
- gmock
|
||||
- gtest_main
|
||||
+ GTest::gmock
|
||||
+ GTest::gtest_main
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
|
||||
+ option(MUJOCO_USE_SYSTEM_benchmark "Use installed benchmark version." OFF)
|
||||
+ mark_as_advanced(MUJOCO_USE_SYSTEM_benchmark)
|
||||
+
|
||||
set(BENCHMARK_EXTRA_FETCH_ARGS "")
|
||||
if(WIN32 AND NOT MSVC)
|
||||
set(BENCHMARK_EXTRA_FETCH_ARGS
|
||||
@@ -310,15 +357,11 @@ if(MUJOCO_BUILD_TESTS)
|
||||
|
||||
findorfetch(
|
||||
USE_SYSTEM_PACKAGE
|
||||
- OFF
|
||||
+ ${MUJOCO_USE_SYSTEM_benchmark}
|
||||
PACKAGE_NAME
|
||||
benchmark
|
||||
LIBRARY_NAME
|
||||
benchmark
|
||||
- GIT_REPO
|
||||
- https://github.com/google/benchmark.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_benchmark}
|
||||
TARGETS
|
||||
benchmark::benchmark
|
||||
benchmark::benchmark_main
|
||||
@@ -328,26 +371,42 @@ if(MUJOCO_BUILD_TESTS)
|
||||
endif()
|
||||
|
||||
if(MUJOCO_TEST_PYTHON_UTIL)
|
||||
+ option(MUJOCO_USE_SYSTEM_Eigen3 "Use installed Eigen3 version." OFF)
|
||||
+ mark_as_advanced(MUJOCO_USE_SYSTEM_Eigen3)
|
||||
+
|
||||
add_compile_definitions(EIGEN_MPL2_ONLY)
|
||||
- if(NOT TARGET eigen)
|
||||
- # Support new IN_LIST if() operator.
|
||||
- set(CMAKE_POLICY_DEFAULT_CMP0057 NEW)
|
||||
+ if(NOT TARGET Eigen3::Eigen)
|
||||
+ if(NOT MUJOCO_USE_SYSTEM_Eigen3)
|
||||
+ # Support new IN_LIST if() operator.
|
||||
+ set(CMAKE_POLICY_DEFAULT_CMP0057 NEW)
|
||||
+ endif()
|
||||
|
||||
- FetchContent_Declare(
|
||||
+ fetchcontent_declare(
|
||||
Eigen3
|
||||
- GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
|
||||
- GIT_TAG ${MUJOCO_DEP_VERSION_Eigen3}
|
||||
)
|
||||
|
||||
- FetchContent_GetProperties(Eigen3)
|
||||
+ fetchcontent_getproperties(Eigen3)
|
||||
if(NOT Eigen3_POPULATED)
|
||||
- FetchContent_Populate(Eigen3)
|
||||
+ fetchcontent_populate(Eigen3)
|
||||
|
||||
# Mark the library as IMPORTED as a workaround for https://gitlab.kitware.com/cmake/cmake/-/issues/15415
|
||||
add_library(Eigen3::Eigen INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
Eigen3::Eigen PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${eigen3_SOURCE_DIR}"
|
||||
)
|
||||
+
|
||||
+ fetchcontent_getproperties(Eigen3)
|
||||
+ # if(NOT Eigen3_POPULATED)
|
||||
+ # fetchcontent_populate(Eigen3)
|
||||
+
|
||||
+ # # Mark the library as IMPORTED as a workaround for https://gitlab.kitware.com/cmake/cmake/-/issues/15415
|
||||
+ # add_library(Eigen3::Eigen INTERFACE IMPORTED)
|
||||
+ # set_target_properties(
|
||||
+ # Eigen3::Eigen PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${eigen3_SOURCE_DIR}"
|
||||
+ # )
|
||||
+ # endif()
|
||||
+ else()
|
||||
+ find_package(Eigen3 REQUIRED)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
diff --git a/plugin/sdf/CMakeLists.txt b/plugin/sdf/CMakeLists.txt
|
||||
index 3e216fc..e7e3a1e 100644
|
||||
--- a/plugin/sdf/CMakeLists.txt
|
||||
+++ b/plugin/sdf/CMakeLists.txt
|
||||
@@ -37,7 +37,7 @@ set(MUJOCO_SDF_SRCS
|
||||
add_library(sdf SHARED)
|
||||
target_sources(sdf PRIVATE ${MUJOCO_SDF_SRCS})
|
||||
target_include_directories(sdf PRIVATE ${MUJOCO_SDF_INCLUDE})
|
||||
-target_link_libraries(sdf PRIVATE mujoco SdfLib)
|
||||
+target_link_libraries(sdf PRIVATE mujoco SdfLib::SdfLib)
|
||||
target_compile_options(
|
||||
sdf
|
||||
PRIVATE ${AVX_COMPILE_OPTIONS}
|
||||
diff --git a/python/mujoco/util/CMakeLists.txt b/python/mujoco/util/CMakeLists.txt
|
||||
index 666a372..d89bb49 100644
|
||||
--- a/python/mujoco/util/CMakeLists.txt
|
||||
+++ b/python/mujoco/util/CMakeLists.txt
|
||||
@@ -63,8 +63,8 @@ if(BUILD_TESTING)
|
||||
target_link_libraries(
|
||||
array_traits_test
|
||||
array_traits
|
||||
- gmock
|
||||
- gtest_main
|
||||
+ GTest::gmock
|
||||
+ GTest::gtest_main
|
||||
)
|
||||
gtest_add_tests(TARGET array_traits_test SOURCES array_traits_test.cc)
|
||||
|
||||
@@ -72,8 +72,8 @@ if(BUILD_TESTING)
|
||||
target_link_libraries(
|
||||
func_traits_test
|
||||
func_traits
|
||||
- gmock
|
||||
- gtest_main
|
||||
+ GTest::gmock
|
||||
+ GTest::gtest_main
|
||||
)
|
||||
gtest_add_tests(TARGET func_traits_test SOURCES func_traits_test.cc)
|
||||
|
||||
@@ -81,8 +81,8 @@ if(BUILD_TESTING)
|
||||
target_link_libraries(
|
||||
func_wrap_test
|
||||
func_wrap
|
||||
- gmock
|
||||
- gtest_main
|
||||
+ GTest::gmock
|
||||
+ GTest::gtest_main
|
||||
)
|
||||
gtest_add_tests(TARGET func_wrap_test SOURCES func_wrap_test.cc)
|
||||
|
||||
@@ -90,8 +90,8 @@ if(BUILD_TESTING)
|
||||
target_link_libraries(
|
||||
tuple_tools_test
|
||||
func_wrap
|
||||
- gmock
|
||||
- gtest_main
|
||||
+ GTest::gmock
|
||||
+ GTest::gtest_main
|
||||
)
|
||||
gtest_add_tests(TARGET tuple_tools_test SOURCES tuple_tools_test.cc)
|
||||
endif()
|
||||
diff --git a/simulate/cmake/SimulateDependencies.cmake b/simulate/cmake/SimulateDependencies.cmake
|
||||
index 5141406..75ff788 100644
|
||||
--- a/simulate/cmake/SimulateDependencies.cmake
|
||||
+++ b/simulate/cmake/SimulateDependencies.cmake
|
||||
@@ -81,10 +81,6 @@ findorfetch(
|
||||
glfw3
|
||||
LIBRARY_NAME
|
||||
glfw3
|
||||
- GIT_REPO
|
||||
- https://github.com/glfw/glfw.git
|
||||
- GIT_TAG
|
||||
- ${MUJOCO_DEP_VERSION_glfw3}
|
||||
TARGETS
|
||||
glfw
|
||||
EXCLUDE_FROM_ALL
|
||||
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
|
||||
index 6bec911..2a16c21 100644
|
||||
--- a/test/CMakeLists.txt
|
||||
+++ b/test/CMakeLists.txt
|
||||
@@ -30,7 +30,7 @@ macro(mujoco_test name)
|
||||
)
|
||||
|
||||
add_executable(${name} ${name}.cc)
|
||||
- target_link_libraries(${name} gtest_main mujoco)
|
||||
+ target_link_libraries(${name} GTest::gtest_main mujoco)
|
||||
target_include_directories(${name} PRIVATE ${MUJOCO_TEST_INCLUDE})
|
||||
set_target_properties(${name} PROPERTIES BUILD_RPATH ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
|
||||
# gtest_discover_tests is recommended over gtest_add_tests, but has some issues in Windows.
|
||||
@@ -59,20 +59,20 @@ target_link_libraries(
|
||||
PUBLIC absl::core_headers
|
||||
absl::strings
|
||||
absl::synchronization
|
||||
- gtest
|
||||
- gmock
|
||||
+ GTest::gtest
|
||||
+ GTest::gmock
|
||||
mujoco::mujoco
|
||||
)
|
||||
target_include_directories(fixture PRIVATE ${mujoco_SOURCE_DIR}/include gmock)
|
||||
|
||||
mujoco_test(fixture_test)
|
||||
-target_link_libraries(fixture_test fixture gmock)
|
||||
+target_link_libraries(fixture_test fixture GTest::gmock)
|
||||
|
||||
mujoco_test(header_test)
|
||||
-target_link_libraries(header_test fixture gmock)
|
||||
+target_link_libraries(header_test fixture GTest::gmock)
|
||||
|
||||
mujoco_test(pipeline_test)
|
||||
-target_link_libraries(pipeline_test fixture gmock)
|
||||
+target_link_libraries(pipeline_test fixture GTest::gmock)
|
||||
|
||||
add_subdirectory(benchmark)
|
||||
add_subdirectory(engine)
|
||||
@@ -0,0 +1,192 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 251c456..3d30231 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -27,7 +27,7 @@ option(SDFLIB_USE_SYSTEM_GLM "Use glm library via find_package instead of downlo
|
||||
option(SDFLIB_USE_SYSTEM_SPDLOG "Use spdlog library via find_package instead of downloading it" OFF)
|
||||
option(SDFLIB_USE_SYSTEM_CEREAL "Use cereal library via find_package instead of downloading it" OFF)
|
||||
option(SDFLIB_USE_SYSTEM_ASSIMP "Use assimp library via find_package instead of downloading it" OFF)
|
||||
-
|
||||
+option(SDFLIB_USE_SYSTEM_TRIANGLEMESHDISTANCE "Use TriangleMeshDistance library via system includes instead of downloading it" OFF)
|
||||
|
||||
if(SDFLIB_DEBUG_INFO)
|
||||
add_compile_definitions(SDFLIB_PRINT_STATISTICS)
|
||||
@@ -55,13 +55,52 @@ file(GLOB UTILS_SOURCE_FILES src/utils/*.cpp)
|
||||
file(GLOB UTILS_HEADER_FILES src/utils/*.h)
|
||||
|
||||
# Add libraries
|
||||
-add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES} ${HEADER_FILES} ${PUBLIC_HEADER_FILES}
|
||||
- ${SDF_SOURCE_FILES} ${SDF_HEADER_FILES}
|
||||
- ${UTILS_SOURCE_FILES} ${UTILS_HEADER_FILES})
|
||||
-
|
||||
-target_include_directories(${PROJECT_NAME} PUBLIC include/)
|
||||
+add_library(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES} ${PUBLIC_HEADER_FILES}
|
||||
+ ${SDF_SOURCE_FILES} ${SDF_HEADER_FILES}
|
||||
+ ${UTILS_SOURCE_FILES} ${UTILS_HEADER_FILES})
|
||||
+add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
|
||||
+if(BUILD_SHARED_LIBS AND WIN32)
|
||||
+ set_target_properties(${PROJECT_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||
+endif()
|
||||
+include(GNUInstallDirs)
|
||||
+target_include_directories(${PROJECT_NAME} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE src/)
|
||||
|
||||
+# Install library and CMake config files
|
||||
+install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME})
|
||||
+install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/SdfLib
|
||||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
+
|
||||
+install(EXPORT ${PROJECT_NAME}
|
||||
+ FILE ${PROJECT_NAME}Targets.cmake
|
||||
+ DESTINATION lib/cmake/${PROJECT_NAME}
|
||||
+ NAMESPACE ${PROJECT_NAME}::
|
||||
+)
|
||||
+
|
||||
+include(CMakePackageConfigHelpers)
|
||||
+set(PACKAGE_DEPENDENCIES "")
|
||||
+if(SDFLIB_USE_SYSTEM_GLM)
|
||||
+ string(APPEND PACKAGE_DEPENDENCIES "find_dependency(glm)\n")
|
||||
+endif()
|
||||
+if(SDFLIB_USE_SYSTEM_SPDLOG)
|
||||
+ string(APPEND PACKAGE_DEPENDENCIES "find_dependency(spdlog)\n")
|
||||
+endif()
|
||||
+if(SDFLIB_USE_SYSTEM_CEREAL)
|
||||
+ string(APPEND PACKAGE_DEPENDENCIES "find_dependency(cereal)\n")
|
||||
+endif()
|
||||
+if(SDFLIB_USE_ASSIMP AND SDFLIB_USE_SYSTEM_ASSIMP)
|
||||
+ string(APPEND PACKAGE_DEPENDENCIES "find_dependency(assimp)\n")
|
||||
+endif()
|
||||
+
|
||||
+configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in
|
||||
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||
+ INSTALL_DESTINATION "lib/cmake/${PROJECT_NAME}"
|
||||
+ NO_SET_AND_CHECK_MACRO
|
||||
+ NO_CHECK_REQUIRED_COMPONENTS_MACRO)
|
||||
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
|
||||
+ DESTINATION lib/cmake/${PROJECT_NAME})
|
||||
+
|
||||
# Add shaders
|
||||
file(GLOB SHADER_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/src/render_engine/shaders
|
||||
src/render_engine/shaders/*.frag
|
||||
@@ -69,7 +108,7 @@ file(GLOB SHADER_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/src/render_engine/sh
|
||||
src/render_engine/shaders/*.comp)
|
||||
|
||||
foreach(SHADER IN LISTS SHADER_FILES)
|
||||
- add_custom_command(OUTPUT ${SHADER}
|
||||
+add_custom_command(OUTPUT ${SHADER}
|
||||
COMMAND cmake -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/src/render_engine/shaders/${SHADER} $<TARGET_FILE_DIR:${PROJECT_NAME}>/shaders/${SHADER}
|
||||
DEPENDS src/render_engine/shaders/${SHADER}
|
||||
)
|
||||
@@ -112,7 +151,10 @@ endif()
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC ${SDFLIB_GLM_TARGET})
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC spdlog::spdlog)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC cereal::cereal)
|
||||
-target_link_libraries(${PROJECT_NAME} PUBLIC icg)
|
||||
+
|
||||
+if(NOT SDFLIB_USE_SYSTEM_TRIANGLEMESHDISTANCE)
|
||||
+ target_link_libraries(${PROJECT_NAME} PUBLIC TriangleMeshDistance)
|
||||
+endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC -lstdc++fs)
|
||||
diff --git a/SdfLibConfig.cmake.in b/SdfLibConfig.cmake.in
|
||||
new file mode 100644
|
||||
index 0000000..9b8265c
|
||||
--- /dev/null
|
||||
+++ b/SdfLibConfig.cmake.in
|
||||
@@ -0,0 +1,7 @@
|
||||
+@PACKAGE_INIT@
|
||||
+
|
||||
+include(CMakeFindDependencyMacro)
|
||||
+
|
||||
+@PACKAGE_DEPENDENCIES@
|
||||
+
|
||||
+include("${CMAKE_CURRENT_LIST_DIR}/SdfLibTargets.cmake")
|
||||
diff --git a/include/SdfLib/TrianglesInfluence.h b/include/SdfLib/TrianglesInfluence.h
|
||||
index fc2ca52..b276f23 100644
|
||||
--- a/include/SdfLib/TrianglesInfluence.h
|
||||
+++ b/include/SdfLib/TrianglesInfluence.h
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "InterpolationMethods.h"
|
||||
#include "utils/Timer.h"
|
||||
#include "utils/GJK.h"
|
||||
-#include <InteractiveComputerGraphics/TriangleMeshDistance.h>
|
||||
+#include <tmd/TriangleMeshDistance.h>
|
||||
|
||||
#include <vector>
|
||||
#include <array>
|
||||
diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt
|
||||
index 79f70c1..e2a4f10 100644
|
||||
--- a/libs/CMakeLists.txt
|
||||
+++ b/libs/CMakeLists.txt
|
||||
@@ -137,9 +137,10 @@ if(SDFLIB_BUILD_APPS OR SDFLIB_BUILD_DEBUG_APPS)
|
||||
target_include_directories(stb_image INTERFACE stb)
|
||||
endif()
|
||||
|
||||
-# icg
|
||||
-add_library(icg INTERFACE)
|
||||
-target_include_directories(icg INTERFACE InteractiveComputerGraphics)
|
||||
+if (NOT SDFLIB_USE_SYSTEM_TRIANGLEMESHDISTANCE)
|
||||
+ add_library(TriangleMeshDistance INTERFACE)
|
||||
+ target_include_directories(TriangleMeshDistance INTERFACE InteractiveComputerGraphics)
|
||||
+endif()
|
||||
|
||||
if(SDFLIB_BUILD_APPS OR SDFLIB_BUILD_DEBUG_APPS)
|
||||
# glfw
|
||||
diff --git a/libs/InteractiveComputerGraphics/InteractiveComputerGraphics/TriangleMeshDistance.h b/libs/InteractiveComputerGraphics/tmd/TriangleMeshDistance.h
|
||||
similarity index 100%
|
||||
rename from libs/InteractiveComputerGraphics/InteractiveComputerGraphics/TriangleMeshDistance.h
|
||||
rename to libs/InteractiveComputerGraphics/tmd/TriangleMeshDistance.h
|
||||
diff --git a/src/tools/ImageQueryTime/main.cpp b/src/tools/ImageQueryTime/main.cpp
|
||||
index 357a78b..f4fd9e7 100644
|
||||
--- a/src/tools/ImageQueryTime/main.cpp
|
||||
+++ b/src/tools/ImageQueryTime/main.cpp
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
#define TEST_METHODS
|
||||
#ifdef TEST_METHODS
|
||||
-#include <InteractiveComputerGraphics/TriangleMeshDistance.h>
|
||||
+#include <tmd/TriangleMeshDistance.h>
|
||||
// #include <CGAL/Simple_cartesian.h>
|
||||
// #include <CGAL/AABB_tree.h>
|
||||
// #include <CGAL/AABB_traits.h>
|
||||
diff --git a/src/tools/SdfErrorCompare/main.cpp b/src/tools/SdfErrorCompare/main.cpp
|
||||
index deef25f..9e402c4 100644
|
||||
--- a/src/tools/SdfErrorCompare/main.cpp
|
||||
+++ b/src/tools/SdfErrorCompare/main.cpp
|
||||
@@ -23,7 +23,7 @@ using namespace sdflib;
|
||||
// #define TEST_OPENVDB
|
||||
|
||||
#ifdef TEST_ICG
|
||||
-#include <InteractiveComputerGraphics/TriangleMeshDistance.h>
|
||||
+#include <tmd/TriangleMeshDistance.h>
|
||||
#endif
|
||||
#ifdef TEST_CGAL
|
||||
#include <CGAL/Simple_cartesian.h>
|
||||
diff --git a/src/tools/SdfLibUnity/SdfExportFunc.cpp b/src/tools/SdfLibUnity/SdfExportFunc.cpp
|
||||
index ff4e017..7e06ada 100644
|
||||
--- a/src/tools/SdfLibUnity/SdfExportFunc.cpp
|
||||
+++ b/src/tools/SdfLibUnity/SdfExportFunc.cpp
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "SdfExportFunc.h"
|
||||
#include "spdlog/sinks/rotating_file_sink.h"
|
||||
|
||||
-#include <InteractiveComputerGraphics/TriangleMeshDistance.h>
|
||||
+#include <tmd/TriangleMeshDistance.h>
|
||||
|
||||
using namespace sdflib;
|
||||
|
||||
diff --git a/src/tools/SdfOffsets/main.cpp b/src/tools/SdfOffsets/main.cpp
|
||||
index b6769d7..07f137b 100644
|
||||
--- a/src/tools/SdfOffsets/main.cpp
|
||||
+++ b/src/tools/SdfOffsets/main.cpp
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <glm/gtc/type_ptr.hpp>
|
||||
#include <glm/gtc/matrix_transform.hpp>
|
||||
|
||||
-#include <InteractiveComputerGraphics/TriangleMeshDistance.h>
|
||||
+#include <tmd/TriangleMeshDistance.h>
|
||||
#include <CGAL/Surface_mesh_default_triangulation_3.h>
|
||||
#include <CGAL/Complex_2_in_triangulation_3.h>
|
||||
#include <CGAL/make_surface_mesh.h>
|
||||
@@ -70,11 +70,11 @@ in
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "recoll";
|
||||
version = "1.36.0";
|
||||
version = "1.36.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.lesbonscomptes.com/${pname}/${pname}-${version}.tar.gz";
|
||||
hash = "sha256-vf0o0wBcG3878YD4mTUhni2aTUU9AJkG4an1oaRc4yw=";
|
||||
hash = "sha256-GyQqI3ciRO0TRaAeM4rGu+j/eB4bJlQ7VBTTxUGMNt4=";
|
||||
};
|
||||
|
||||
configureFlags = [
|
||||
@@ -169,7 +169,7 @@ mkDerivation rec {
|
||||
members, email attachments.
|
||||
'';
|
||||
homepage = "https://www.lesbonscomptes.com/recoll/";
|
||||
changelog = "https://www.lesbonscomptes.com/recoll/pages/release-${version}.html";
|
||||
changelog = "https://www.lesbonscomptes.com/recoll/pages/release-${versions.majorMinor version}.html";
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ jcumming ehmry ];
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "1.3.0";
|
||||
commit = "5bfe79b3632f15c442e8dc51ec206ab76354487f";
|
||||
version = "1.3.1";
|
||||
commit = "b6be8bac78605c21a9670db0e44faf5e1eafe0d4";
|
||||
in buildGoModule {
|
||||
pname = "gg-scm";
|
||||
inherit version;
|
||||
@@ -20,7 +20,7 @@ in buildGoModule {
|
||||
owner = "gg-scm";
|
||||
repo = "gg";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-5iiu3blNJHDehg3wnvZUmfjFST+zNr89+FAoQu4CSH8=";
|
||||
hash = "sha256-qw0KWhCkJVYRhDBNtiNactWGGMHjBwdQ1Po4lQQbaj4=";
|
||||
};
|
||||
postPatch = ''
|
||||
substituteInPlace cmd/gg/editor_unix.go \
|
||||
@@ -33,7 +33,7 @@ in buildGoModule {
|
||||
"-X" "main.buildCommit=${commit}"
|
||||
];
|
||||
|
||||
vendorHash = "sha256-IU3Ac9rXsyPqRJrPJMW1eNVzQy7qoVBs9XYaLX9c5AU=";
|
||||
vendorHash = "sha256-56Sah030xbWsoOu8r3c3nN2UGHvQORheavebP+Z1Wc8=";
|
||||
|
||||
nativeBuildInputs = [ pandoc installShellFiles makeWrapper ];
|
||||
nativeCheckInputs = [ bash coreutils git ];
|
||||
|
||||
@@ -20,12 +20,12 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "gitea";
|
||||
version = "1.20.5";
|
||||
version = "1.21.1";
|
||||
|
||||
# not fetching directly from the git repo, because that lacks several vendor files for the web UI
|
||||
src = fetchurl {
|
||||
url = "https://dl.gitea.com/gitea/${version}/gitea-src-${version}.tar.gz";
|
||||
hash = "sha256-cH/AHsFXOdvfSfj9AZUd3l/RlYE06o1ByZu0vvGQuXw=";
|
||||
hash = "sha256-5WEHUMQsQNgrglS+xJ4IWHUl0a6RLLPyx0l+ECJ4R9g=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "got";
|
||||
version = "0.93";
|
||||
version = "0.94";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://gameoftrees.org/releases/portable/got-portable-${version}.tar.gz";
|
||||
hash = "sha256-wlcnJr7f3Bd9SEgrKiPlr7pTSjaRj47qwktI2jepINE=";
|
||||
hash = "sha256-hG0/a+sk6uZCxR908YfZCW44qx/SIwwGO9mUaxxHZ3k=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config bison ]
|
||||
|
||||
@@ -22,13 +22,16 @@
|
||||
, aprutil
|
||||
, makeDesktopItem
|
||||
, copyDesktopItems
|
||||
, jq
|
||||
|
||||
, studioVariant ? false
|
||||
}:
|
||||
|
||||
let
|
||||
davinci = (
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "davinci-resolve";
|
||||
version = "18.5.1";
|
||||
pname = "davinci-resolve${lib.optionalString studioVariant "-studio"}";
|
||||
version = "18.6.3";
|
||||
|
||||
nativeBuildInputs = [
|
||||
(appimage-run.override { buildFHSEnv = buildFHSEnvChroot; } )
|
||||
@@ -47,19 +50,24 @@ let
|
||||
rec {
|
||||
outputHashMode = "recursive";
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash = "sha256-AZ869hA/WeCf3sxhdDOzD/q30P1NaD18TheBtS1ammQ=";
|
||||
outputHash =
|
||||
if studioVariant
|
||||
then "sha256-OX8PyMhfl0jRdXBNsjlwkCAh8XUNJv8HEbmyAdjIv18="
|
||||
else "sha256-PNzdVxGgXIHM2vi3ChHx67TQBFlCYBOZCiFkDi/RSu4=";
|
||||
|
||||
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
|
||||
|
||||
nativeBuildInputs = [ curl ];
|
||||
nativeBuildInputs = [ curl jq ];
|
||||
|
||||
# ENV VARS
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
|
||||
# Get linux.downloadId from HTTP response on https://www.blackmagicdesign.com/products/davinciresolve
|
||||
DOWNLOADID = "defc1c6789b7475b9ee4a42daf9ba61d";
|
||||
REFERID = "263d62f31cbb49e0868005059abcb0c9";
|
||||
SITEURL = "https://www.blackmagicdesign.com/api/register/us/download/${DOWNLOADID}";
|
||||
DOWNLOADSURL = "https://www.blackmagicdesign.com/api/support/us/downloads.json";
|
||||
SITEURL = "https://www.blackmagicdesign.com/api/register/us/download";
|
||||
PRODUCT = "DaVinci Resolve${lib.optionalString studioVariant " Studio"}";
|
||||
VERSION = version;
|
||||
|
||||
USERAGENT = builtins.concatStringsSep " " [
|
||||
"User-Agent: Mozilla/5.0 (X11; Linux ${stdenv.hostPlatform.linuxArch})"
|
||||
@@ -77,10 +85,16 @@ let
|
||||
"street" = "Hogeweide 346";
|
||||
"state" = "Province of Utrecht";
|
||||
"city" = "Utrecht";
|
||||
"product" = "DaVinci Resolve";
|
||||
"product" = PRODUCT;
|
||||
};
|
||||
|
||||
} ''
|
||||
DOWNLOADID=$(
|
||||
curl --silent --compressed "$DOWNLOADSURL" \
|
||||
| jq --raw-output '.downloads[] | select(.name | test("^'"$PRODUCT $VERSION"'( Update)?$")) | .urls.Linux[0].downloadId'
|
||||
)
|
||||
echo "downloadid is $DOWNLOADID"
|
||||
test -n "$DOWNLOADID"
|
||||
RESOLVEURL=$(curl \
|
||||
--silent \
|
||||
--header 'Host: www.blackmagicdesign.com' \
|
||||
@@ -95,7 +109,7 @@ let
|
||||
--header 'Cookie: _ga=GA1.2.1849503966.1518103294; _gid=GA1.2.953840595.1518103294' \
|
||||
--data-ascii "$REQJSON" \
|
||||
--compressed \
|
||||
"$SITEURL")
|
||||
"$SITEURL/$DOWNLOADID")
|
||||
|
||||
curl \
|
||||
--retry 3 --retry-delay 3 \
|
||||
@@ -111,14 +125,17 @@ let
|
||||
# The unpack phase won't generate a directory
|
||||
sourceRoot = ".";
|
||||
|
||||
installPhase = ''
|
||||
installPhase = let
|
||||
appimageName = "DaVinci_Resolve_${lib.optionalString studioVariant "Studio_"}${version}_Linux.run";
|
||||
in ''
|
||||
runHook preInstall
|
||||
|
||||
export HOME=$PWD/home
|
||||
mkdir -p $HOME
|
||||
|
||||
mkdir -p $out
|
||||
appimage-run ./DaVinci_Resolve_${version}_Linux.run -i -y -n -C $out
|
||||
test -e ${lib.escapeShellArg appimageName}
|
||||
appimage-run ${lib.escapeShellArg appimageName} -i -y -n -C $out
|
||||
|
||||
mkdir -p $out/{configs,DolbyVision,easyDCP,Fairlight,GPUCache,logs,Media,"Resolve Disk Database",.crashreport,.license,.LUT}
|
||||
runHook postInstall
|
||||
@@ -162,7 +179,9 @@ let
|
||||
);
|
||||
in
|
||||
buildFHSEnv {
|
||||
name = "davinci-resolve";
|
||||
inherit (davinci) pname version;
|
||||
name = null;
|
||||
|
||||
targetPkgs = pkgs: with pkgs; [
|
||||
alsa-lib
|
||||
aprutil
|
||||
@@ -201,6 +220,7 @@ buildFHSEnv {
|
||||
xorg.libXinerama
|
||||
xorg.libXrandr
|
||||
xorg.libXrender
|
||||
xorg.libXt
|
||||
xorg.libXtst
|
||||
xorg.libXxf86vm
|
||||
xorg.libxcb
|
||||
@@ -213,16 +233,22 @@ buildFHSEnv {
|
||||
zlib
|
||||
];
|
||||
|
||||
extraBwrapArgs = lib.optionals studioVariant [
|
||||
"--bind \"$HOME\"/.local/share/DaVinciResolve/license ${davinci}/.license"
|
||||
];
|
||||
|
||||
runScript = "${bash}/bin/bash ${
|
||||
writeText "davinci-wrapper"
|
||||
''
|
||||
export QT_XKB_CONFIG_ROOT="${xkeyboard_config}/share/X11/xkb"
|
||||
export QT_PLUGIN_PATH="${davinci}/libs/plugins:$QT_PLUGIN_PATH"
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${davinci}/libs
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/lib32:${davinci}/libs
|
||||
${davinci}/bin/resolve
|
||||
''
|
||||
}";
|
||||
|
||||
passthru = { inherit davinci; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Professional video editing, color, effects and audio post-processing";
|
||||
homepage = "https://www.blackmagicdesign.com/products/davinciresolve";
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
buildKodiBinaryAddon rec {
|
||||
pname = "pvr-hts";
|
||||
namespace = "pvr.hts";
|
||||
version = "20.6.4";
|
||||
version = "20.6.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kodi-pvr";
|
||||
repo = "pvr.hts";
|
||||
rev = "${version}-${rel}";
|
||||
sha256 = "sha256-IrVz4rHAmaj/ACBNEF0x3kJa3fFPTTT7Pv9GnWJm8Vg=";
|
||||
sha256 = "sha256-NrSLWZn+aeWUKxM/ETvoE4gRo4JZsD1snpLvMLDlpFw=";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "tart";
|
||||
version = "2.3.0";
|
||||
version = "2.4.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/cirruslabs/tart/releases/download/${finalAttrs.version}/tart.tar.gz";
|
||||
sha256 = "sha256-LdzP0Vovda0W6uBg71dJlTxP+Qly+c2Shv3xrMmxYDg=";
|
||||
sha256 = "sha256-dCKUwDC7M3u8/8yJQp/v0zy7GuB7SvjnRmTLtodUz80=";
|
||||
};
|
||||
sourceRoot = ".";
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ lib, stdenv, fetchurl, fetchpatch2
|
||||
{ lib, stdenv, fetchurl
|
||||
, meson, ninja, pkg-config, python3, wayland-scanner
|
||||
, cairo, libGL, libdrm, libevdev, libinput, libxkbcommon, mesa, seatd, wayland
|
||||
, wayland-protocols, xcbutilcursor
|
||||
@@ -19,23 +19,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "weston";
|
||||
version = "12.0.2";
|
||||
version = "13.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://gitlab.freedesktop.org/wayland/weston/-/releases/${version}/downloads/weston-${version}.tar.xz";
|
||||
hash = "sha256-62hqfPAJkqI7F/GS/KmohzE+ksNG7jXYV1GWmD1la0o=";
|
||||
hash = "sha256-Uv8dSqI5Si5BbIWjOLYnzpf6cdQ+t2L9Sq8UXTb8eVo=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# ci, backend-vnc: update to Neat VNC 0.7.0
|
||||
# part of https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/1051
|
||||
(fetchpatch2 {
|
||||
url = "https://gitlab.freedesktop.org/wayland/weston/-/commit/8895b15f3dfc555a869e310ff6e16ff5dced1336.patch";
|
||||
hash = "sha256-PGAmQhzG8gZcYRaZwhKPlgzfbILIXGAHLSd9dCHAP1A=";
|
||||
excludes = [ ".gitlab-ci.yml" ];
|
||||
})
|
||||
];
|
||||
|
||||
depsBuildBuild = [ pkg-config ];
|
||||
nativeBuildInputs = [ meson ninja pkg-config python3 wayland-scanner ];
|
||||
buildInputs = [
|
||||
|
||||
@@ -14,6 +14,7 @@ in
|
||||
, recursiveHash ? true
|
||||
, postFetch ? ""
|
||||
, postUnpack ? ""
|
||||
, meta ? {}
|
||||
}:
|
||||
let
|
||||
afterSuccess = writeShellScript "fetch-bittorrent-done.sh" ''
|
||||
@@ -30,6 +31,7 @@ let
|
||||
jsonConfig = (formats.json {}).generate "jsonConfig" config;
|
||||
in
|
||||
runCommand name {
|
||||
inherit meta;
|
||||
nativeBuildInputs = [ cacert ] ++ (if (backend == "transmission" ) then [ transmission_noSystemd ] else if (backend == "rqbit") then [ rqbit ] else throw "rqbit or transmission are the only available backends for fetchtorrent");
|
||||
outputHashAlgo = if hash != "" then null else "sha256";
|
||||
outputHash = hash;
|
||||
|
||||
@@ -1,25 +1,47 @@
|
||||
{ testers, fetchtorrent, ... }:
|
||||
{ testers, fetchtorrent, lib, ... }:
|
||||
|
||||
let
|
||||
wired-cd.meta.license = [
|
||||
# track 1, 4 and 11
|
||||
{
|
||||
spdxID = "CC NC-SAMPLING+ 1.0 Deed";
|
||||
fullName = "NonCommercial Sampling Plus 1.0 Generic";
|
||||
url = "https://creativecommons.org/licenses/nc-sampling+/1.0/";
|
||||
free = false; # for noncommercial purposes only
|
||||
}
|
||||
# the rest
|
||||
{
|
||||
spdxID = "CC SAMPLING+ 1.0 Deed";
|
||||
fullName = "Sampling Plus 1.0 Generic";
|
||||
url = "https://creativecommons.org/licenses/sampling+/1.0/";
|
||||
free = true; # no use in advertisement
|
||||
}
|
||||
];
|
||||
in
|
||||
|
||||
{
|
||||
http-link = testers.invalidateFetcherByDrvHash fetchtorrent {
|
||||
url = "https://webtorrent.io/torrents/wired-cd.torrent";
|
||||
hash = "sha256-OCsC22WuanqoN6lPv5wDT5ZxPcEHDpZ1EgXGvz1SDYo=";
|
||||
backend = "transmission";
|
||||
inherit (wired-cd) meta;
|
||||
};
|
||||
magnet-link = testers.invalidateFetcherByDrvHash fetchtorrent {
|
||||
url = "magnet:?xt=urn:btih:a88fda5954e89178c372716a6a78b8180ed4dad3&dn=The+WIRED+CD+-+Rip.+Sample.+Mash.+Share&tr=udp%3A%2F%2Fexplodie.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.empire-js.us%3A1337&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=wss%3A%2F%2Ftracker.btorrent.xyz&tr=wss%3A%2F%2Ftracker.fastcast.nz&tr=wss%3A%2F%2Ftracker.openwebtorrent.com&ws=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2F&xs=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2Fwired-cd.torrent";
|
||||
hash = "sha256-OCsC22WuanqoN6lPv5wDT5ZxPcEHDpZ1EgXGvz1SDYo=";
|
||||
backend = "transmission";
|
||||
inherit (wired-cd) meta;
|
||||
};
|
||||
http-link-rqbit = testers.invalidateFetcherByDrvHash fetchtorrent {
|
||||
url = "https://webtorrent.io/torrents/wired-cd.torrent";
|
||||
hash = "sha256-OCsC22WuanqoN6lPv5wDT5ZxPcEHDpZ1EgXGvz1SDYo=";
|
||||
backend = "rqbit";
|
||||
inherit (wired-cd) meta;
|
||||
};
|
||||
magnet-link-rqbit = testers.invalidateFetcherByDrvHash fetchtorrent {
|
||||
url = "magnet:?xt=urn:btih:a88fda5954e89178c372716a6a78b8180ed4dad3&dn=The+WIRED+CD+-+Rip.+Sample.+Mash.+Share&tr=udp%3A%2F%2Fexplodie.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.empire-js.us%3A1337&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=wss%3A%2F%2Ftracker.btorrent.xyz&tr=wss%3A%2F%2Ftracker.fastcast.nz&tr=wss%3A%2F%2Ftracker.openwebtorrent.com&ws=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2F&xs=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2Fwired-cd.torrent";
|
||||
hash = "sha256-OCsC22WuanqoN6lPv5wDT5ZxPcEHDpZ1EgXGvz1SDYo=";
|
||||
backend = "rqbit";
|
||||
inherit (wired-cd) meta;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
, runCommand
|
||||
, alp
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "alp";
|
||||
version = "1.1.17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gernotfeichter";
|
||||
repo = "alp";
|
||||
rev = version;
|
||||
hash = "sha256-7lyWu1bVn7UwLb/Em6VBbg3FrMyxGjebxt5gJhm/xpI=";
|
||||
};
|
||||
vendorHash = "sha256-a2CQZKN/rPWh/Pn9gXfSArTCcGST472tsz1Kqm7M4vM=";
|
||||
|
||||
sourceRoot = "${src.name}/linux";
|
||||
|
||||
# Executing Go commands directly in checkPhase and buildPhase below,
|
||||
# because the default testsuite runs all go tests, some of which require docker.
|
||||
# Docker is too expensive for https://github.com/NixOS/ofborg.
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
|
||||
go test -run Test_main_init
|
||||
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
go build -o $GOPATH/bin/${pname} main.go
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
test-version = runCommand "${pname}-test" {} ''
|
||||
${alp}/bin/alp version > $out
|
||||
cat $out | grep '${version}'
|
||||
'';
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "A convenient authentication method that lets you use your android device as a key for your Linux machine";
|
||||
homepage = "https://github.com/gernotfeichter/alp";
|
||||
license = licenses.gpl2Only;
|
||||
mainProgram = "alp";
|
||||
maintainers = with maintainers; [ gernotfeichter ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
, nixosTests
|
||||
, testers
|
||||
, accountsservice
|
||||
, cmake
|
||||
, dbus-test-runner
|
||||
, withDocumentation ? true
|
||||
, docbook_xsl
|
||||
, docbook_xml_dtd_45
|
||||
, glib
|
||||
, gobject-introspection
|
||||
, gtest
|
||||
, gtk-doc
|
||||
, intltool
|
||||
, lomiri
|
||||
, pkg-config
|
||||
, python3
|
||||
, systemd
|
||||
, vala
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ayatana-indicator-messages";
|
||||
version = "23.10.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AyatanaIndicators";
|
||||
repo = "ayatana-indicator-messages";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-FBJeP5hOXJcOk04cRJpw+oN7L3w3meDX3ivLmFWkhVI=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
] ++ lib.optionals withDocumentation [
|
||||
"devdoc"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Uses pkg_get_variable, cannot substitute prefix with that
|
||||
substituteInPlace data/CMakeLists.txt \
|
||||
--replace "\''${SYSTEMD_USER_DIR}" "$out/lib/systemd/user"
|
||||
|
||||
# Bad concatenation
|
||||
substituteInPlace libmessaging-menu/messaging-menu.pc.in \
|
||||
--replace "\''${exec_prefix}/@CMAKE_INSTALL_LIBDIR@" '@CMAKE_INSTALL_FULL_LIBDIR@' \
|
||||
--replace "\''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@" '@CMAKE_INSTALL_FULL_INCLUDEDIR@'
|
||||
'' + lib.optionalString (!withDocumentation) ''
|
||||
sed -i CMakeLists.txt \
|
||||
'/add_subdirectory(doc)/d'
|
||||
'';
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
glib # For glib-compile-schemas
|
||||
intltool
|
||||
pkg-config
|
||||
vala
|
||||
wrapGAppsHook
|
||||
] ++ lib.optionals withDocumentation [
|
||||
docbook_xsl
|
||||
docbook_xml_dtd_45
|
||||
gtk-doc
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
accountsservice
|
||||
lomiri.cmake-extras
|
||||
glib
|
||||
gobject-introspection
|
||||
systemd
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
(python3.withPackages (ps: with ps; [
|
||||
pygobject3
|
||||
python-dbusmock
|
||||
]))
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
dbus-test-runner
|
||||
gtest
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DENABLE_TESTS=${lib.boolToString finalAttrs.doCheck}"
|
||||
"-DGSETTINGS_LOCALINSTALL=ON"
|
||||
"-DGSETTINGS_COMPILE=ON"
|
||||
];
|
||||
|
||||
makeFlags = lib.optionals withDocumentation [
|
||||
# gtk-doc doesn't call ld with the correct arguments
|
||||
# ld: ...: undefined reference to symbol 'strncpy@@GLIBC_2.2.5', 'qsort@@GLIBC_2.2.5'
|
||||
"LD=${stdenv.cc.targetPrefix}cc"
|
||||
];
|
||||
|
||||
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
||||
|
||||
preCheck = ''
|
||||
# test-client imports gir, whose solib entry points to final store location
|
||||
install -Dm644 libmessaging-menu/libmessaging-menu.so.0.0.0 $out/lib/libmessaging-menu.so.0
|
||||
'';
|
||||
|
||||
postCheck = ''
|
||||
# remove the above solib-installation, let it be done properly
|
||||
rm -r $out
|
||||
'';
|
||||
|
||||
preInstall = lib.optionalString withDocumentation ''
|
||||
# installing regenerates docs, generated files are created without write permissions, errors out while trying to overwrite them
|
||||
chmod +w doc/reference/html/*
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
ayatana-indicators = [
|
||||
"ayatana-indicator-messages"
|
||||
];
|
||||
tests = {
|
||||
pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
|
||||
vm = nixosTests.ayatana-indicators;
|
||||
};
|
||||
updateScript = gitUpdater { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Ayatana Indicator Messages Applet";
|
||||
longDescription = ''
|
||||
The -messages Ayatana System Indicator is the messages menu indicator for Unity7, MATE and Lomiri (optionally for
|
||||
others, e.g. XFCE, LXDE).
|
||||
'';
|
||||
homepage = "https://github.com/AyatanaIndicators/ayatana-indicator-messages";
|
||||
license = licenses.gpl3Only;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ OPNA2608 ];
|
||||
pkgConfigModules = [
|
||||
"messaging-menu"
|
||||
];
|
||||
};
|
||||
})
|
||||
@@ -15,11 +15,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bruno";
|
||||
version = "1.2.0";
|
||||
version = "1.3.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/usebruno/bruno/releases/download/v${version}/bruno_${version}_amd64_linux.deb";
|
||||
hash = "sha256-60YwXAukGnMiaYxVOcUgGa/r/If1pJC6pMyyltTfd1c=";
|
||||
hash = "sha256-E9aVyZWqY8XTwoUbHaj8VM32Eex7GNQcEpg8Hkk2O0U=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook dpkg wrapGAppsHook ];
|
||||
|
||||
+1583
-381
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,97 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
rust,
|
||||
rustPlatform,
|
||||
cmake,
|
||||
makeBinaryWrapper,
|
||||
cosmic-icons,
|
||||
just,
|
||||
pkg-config,
|
||||
libxkbcommon,
|
||||
glib,
|
||||
gtk3,
|
||||
libinput,
|
||||
fontconfig,
|
||||
freetype,
|
||||
wayland,
|
||||
xorg,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cosmic-edit";
|
||||
version = "unstable-2023-11-29";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = pname;
|
||||
rev = "4a3dd101f35eb3c1c585f104d78ed4ee31d393d3";
|
||||
hash = "sha256-pk+4u13oWZ4fgXy1tlDgq+E4J+UddjTNSexMm4dgBSo=";
|
||||
};
|
||||
|
||||
cargoLock = {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"accesskit-0.11.0" = "sha256-xVhe6adUb8VmwIKKjHxwCwOo5Y1p3Or3ylcJJdLDrrE=";
|
||||
"atomicwrites-0.4.2" = "sha256-QZSuGPrJXh+svMeFWqAXoqZQxLq/WfIiamqvjJNVhxA=";
|
||||
"cosmic-config-0.1.0" = "sha256-wBliqZbRHYiwZmu0vHeIP5DFzg/1IeQP3aMxiYC88bo=";
|
||||
"cosmic-text-0.10.0" = "sha256-fE5HkhITLw0OBfFLFMsKEJw5idO265i4S7qylHTt7C0=";
|
||||
"sctk-adwaita-0.5.4" = "sha256-yK0F2w/0nxyKrSiHZbx7+aPNY2vlFs7s8nu/COp2KqQ=";
|
||||
"softbuffer-0.3.3" = "sha256-eKYFVr6C1+X6ulidHIu9SP591rJxStxwL9uMiqnXx4k=";
|
||||
"smithay-client-toolkit-0.16.1" = "sha256-z7EZThbh7YmKzAACv181zaEZmWxTrMkFRzP0nfsHK6c=";
|
||||
"systemicons-0.7.0" = "sha256-zzAI+6mnpQOh+3mX7/sJ+w4a7uX27RduQ99PNxLNF78=";
|
||||
"taffy-0.3.11" = "sha256-SCx9GEIJjWdoNVyq+RZAGn0N71qraKZxf9ZWhvyzLaI=";
|
||||
"winit-0.28.6" = "sha256-FhW6d2XnXCGJUMoT9EMQew9/OPXiehy/JraeCiVd76M=";
|
||||
};
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace justfile --replace '#!/usr/bin/env' "#!$(command -v env)"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
just
|
||||
pkg-config
|
||||
makeBinaryWrapper
|
||||
];
|
||||
buildInputs = [
|
||||
libxkbcommon
|
||||
xorg.libX11
|
||||
libinput
|
||||
fontconfig
|
||||
freetype
|
||||
wayland
|
||||
glib
|
||||
gtk3
|
||||
];
|
||||
|
||||
dontUseJustBuild = true;
|
||||
|
||||
justFlags = [
|
||||
"--set"
|
||||
"prefix"
|
||||
(placeholder "out")
|
||||
"--set"
|
||||
"bin-src"
|
||||
"target/${
|
||||
rust.lib.toRustTargetSpecShort stdenv.hostPlatform
|
||||
}/release/cosmic-edit"
|
||||
];
|
||||
|
||||
# LD_LIBRARY_PATH can be removed once tiny-xlib is bumped above 0.2.2
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/${pname}" \
|
||||
--suffix XDG_DATA_DIRS : "${cosmic-icons}/share" \
|
||||
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ xorg.libX11 ]}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/pop-os/cosmic-edit";
|
||||
description = "Text Editor for the COSMIC Desktop Environment";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ ahoneybun ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
lib,
|
||||
python3Packages,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
}:
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "doge";
|
||||
version = "3.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Olivia5k";
|
||||
repo = "doge";
|
||||
rev = version;
|
||||
hash = "sha256-72nRghD5k0ofrlvV3hEdyrr6uzV4+8At1bOCmRZTxhk=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://github.com/Olivia5k/doge/pull/66, adds a small doge
|
||||
(fetchpatch {
|
||||
url = "https://github.com/Olivia5k/doge/commit/14e3ccc0a3f1e91862492e20a34d008768a34039.patch";
|
||||
hash = "sha256-3F+7F9RuoiVWoN+69T7tM871AXX1IQbHqFxD+S3TjxQ=";
|
||||
})
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/Olivia5k/doge";
|
||||
description = "Wow very terminal doge";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [Gonzih quantenzitrone];
|
||||
mainProgram = "doge";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "emojify";
|
||||
version = "2.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mrowa44";
|
||||
repo = "emojify";
|
||||
rev = version;
|
||||
hash = "sha256-6cV+S8wTqJxPGsxiJ3hP6/CYPMWdF3qnz4ddL+F/oJU=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm755 emojify $out/bin/emojify
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Emoji on the command line";
|
||||
homepage = "https://github.com/mrowa44/emojify";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ snowflake ];
|
||||
platforms = platforms.all;
|
||||
mainProgram = "emojify";
|
||||
};
|
||||
}
|
||||
@@ -19,13 +19,13 @@ let
|
||||
pieBuild = stdenv.hostPlatform.isMusl;
|
||||
in buildGoModule rec {
|
||||
pname = "frankenphp";
|
||||
version = "1.0.0-rc.3";
|
||||
version = "1.0.0-rc.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dunglas";
|
||||
repo = "frankenphp";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Al0gCxTb6s41ugX9J8N8lshop9kP3RPGCzlq5etk1RY=";
|
||||
hash = "sha256-4jNCKHt4eYI1BNaonIdS1Eq2OnJwgrU6qWZoiSpeIYk=";
|
||||
};
|
||||
|
||||
sourceRoot = "source/caddy";
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, ffmpeg
|
||||
, makeWrapper
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gifgen";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lukechilds";
|
||||
repo = "gifgen";
|
||||
rev = version;
|
||||
hash = "sha256-ni9RL4LyMejmu8vm5HC8WSTqAPQMBQNRDOZ4ZfvrkSU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm755 gifgen $out/bin/gifgen
|
||||
wrapProgram $out/bin/gifgen \
|
||||
--prefix PATH : ${lib.makeBinPath [ ffmpeg ]}
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Simple high quality GIF encoding";
|
||||
homepage = "https://github.com/lukechilds/gifgen";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ snowflake ];
|
||||
mainProgram = "gifgen";
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, which
|
||||
, pkg-config
|
||||
, autoconf
|
||||
, automake
|
||||
, libtool
|
||||
, gettext
|
||||
, openssl
|
||||
, curl
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lib3270";
|
||||
version = "5.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "PerryWerneck";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-w6Bg+TvSDAuZwtu/nyAIuq6pgheM5nXtfuryECfnKng=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
which
|
||||
pkg-config
|
||||
autoconf
|
||||
automake
|
||||
libtool
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gettext
|
||||
openssl
|
||||
curl
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Patch the required version.
|
||||
sed -i -e "s/20211118/19800101/" src/core/session.c
|
||||
'';
|
||||
|
||||
preConfigure = ''
|
||||
NOCONFIGURE=1 sh autogen.sh
|
||||
'';
|
||||
|
||||
enableParallelBuilds = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "TN3270 client Library";
|
||||
homepage = "https://github.com/PerryWerneck/lib3270";
|
||||
license = licenses.lgpl3Plus;
|
||||
maintainers = [ maintainers.vifino ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, autoconf
|
||||
, automake
|
||||
, libtool
|
||||
, which
|
||||
, pkg-config
|
||||
, gtk3
|
||||
, lib3270
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libv3270";
|
||||
version = "5.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "PerryWerneck";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-Z3FvxPa1pfeECxfB5ZL6gwhkbTKFpfO3D/zLVLF+uiI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
which
|
||||
pkg-config
|
||||
autoconf
|
||||
automake
|
||||
libtool
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
lib3270
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# lib3270_build_data_filename is relative to lib3270's share - not ours.
|
||||
for f in $(find . -type f -iname "*.c"); do
|
||||
sed -i -e "s@lib3270_build_data_filename(@g_build_filename(\"$out/share/pw3270\", @" "$f"
|
||||
done
|
||||
'';
|
||||
|
||||
preConfigure = ''
|
||||
mkdir -p scripts
|
||||
touch scripts/config.rpath
|
||||
NOCONFIGURE=1 sh ./autogen.sh
|
||||
'';
|
||||
|
||||
enableParallelBuilds = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "3270 Virtual Terminal for GTK";
|
||||
homepage = "https://github.com/PerryWerneck/libv3270";
|
||||
license = licenses.lgpl3Plus;
|
||||
maintainers = [ maintainers.vifino ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{ lib
|
||||
, stdenvNoCC
|
||||
, fetchFromGitHub
|
||||
, inkscape
|
||||
, xcursorgen
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "material-cursors";
|
||||
version = "unstable-2023-11-30";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "varlesh";
|
||||
repo = "material-cursors";
|
||||
rev = "2a5f302fefe04678c421473bed636b4d87774b4a";
|
||||
hash = "sha256-uC2qx3jF4d2tGLPnXEpogm0vyC053MvDVVdVXX8AZ60=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
inkscape
|
||||
xcursorgen
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
# Silences the inkscape warning spam.
|
||||
HOME=$(pwd) bash build.sh 2> /dev/null
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
meta = {
|
||||
description = "Material cursors for Linux";
|
||||
homepage = "https://github.com/varlesh/material-cursors";
|
||||
license = lib.licenses.gpl3Only;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = with lib.maintainers; [ RGBCube ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, python3
|
||||
, fetchFromGitHub
|
||||
, tesseract4
|
||||
, leptonica
|
||||
, wl-clipboard
|
||||
, libnotify
|
||||
, xorg
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
ps = python3.pkgs;
|
||||
|
||||
wrapperDeps = [
|
||||
leptonica
|
||||
tesseract4
|
||||
libnotify
|
||||
] ++ lib.optionals stdenv.isLinux [
|
||||
wl-clipboard
|
||||
];
|
||||
|
||||
in
|
||||
|
||||
ps.buildPythonApplication rec {
|
||||
pname = "normcap";
|
||||
version = "0.4.4";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = ps.pythonOlder "3.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dynobo";
|
||||
repo = "normcap";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-dShtmoqS9TC3PHuwq24OEOhYfBHGhDCma8Du8QCkFuI=";
|
||||
};
|
||||
|
||||
pythonRemoveDeps = [
|
||||
"PySide6-Essentials"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
ps.pythonRelaxDepsHook
|
||||
ps.poetry-core
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
ps.pyside6
|
||||
];
|
||||
|
||||
preFixup = ''
|
||||
makeWrapperArgs+=(
|
||||
"''${qtWrapperArgs[@]}"
|
||||
--set QT_QPA_PLATFORM xcb
|
||||
--prefix PATH : ${lib.makeBinPath wrapperDeps}
|
||||
)
|
||||
'';
|
||||
|
||||
nativeCheckInputs = wrapperDeps ++ [
|
||||
ps.pytestCheckHook
|
||||
ps.pytest-qt
|
||||
ps.toml
|
||||
] ++ lib.optionals stdenv.isLinux [
|
||||
ps.pytest-xvfb
|
||||
xorg.xorgserver
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
export HOME=$(mktemp -d)
|
||||
'' + lib.optionalString stdenv.isLinux ''
|
||||
# setup a virtual x11 display
|
||||
export DISPLAY=:$((2000 + $RANDOM % 1000))
|
||||
Xvfb $DISPLAY -screen 5 1024x768x8 &
|
||||
xvfb_pid=$!
|
||||
'';
|
||||
|
||||
postCheck = lib.optionalString stdenv.isLinux ''
|
||||
# cleanup the virtual x11 display
|
||||
kill $xvfb_pid
|
||||
'';
|
||||
|
||||
disabledTests = [
|
||||
# requires a wayland session (no xclip support)
|
||||
"test_wl_copy"
|
||||
# times out, unknown why
|
||||
"test_update_checker_triggers_checked_signal"
|
||||
# touches network
|
||||
"test_urls_reachable"
|
||||
# requires xdg
|
||||
"test_synchronized_capture"
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
# requires impure pbcopy
|
||||
"test_get_copy_func_with_pbcopy"
|
||||
"test_get_copy_func_without_pbcopy"
|
||||
"test_perform_pbcopy"
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
# touches network
|
||||
"tests/tests_gui/test_downloader.py"
|
||||
# fails to import, causes pytest to freeze
|
||||
"tests/tests_gui/test_language_manager.py"
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
# requires a display
|
||||
"tests/integration/test_normcap.py"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "OCR powered screen-capture tool to capture information instead of images";
|
||||
homepage = "https://dynobo.github.io/normcap/";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ cafkafk pbsds ];
|
||||
mainProgram = "normcap";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, libxcrypt
|
||||
, pam
|
||||
, pkg-config
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "passwdqc";
|
||||
version = "2.0.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "openwall";
|
||||
repo = "passwdqc";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-EgPeccqS+DDDMBVMc4bd70EMnXFuyglftxuqoaYHwNY=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
name = "0001-fix-solaris-macos-builds.patch";
|
||||
url = "https://github.com/openwall/passwdqc/commit/fbf38229857f3d1982aa305c20da5e1ea0195b3e.patch";
|
||||
hash = "sha256-FaEWROHwFzd4ZTeKyPvuAr9vcgnHEv8MhERblIU8JC4=";
|
||||
})
|
||||
];
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libxcrypt
|
||||
pam
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
|
||||
|
||||
installFlags = [
|
||||
# Yet another software that does not use GNUInstallDirs Convention...
|
||||
"BINDIR=$(out)/bin"
|
||||
"CONFDIR=$(out)/etc"
|
||||
"DEVEL_LIBDIR=$(out)/lib"
|
||||
"INCLUDEDIR=$(out)/include"
|
||||
"LOCALEDIR=$(out)/share/locale"
|
||||
"MANDIR=$(man)/man"
|
||||
"PKGCONFIGDIR=$(out)/lib/pkgconfig"
|
||||
"SECUREDIR=$(out)/lib/security"
|
||||
"SECUREDIR_DARWIN=$(out)/lib/security"
|
||||
"SHARED_LIBDIR=$(out)/lib"
|
||||
"SHARED_LIBDIR_REL=$(out)/lib"
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "https://www.openwall.com/passwdqc/";
|
||||
description = "Passphrase strength checking and enforcement";
|
||||
license = with lib.licenses; [ bsd3 ];
|
||||
maintainers = with lib.maintainers; [ AndersonTorres ];
|
||||
mainProgram = "passwdqc";
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
})
|
||||
+2
-2
@@ -2,13 +2,13 @@
|
||||
|
||||
php.buildComposerProject (finalAttrs: {
|
||||
pname = "phpunit";
|
||||
version = "10.5.0";
|
||||
version = "10.5.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sebastianbergmann";
|
||||
repo = "phpunit";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-CpgYMUJE7c2eRBYkK/vMRdGgzY7Y7K/wMmyUH+Bssjs=";
|
||||
hash = "sha256-uYSVzKLefcBMqfrHaF6pg4gohAeb6LVg8QGaTS8jwfE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-uUdgz3ZZ+3nU07pUC1sdkNgU1b1beo3sS/yySUzdZwU=";
|
||||
@@ -42,13 +42,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "polybar";
|
||||
version = "3.7.0";
|
||||
version = "3.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "polybar";
|
||||
repo = "polybar";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-Z1rL9WvEZHr5M03s9KCJ6O6rNuaK7PpwUDaatYuCocI=";
|
||||
hash = "sha256-DX648jY1vewl3ImK84gF6/vtcSCg3wtgq6Ie3fCwZoA=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, which
|
||||
, pkg-config
|
||||
, automake
|
||||
, autoconf
|
||||
, m4
|
||||
, libtool
|
||||
, gtk3
|
||||
, libv3270
|
||||
, lib3270
|
||||
, openssl
|
||||
, gettext
|
||||
, desktop-file-utils
|
||||
, glib
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pw3270";
|
||||
version = "5.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "PerryWerneck";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-Nk/OUqrWngKgb1D1Wi8q5ygKtvuRKUPhPQaLvWi1Z4g=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
which
|
||||
pkg-config
|
||||
autoconf
|
||||
automake
|
||||
libtool
|
||||
desktop-file-utils
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
gettext
|
||||
libv3270
|
||||
lib3270
|
||||
openssl
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# lib3270_build_data_filename is relative to lib3270's share - not ours.
|
||||
for f in $(find . -type f -iname "*.c"); do
|
||||
sed -i -e "s@lib3270_build_data_filename(@g_build_filename(\"$out/share/pw3270\", @" "$f"
|
||||
done
|
||||
'';
|
||||
|
||||
preConfigure = ''
|
||||
NOCONFIGURE=1 sh autogen.sh
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
# Schemas get installed to wrong directory.
|
||||
mkdir -p $out/share/glib-2.0
|
||||
mv $out/share/gsettings-schemas/${pname}-${version}/glib-2.0/schemas $out/share/glib-2.0/
|
||||
rm -rf $out/share/gsettings-schemas
|
||||
'';
|
||||
|
||||
enableParallelBuilds = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "3270 Emulator for gtk";
|
||||
homepage = "https://softwarepublico.gov.br/social/pw3270/";
|
||||
license = licenses.lgpl3Plus;
|
||||
maintainers = [ maintainers.vifino ];
|
||||
mainProgram = "pw3270";
|
||||
};
|
||||
}
|
||||
@@ -11,17 +11,18 @@
|
||||
, libxkbcommon
|
||||
, wayland
|
||||
, wayland-protocols
|
||||
, gitUpdater
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "sov";
|
||||
version = "0.92b";
|
||||
version = "0.93";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "milgra";
|
||||
repo = "sov";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-1L5D0pzcXbkz3VS7VB6ID8BJEbGeNxjo3xCr71CGcIo=";
|
||||
hash = "sha256-Oc25ixrl0QX0jBBMV34BPAixyBikvevXJ1JNGZymPhg=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -54,6 +55,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
wayland-protocols
|
||||
];
|
||||
|
||||
passthru.updateScript = gitUpdater { };
|
||||
|
||||
meta = {
|
||||
description = "Workspace overview app for sway";
|
||||
homepage = "https://github.com/milgra/sov";
|
||||
@@ -0,0 +1,54 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
, wine
|
||||
, makeBinaryWrapper
|
||||
, pkg-config
|
||||
, libGL
|
||||
, libxkbcommon
|
||||
, xorg
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "vinegar";
|
||||
version = "1.5.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vinegarhq";
|
||||
repo = "vinegar";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-1KDcc9Hms1hQgpvf/49zFJ85kDUsieNcoOTYaZWV+S0=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-UJLwSOJ4vZt3kquKllm5OMfFheZtAG5gLSA20313PpA=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config makeBinaryWrapper ];
|
||||
buildInputs = [ libGL libxkbcommon xorg.libX11 xorg.libXcursor xorg.libXfixes wine ];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
make PREFIX=$out
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
make PREFIX=$out install
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/vinegar \
|
||||
--prefix PATH : ${lib.makeBinPath [ wine ]}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "An open-source, minimal, configurable, fast bootstrapper for running Roblox on Linux";
|
||||
homepage = "https://github.com/vinegarhq/vinegar";
|
||||
changelog = "https://github.com/vinegarhq/vinegar/releases/tag/v${version}";
|
||||
mainProgram = "vinegar";
|
||||
license = licenses.gpl3Only;
|
||||
platforms = [ "x86_64-linux" "i686-linux" ];
|
||||
maintainers = with maintainers; [ nyanbinary ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{ stdenvNoCC
|
||||
, fetchFromGitHub
|
||||
, lib
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "vimix-cursor-theme";
|
||||
version = "2020-02-24";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vinceliuice";
|
||||
repo = "Vimix-cursors";
|
||||
rev = version;
|
||||
hash = "sha256-TfcDer85+UOtDMJVZJQr81dDy4ekjYgEvH1RE1IHMi4=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
sed -i 's/Vimix Cursors$/Vimix-Cursors/g' dist{,-white}/index.theme
|
||||
|
||||
install -dm 755 $out/share/icons/Vimix-Cursors{,-White}
|
||||
|
||||
cp -dr --no-preserve='ownership' dist/* $out/share/icons/Vimix-Cursors
|
||||
cp -dr --no-preserve='ownership' dist-white/* $out/share/icons/Vimix-Cursors-White
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "An x-cursor theme inspired by Materia design and based on capitaine-cursors";
|
||||
homepage = "https://github.com/vinceliuice/Vimix-cursors";
|
||||
license = licenses.gpl3Only;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ redxtech ];
|
||||
};
|
||||
}
|
||||
@@ -17,6 +17,9 @@ let
|
||||
gmenuharness = callPackage ./development/gmenuharness { };
|
||||
libusermetrics = callPackage ./development/libusermetrics { };
|
||||
lomiri-api = callPackage ./development/lomiri-api { };
|
||||
|
||||
#### Services
|
||||
biometryd = callPackage ./services/biometryd { };
|
||||
};
|
||||
in
|
||||
lib.makeScope libsForQt5.newScope packages
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitLab
|
||||
, fetchpatch
|
||||
, gitUpdater
|
||||
, testers
|
||||
, boost
|
||||
, cmake
|
||||
, cmake-extras
|
||||
, dbus
|
||||
, dbus-cpp
|
||||
, gtest
|
||||
, libapparmor
|
||||
, libelf
|
||||
, pkg-config
|
||||
, process-cpp
|
||||
, properties-cpp
|
||||
, qtbase
|
||||
, qtdeclarative
|
||||
, sqlite
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "biometryd";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "ubports";
|
||||
repo = "development/core/biometryd";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-b095rsQnd63Ziqe+rn3ROo4LGXZxZ3Sa6h3apzCuyCs=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
];
|
||||
|
||||
patches = [
|
||||
# https://gitlab.com/ubports/development/core/biometryd/-/merge_requests/31
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.com/OPNA2608/biometryd/-/commit/d01d979e4f98c6473761d1ace308aa182017804e.patch";
|
||||
hash = "sha256-JxL3BLuh33ptfneU1y2qNGFKpeMlZlTMwCK97Rk3aTA=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.com/OPNA2608/biometryd/-/commit/3cec6a3d42ea6aba8892da2c771b317f44daf9e2.patch";
|
||||
hash = "sha256-Ij/aio38WmZ+NsUSbM195Gwb83goWIcCnJvGwAOJi50=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.com/OPNA2608/biometryd/-/commit/e89bd9444bc1cfe84a9aa93faa23057c80f39564.patch";
|
||||
hash = "sha256-1vEG349X9+SvY/f3no/l5cMVGpdzC8h/8XOZwL/70Dc=";
|
||||
})
|
||||
|
||||
# https://gitlab.com/ubports/development/core/biometryd/-/merge_requests/32
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.com/OPNA2608/biometryd/-/commit/9e52fad0139c5a45f69e6a6256b2b5ff54f77740.patch";
|
||||
hash = "sha256-DZSdzKq6EYgAllKSDgkGk2g57zHN+gI5fOoj7U5AcKY=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Remove with !31 patches, fetchpatch can't apply renames
|
||||
pushd data
|
||||
for type in conf service; do
|
||||
mv biometryd.$type biometryd.$type.in
|
||||
substituteInPlace biometryd.$type.in \
|
||||
--replace '/usr/bin' "\''${CMAKE_INSTALL_FULL_BINDIR}"
|
||||
done
|
||||
popd
|
||||
|
||||
# Uses pkg_get_variable, cannot substitute prefix with that
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace 'pkg_get_variable(SYSTEMD_SYSTEM_UNIT_DIR systemd systemdsystemunitdir)' 'set(SYSTEMD_SYSTEM_UNIT_DIR "${placeholder "out"}/lib/systemd/system")'
|
||||
|
||||
substituteInPlace src/biometry/qml/Biometryd/CMakeLists.txt \
|
||||
--replace "\''${CMAKE_INSTALL_LIBDIR}/qt5/qml" "\''${CMAKE_INSTALL_PREFIX}/${qtbase.qtQmlPrefix}"
|
||||
'' + lib.optionalString (!finalAttrs.doCheck) ''
|
||||
sed -i -e '/add_subdirectory(tests)/d' CMakeLists.txt
|
||||
'';
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
qtdeclarative # qmlplugindump
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
cmake-extras
|
||||
dbus
|
||||
dbus-cpp
|
||||
libapparmor
|
||||
libelf
|
||||
process-cpp
|
||||
properties-cpp
|
||||
qtbase
|
||||
qtdeclarative
|
||||
sqlite
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
gtest
|
||||
];
|
||||
|
||||
dontWrapQtApps = true;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DENABLE_WERROR=OFF"
|
||||
"-DWITH_HYBRIS=OFF"
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
# Generating plugins.qmltypes (also used in checkPhase?)
|
||||
export QT_PLUGIN_PATH=${lib.getBin qtbase}/${qtbase.qtPluginPrefix}
|
||||
'';
|
||||
|
||||
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Mediates/multiplexes access to biometric devices";
|
||||
longDescription = ''
|
||||
biometryd mediates and multiplexes access to biometric devices present
|
||||
on the system, enabling applications and system components to leverage
|
||||
them for identification and verification of users.
|
||||
'';
|
||||
homepage = "https://gitlab.com/ubports/development/core/biometryd";
|
||||
license = licenses.lgpl3Only;
|
||||
maintainers = teams.lomiri.members;
|
||||
mainProgram = "biometryd";
|
||||
platforms = platforms.linux;
|
||||
pkgConfigModules = [
|
||||
"biometryd"
|
||||
];
|
||||
};
|
||||
})
|
||||
@@ -1,15 +1,25 @@
|
||||
{ lib, mkXfceDerivation, dbus, dbus-glib
|
||||
, gst_all_1, gtk3, libnotify, libxfce4ui, libxfce4util
|
||||
, taglib, xfconf }:
|
||||
{ lib
|
||||
, mkXfceDerivation
|
||||
, dbus
|
||||
, dbus-glib
|
||||
, gst_all_1
|
||||
, gtk3
|
||||
, libnotify
|
||||
, libX11
|
||||
, libxfce4ui
|
||||
, libxfce4util
|
||||
, taglib
|
||||
, xfconf
|
||||
}:
|
||||
|
||||
# Doesn't seem to find H.264 codec even though built with gst-plugins-bad.
|
||||
|
||||
mkXfceDerivation {
|
||||
category = "apps";
|
||||
pname = "parole";
|
||||
version = "4.18.0";
|
||||
version = "4.18.1";
|
||||
|
||||
sha256 = "sha256-TLH9ZUggjclJlbBg3EBVgbcrdiMZ8n+cGDgfNgYNiPI=";
|
||||
sha256 = "sha256-g+Wy90tHpCeylbU7aUa8578ehmuyWI5WlCK7YdJKlNQ=";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/plugins/mpris2/Makefile.am \
|
||||
@@ -25,6 +35,7 @@ mkXfceDerivation {
|
||||
gst-plugins-ugly
|
||||
gtk3
|
||||
libnotify
|
||||
libX11
|
||||
libxfce4ui
|
||||
libxfce4util
|
||||
taglib
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
mkXfceDerivation {
|
||||
category = "xfce";
|
||||
pname = "tumbler";
|
||||
version = "4.18.1";
|
||||
version = "4.18.2";
|
||||
|
||||
sha256 = "sha256-hn77W8IsvwNc9xSuDe9rXw9499olOvvJ2P7q+26HIG8=";
|
||||
sha256 = "sha256-thioE0q2qnV4weJFPz8OWoHIRuUcXnQEviwBtCWsSV4=";
|
||||
|
||||
buildInputs = [
|
||||
libxfce4util
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
mkXfceDerivation {
|
||||
category = "xfce";
|
||||
pname = "xfce4-power-manager";
|
||||
version = "4.18.2";
|
||||
version = "4.18.3";
|
||||
|
||||
sha256 = "sha256-1+DP5CACzzj96FyRTeCdVEFORnpzFT49d9Uk1iijbFs=";
|
||||
sha256 = "sha256-CuW2siApho7u8P01t15dAiqNAiwQzAMZsEugYuKN4kM=";
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
mkXfceDerivation {
|
||||
category = "xfce";
|
||||
pname = "xfce4-settings";
|
||||
version = "4.18.3";
|
||||
version = "4.18.4";
|
||||
|
||||
sha256 = "sha256-QGh5th790qkvqchUfi+kOAJ9A1M+zEIzMxOM5eCGPEk=";
|
||||
sha256 = "sha256-f6ldTmTSvfRjn6j/LKIoFI3cbYZFtNdnAq3dQewc948=";
|
||||
|
||||
postPatch = ''
|
||||
for f in xfsettingsd/pointers.c dialogs/mouse-settings/main.c; do
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "flix";
|
||||
version = "0.41.0";
|
||||
version = "0.42.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/flix/flix/releases/download/v${version}/flix.jar";
|
||||
sha256 = "sha256-bDeqwk+grkCxmGE9H8Ks7Q8KvLxNCzaLe44DlR6E7YE=";
|
||||
sha256 = "sha256-fkYyJxBlJWUkXGgcszerNKFNEFRIOm6tUyiTZj0q11k=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
, boehmgc
|
||||
, openssl
|
||||
, zlib
|
||||
, odbcSupport ? true
|
||||
, odbcSupport ? !stdenv.isDarwin
|
||||
, libiodbc
|
||||
}:
|
||||
|
||||
@@ -31,8 +31,10 @@ stdenv.mkDerivation rec {
|
||||
|
||||
buildInputs = [ libffi boehmgc openssl zlib ] ++ lib.optional odbcSupport libiodbc;
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-Wno-error=int-conversion";
|
||||
|
||||
meta = with lib; {
|
||||
broken = stdenv.isDarwin;
|
||||
broken = stdenv.isDarwin && stdenv.isAarch64;
|
||||
description = "An R6RS/R7RS Scheme system";
|
||||
longDescription = ''
|
||||
Sagittarius Scheme is a free Scheme implementation supporting
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
} @ args:
|
||||
|
||||
let
|
||||
inherit (lib) getVersion versionAtLeast optional;
|
||||
inherit (lib) getVersion versionAtLeast optional concatStringsSep;
|
||||
|
||||
in
|
||||
assert versionAtLeast (getVersion erlang) minimumOTPVersion;
|
||||
@@ -36,7 +36,12 @@ stdenv.mkDerivation ({
|
||||
LANG = "C.UTF-8";
|
||||
LC_TYPE = "C.UTF-8";
|
||||
|
||||
buildFlags = optional debugInfo "ERL_COMPILER_OPTIONS=debug_info";
|
||||
ERLC_OPTS =
|
||||
let
|
||||
erlc_opts = [ "deterministic" ]
|
||||
++ optional debugInfo "debug_info";
|
||||
in
|
||||
"[${concatStringsSep "," erlc_opts}]";
|
||||
|
||||
preBuild = ''
|
||||
patchShebangs ${escriptPath} || true
|
||||
|
||||
+171
-126
@@ -12,23 +12,24 @@ to update all non-pinned libraries in that folder.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import collections
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
import requests
|
||||
from concurrent.futures import ThreadPoolExecutor as Pool
|
||||
from packaging.version import Version as _Version
|
||||
from packaging.version import InvalidVersion
|
||||
from packaging.specifiers import SpecifierSet
|
||||
from typing import Optional, Any
|
||||
import collections
|
||||
import subprocess
|
||||
from concurrent.futures import ThreadPoolExecutor as Pool
|
||||
from typing import Any, Optional
|
||||
|
||||
import requests
|
||||
from packaging.specifiers import SpecifierSet
|
||||
from packaging.version import InvalidVersion
|
||||
from packaging.version import Version as _Version
|
||||
|
||||
INDEX = "https://pypi.io/pypi"
|
||||
"""url of PyPI"""
|
||||
|
||||
EXTENSIONS = ['tar.gz', 'tar.bz2', 'tar', 'zip', '.whl']
|
||||
EXTENSIONS = ["tar.gz", "tar.bz2", "tar", "zip", ".whl"]
|
||||
"""Permitted file extensions. These are evaluated from left to right and the first occurance is returned."""
|
||||
|
||||
PRERELEASES = False
|
||||
@@ -37,13 +38,16 @@ BULK_UPDATE = False
|
||||
|
||||
GIT = "git"
|
||||
|
||||
NIXPKGS_ROOT = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode('utf-8').strip()
|
||||
NIXPKGS_ROOT = (
|
||||
subprocess.check_output(["git", "rev-parse", "--show-toplevel"])
|
||||
.decode("utf-8")
|
||||
.strip()
|
||||
)
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
|
||||
class Version(_Version, collections.abc.Sequence):
|
||||
|
||||
def __init__(self, version):
|
||||
super().__init__(version)
|
||||
# We cannot use `str(Version(0.04.21))` because that becomes `0.4.21`
|
||||
@@ -65,7 +69,7 @@ def _get_values(attribute, text):
|
||||
|
||||
:returns: List of matches.
|
||||
"""
|
||||
regex = fr'{re.escape(attribute)}\s+=\s+"(.*)";'
|
||||
regex = rf'{re.escape(attribute)}\s+=\s+"(.*)";'
|
||||
regex = re.compile(regex)
|
||||
values = regex.findall(text)
|
||||
return values
|
||||
@@ -73,14 +77,19 @@ def _get_values(attribute, text):
|
||||
|
||||
def _get_attr_value(attr_path: str) -> Optional[Any]:
|
||||
try:
|
||||
response = subprocess.check_output([
|
||||
"nix",
|
||||
"--extra-experimental-features", "nix-command",
|
||||
"eval",
|
||||
"-f", f"{NIXPKGS_ROOT}/default.nix",
|
||||
"--json",
|
||||
f"{attr_path}"
|
||||
])
|
||||
response = subprocess.check_output(
|
||||
[
|
||||
"nix",
|
||||
"--extra-experimental-features",
|
||||
"nix-command",
|
||||
"eval",
|
||||
"-f",
|
||||
f"{NIXPKGS_ROOT}/default.nix",
|
||||
"--json",
|
||||
f"{attr_path}",
|
||||
],
|
||||
stderr=subprocess.DEVNULL,
|
||||
)
|
||||
return json.loads(response.decode())
|
||||
except (subprocess.CalledProcessError, ValueError):
|
||||
return None
|
||||
@@ -100,12 +109,13 @@ def _get_unique_value(attribute, text):
|
||||
else:
|
||||
raise ValueError("no value found for {}".format(attribute))
|
||||
|
||||
|
||||
def _get_line_and_value(attribute, text, value=None):
|
||||
"""Match attribute in text. Return the line and the value of the attribute."""
|
||||
if value is None:
|
||||
regex = rf'({re.escape(attribute)}\s+=\s+\"(.*)\";)'
|
||||
regex = rf"({re.escape(attribute)}\s+=\s+\"(.*)\";)"
|
||||
else:
|
||||
regex = rf'({re.escape(attribute)}\s+=\s+\"({re.escape(value)})\";)'
|
||||
regex = rf"({re.escape(attribute)}\s+=\s+\"({re.escape(value)})\";)"
|
||||
regex = re.compile(regex)
|
||||
results = regex.findall(text)
|
||||
n = len(results)
|
||||
@@ -138,7 +148,7 @@ def _fetch_page(url):
|
||||
|
||||
def _fetch_github(url):
|
||||
headers = {}
|
||||
token = os.environ.get('GITHUB_API_TOKEN')
|
||||
token = os.environ.get("GITHUB_API_TOKEN")
|
||||
if token:
|
||||
headers["Authorization"] = f"token {token}"
|
||||
r = requests.get(url, headers=headers)
|
||||
@@ -151,31 +161,26 @@ def _fetch_github(url):
|
||||
|
||||
def _hash_to_sri(algorithm, value):
|
||||
"""Convert a hash to its SRI representation"""
|
||||
return subprocess.check_output([
|
||||
"nix",
|
||||
"hash",
|
||||
"to-sri",
|
||||
"--type", algorithm,
|
||||
value
|
||||
]).decode().strip()
|
||||
return (
|
||||
subprocess.check_output(["nix", "hash", "to-sri", "--type", algorithm, value])
|
||||
.decode()
|
||||
.strip()
|
||||
)
|
||||
|
||||
|
||||
def _skip_bulk_update(attr_name: str) -> bool:
|
||||
return bool(_get_attr_value(
|
||||
f"{attr_name}.skipBulkUpdate"
|
||||
))
|
||||
return bool(_get_attr_value(f"{attr_name}.skipBulkUpdate"))
|
||||
|
||||
|
||||
SEMVER = {
|
||||
'major' : 0,
|
||||
'minor' : 1,
|
||||
'patch' : 2,
|
||||
"major": 0,
|
||||
"minor": 1,
|
||||
"patch": 2,
|
||||
}
|
||||
|
||||
|
||||
def _determine_latest_version(current_version, target, versions):
|
||||
"""Determine latest version, given `target`.
|
||||
"""
|
||||
"""Determine latest version, given `target`."""
|
||||
current_version = Version(current_version)
|
||||
|
||||
def _parse_versions(versions):
|
||||
@@ -193,7 +198,7 @@ def _determine_latest_version(current_version, target, versions):
|
||||
if len(ceiling) == 0:
|
||||
ceiling = None
|
||||
else:
|
||||
ceiling[-1]+=1
|
||||
ceiling[-1] += 1
|
||||
ceiling = Version(".".join(map(str, ceiling)))
|
||||
|
||||
# We do not want prereleases
|
||||
@@ -210,17 +215,19 @@ def _get_latest_version_pypi(package, extension, current_version, target):
|
||||
url = "{}/{}/json".format(INDEX, package)
|
||||
json = _fetch_page(url)
|
||||
|
||||
versions = json['releases'].keys()
|
||||
versions = json["releases"].keys()
|
||||
version = _determine_latest_version(current_version, target, versions)
|
||||
|
||||
try:
|
||||
releases = json['releases'][version]
|
||||
releases = json["releases"][version]
|
||||
except KeyError as e:
|
||||
raise KeyError('Could not find version {} for {}'.format(version, package)) from e
|
||||
raise KeyError(
|
||||
"Could not find version {} for {}".format(version, package)
|
||||
) from e
|
||||
for release in releases:
|
||||
if release['filename'].endswith(extension):
|
||||
if release["filename"].endswith(extension):
|
||||
# TODO: In case of wheel we need to do further checks!
|
||||
sha256 = release['digests']['sha256']
|
||||
sha256 = release["digests"]["sha256"]
|
||||
break
|
||||
else:
|
||||
sha256 = None
|
||||
@@ -240,33 +247,40 @@ def _get_latest_version_github(package, extension, current_version, target):
|
||||
attr_path = os.environ.get("UPDATE_NIX_ATTR_PATH", f"python3Packages.{package}")
|
||||
try:
|
||||
homepage = subprocess.check_output(
|
||||
["nix", "eval", "-f", f"{NIXPKGS_ROOT}/default.nix", "--raw", f"{attr_path}.src.meta.homepage"])\
|
||||
.decode('utf-8')
|
||||
[
|
||||
"nix",
|
||||
"eval",
|
||||
"-f",
|
||||
f"{NIXPKGS_ROOT}/default.nix",
|
||||
"--raw",
|
||||
f"{attr_path}.src.meta.homepage",
|
||||
]
|
||||
).decode("utf-8")
|
||||
except Exception as e:
|
||||
raise ValueError(f"Unable to determine homepage: {e}")
|
||||
owner_repo = homepage[len("https://github.com/"):] # remove prefix
|
||||
owner_repo = homepage[len("https://github.com/") :] # remove prefix
|
||||
owner, repo = owner_repo.split("/")
|
||||
|
||||
url = f"https://api.github.com/repos/{owner}/{repo}/releases"
|
||||
all_releases = _fetch_github(url)
|
||||
releases = list(filter(lambda x: not x['prerelease'], all_releases))
|
||||
releases = list(filter(lambda x: not x["prerelease"], all_releases))
|
||||
|
||||
if len(releases) == 0:
|
||||
raise ValueError(f"{homepage} does not contain any stable releases")
|
||||
|
||||
versions = map(lambda x: strip_prefix(x['tag_name']), releases)
|
||||
versions = map(lambda x: strip_prefix(x["tag_name"]), releases)
|
||||
version = _determine_latest_version(current_version, target, versions)
|
||||
|
||||
release = next(filter(lambda x: strip_prefix(x['tag_name']) == version, releases))
|
||||
prefix = get_prefix(release['tag_name'])
|
||||
release = next(filter(lambda x: strip_prefix(x["tag_name"]) == version, releases))
|
||||
prefix = get_prefix(release["tag_name"])
|
||||
|
||||
# some attributes require using the fetchgit
|
||||
git_fetcher_args = []
|
||||
if (_get_attr_value(f"{attr_path}.src.fetchSubmodules")):
|
||||
if _get_attr_value(f"{attr_path}.src.fetchSubmodules"):
|
||||
git_fetcher_args.append("--fetch-submodules")
|
||||
if (_get_attr_value(f"{attr_path}.src.fetchLFS")):
|
||||
if _get_attr_value(f"{attr_path}.src.fetchLFS"):
|
||||
git_fetcher_args.append("--fetch-lfs")
|
||||
if (_get_attr_value(f"{attr_path}.src.leaveDotGit")):
|
||||
if _get_attr_value(f"{attr_path}.src.leaveDotGit"):
|
||||
git_fetcher_args.append("--leave-dotGit")
|
||||
|
||||
if git_fetcher_args:
|
||||
@@ -274,8 +288,10 @@ def _get_latest_version_github(package, extension, current_version, target):
|
||||
cmd = [
|
||||
"nix-prefetch-git",
|
||||
f"https://github.com/{owner}/{repo}.git",
|
||||
"--hash", algorithm,
|
||||
"--rev", f"refs/tags/{release['tag_name']}"
|
||||
"--hash",
|
||||
algorithm,
|
||||
"--rev",
|
||||
f"refs/tags/{release['tag_name']}",
|
||||
]
|
||||
cmd.extend(git_fetcher_args)
|
||||
response = subprocess.check_output(cmd)
|
||||
@@ -283,45 +299,60 @@ def _get_latest_version_github(package, extension, current_version, target):
|
||||
hash = _hash_to_sri(algorithm, document[algorithm])
|
||||
else:
|
||||
try:
|
||||
hash = subprocess.check_output([
|
||||
"nix-prefetch-url",
|
||||
"--type", "sha256",
|
||||
"--unpack",
|
||||
f"{release['tarball_url']}"
|
||||
], stderr=subprocess.DEVNULL).decode('utf-8').strip()
|
||||
hash = (
|
||||
subprocess.check_output(
|
||||
[
|
||||
"nix-prefetch-url",
|
||||
"--type",
|
||||
"sha256",
|
||||
"--unpack",
|
||||
f"{release['tarball_url']}",
|
||||
],
|
||||
stderr=subprocess.DEVNULL,
|
||||
)
|
||||
.decode("utf-8")
|
||||
.strip()
|
||||
)
|
||||
except (subprocess.CalledProcessError, UnicodeError):
|
||||
# this may fail if they have both a branch and a tag of the same name, attempt tag name
|
||||
tag_url = str(release['tarball_url']).replace("tarball","tarball/refs/tags")
|
||||
hash = subprocess.check_output([
|
||||
"nix-prefetch-url",
|
||||
"--type", "sha256",
|
||||
"--unpack",
|
||||
tag_url
|
||||
], stderr=subprocess.DEVNULL).decode('utf-8').strip()
|
||||
tag_url = str(release["tarball_url"]).replace(
|
||||
"tarball", "tarball/refs/tags"
|
||||
)
|
||||
hash = (
|
||||
subprocess.check_output(
|
||||
["nix-prefetch-url", "--type", "sha256", "--unpack", tag_url],
|
||||
stderr=subprocess.DEVNULL,
|
||||
)
|
||||
.decode("utf-8")
|
||||
.strip()
|
||||
)
|
||||
|
||||
return version, hash, prefix
|
||||
|
||||
|
||||
FETCHERS = {
|
||||
'fetchFromGitHub' : _get_latest_version_github,
|
||||
'fetchPypi' : _get_latest_version_pypi,
|
||||
'fetchurl' : _get_latest_version_pypi,
|
||||
"fetchFromGitHub": _get_latest_version_github,
|
||||
"fetchPypi": _get_latest_version_pypi,
|
||||
"fetchurl": _get_latest_version_pypi,
|
||||
}
|
||||
|
||||
|
||||
DEFAULT_SETUPTOOLS_EXTENSION = 'tar.gz'
|
||||
DEFAULT_SETUPTOOLS_EXTENSION = "tar.gz"
|
||||
|
||||
|
||||
FORMATS = {
|
||||
'setuptools' : DEFAULT_SETUPTOOLS_EXTENSION,
|
||||
'wheel' : 'whl',
|
||||
'pyproject' : 'tar.gz',
|
||||
'flit' : 'tar.gz'
|
||||
"setuptools": DEFAULT_SETUPTOOLS_EXTENSION,
|
||||
"wheel": "whl",
|
||||
"pyproject": "tar.gz",
|
||||
"flit": "tar.gz",
|
||||
}
|
||||
|
||||
|
||||
def _determine_fetcher(text):
|
||||
# Count occurrences of fetchers.
|
||||
nfetchers = sum(text.count('src = {}'.format(fetcher)) for fetcher in FETCHERS.keys())
|
||||
nfetchers = sum(
|
||||
text.count("src = {}".format(fetcher)) for fetcher in FETCHERS.keys()
|
||||
)
|
||||
if nfetchers == 0:
|
||||
raise ValueError("no fetcher.")
|
||||
elif nfetchers > 1:
|
||||
@@ -329,7 +360,7 @@ def _determine_fetcher(text):
|
||||
else:
|
||||
# Then we check which fetcher to use.
|
||||
for fetcher in FETCHERS.keys():
|
||||
if 'src = {}'.format(fetcher) in text:
|
||||
if "src = {}".format(fetcher) in text:
|
||||
return fetcher
|
||||
|
||||
|
||||
@@ -341,47 +372,46 @@ def _determine_extension(text, fetcher):
|
||||
- fetchurl, we determine the extension from the url.
|
||||
- fetchFromGitHub we simply use `.tar.gz`.
|
||||
"""
|
||||
if fetcher == 'fetchPypi':
|
||||
if fetcher == "fetchPypi":
|
||||
try:
|
||||
src_format = _get_unique_value('format', text)
|
||||
src_format = _get_unique_value("format", text)
|
||||
except ValueError:
|
||||
src_format = None # format was not given
|
||||
src_format = None # format was not given
|
||||
|
||||
try:
|
||||
extension = _get_unique_value('extension', text)
|
||||
extension = _get_unique_value("extension", text)
|
||||
except ValueError:
|
||||
extension = None # extension was not given
|
||||
extension = None # extension was not given
|
||||
|
||||
if extension is None:
|
||||
if src_format is None:
|
||||
src_format = 'setuptools'
|
||||
elif src_format == 'other':
|
||||
src_format = "setuptools"
|
||||
elif src_format == "other":
|
||||
raise ValueError("Don't know how to update a format='other' package.")
|
||||
extension = FORMATS[src_format]
|
||||
|
||||
elif fetcher == 'fetchurl':
|
||||
url = _get_unique_value('url', text)
|
||||
elif fetcher == "fetchurl":
|
||||
url = _get_unique_value("url", text)
|
||||
extension = os.path.splitext(url)[1]
|
||||
if 'pypi' not in url:
|
||||
raise ValueError('url does not point to PyPI.')
|
||||
if "pypi" not in url:
|
||||
raise ValueError("url does not point to PyPI.")
|
||||
|
||||
elif fetcher == 'fetchFromGitHub':
|
||||
elif fetcher == "fetchFromGitHub":
|
||||
extension = "tar.gz"
|
||||
|
||||
return extension
|
||||
|
||||
|
||||
def _update_package(path, target):
|
||||
|
||||
# Read the expression
|
||||
with open(path, 'r') as f:
|
||||
with open(path, "r") as f:
|
||||
text = f.read()
|
||||
|
||||
# Determine pname. Many files have more than one pname
|
||||
pnames = _get_values('pname', text)
|
||||
pnames = _get_values("pname", text)
|
||||
|
||||
# Determine version.
|
||||
version = _get_unique_value('version', text)
|
||||
version = _get_unique_value("version", text)
|
||||
|
||||
# First we check how many fetchers are mentioned.
|
||||
fetcher = _determine_fetcher(text)
|
||||
@@ -393,8 +423,12 @@ def _update_package(path, target):
|
||||
for pname in pnames:
|
||||
if BULK_UPDATE and _skip_bulk_update(f"python3Packages.{pname}"):
|
||||
raise ValueError(f"Bulk update skipped for {pname}")
|
||||
elif _get_attr_value(f"python3Packages.{pname}.cargoDeps") is not None:
|
||||
raise ValueError(f"Cargo dependencies are unsupported, skipping {pname}")
|
||||
try:
|
||||
new_version, new_sha256, prefix = FETCHERS[fetcher](pname, extension, version, target)
|
||||
new_version, new_sha256, prefix = FETCHERS[fetcher](
|
||||
pname, extension, version, target
|
||||
)
|
||||
successful_fetch = True
|
||||
break
|
||||
except ValueError:
|
||||
@@ -411,7 +445,7 @@ def _update_package(path, target):
|
||||
if not new_sha256:
|
||||
raise ValueError("no file available for {}.".format(pname))
|
||||
|
||||
text = _replace_value('version', new_version, text)
|
||||
text = _replace_value("version", new_version, text)
|
||||
|
||||
# hashes from pypi are 16-bit encoded sha256's, normalize it to sri to avoid merge conflicts
|
||||
# sri hashes have been the default format since nix 2.4+
|
||||
@@ -421,16 +455,16 @@ def _update_package(path, target):
|
||||
if old_hash := _get_attr_value(f"python3Packages.{pname}.src.outputHash"):
|
||||
# fetchers can specify a sha256, or a sri hash
|
||||
try:
|
||||
text = _replace_value('hash', sri_hash, text, old_hash)
|
||||
text = _replace_value("hash", sri_hash, text, old_hash)
|
||||
except ValueError:
|
||||
text = _replace_value('sha256', sri_hash, text, old_hash)
|
||||
text = _replace_value("sha256", sri_hash, text, old_hash)
|
||||
else:
|
||||
raise ValueError(f"Unable to retrieve old hash for {pname}")
|
||||
|
||||
if fetcher == 'fetchFromGitHub':
|
||||
if fetcher == "fetchFromGitHub":
|
||||
# in the case of fetchFromGitHub, it's common to see `rev = version;` or `rev = "v${version}";`
|
||||
# in which no string value is meant to be substituted. However, we can just overwrite the previous value.
|
||||
regex = r'(rev\s+=\s+[^;]*;)'
|
||||
regex = r"(rev\s+=\s+[^;]*;)"
|
||||
regex = re.compile(regex)
|
||||
matches = regex.findall(text)
|
||||
n = len(matches)
|
||||
@@ -442,30 +476,33 @@ def _update_package(path, target):
|
||||
match = matches[0]
|
||||
text = text.replace(match, f'rev = "refs/tags/{prefix}${{version}}";')
|
||||
# incase there's no prefix, just rewrite without interpolation
|
||||
text = text.replace('"${version}";', 'version;')
|
||||
text = text.replace('"${version}";', "version;")
|
||||
|
||||
with open(path, 'w') as f:
|
||||
with open(path, "w") as f:
|
||||
f.write(text)
|
||||
|
||||
logging.info("Path {}: updated {} from {} to {}".format(path, pname, version, new_version))
|
||||
logging.info(
|
||||
"Path {}: updated {} from {} to {}".format(
|
||||
path, pname, version, new_version
|
||||
)
|
||||
)
|
||||
|
||||
result = {
|
||||
'path' : path,
|
||||
'target': target,
|
||||
'pname': pname,
|
||||
'old_version' : version,
|
||||
'new_version' : new_version,
|
||||
"path": path,
|
||||
"target": target,
|
||||
"pname": pname,
|
||||
"old_version": version,
|
||||
"new_version": new_version,
|
||||
#'fetcher' : fetcher,
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def _update(path, target):
|
||||
|
||||
# We need to read and modify a Nix expression.
|
||||
if os.path.isdir(path):
|
||||
path = os.path.join(path, 'default.nix')
|
||||
path = os.path.join(path, "default.nix")
|
||||
|
||||
# If a default.nix does not exist, we quit.
|
||||
if not os.path.isfile(path):
|
||||
@@ -485,32 +522,41 @@ def _update(path, target):
|
||||
|
||||
|
||||
def _commit(path, pname, old_version, new_version, pkgs_prefix="python: ", **kwargs):
|
||||
"""Commit result.
|
||||
"""
|
||||
"""Commit result."""
|
||||
|
||||
msg = f'{pkgs_prefix}{pname}: {old_version} -> {new_version}'
|
||||
msg = f"{pkgs_prefix}{pname}: {old_version} -> {new_version}"
|
||||
|
||||
if changelog := _get_attr_value(f"{pkgs_prefix}{pname}.meta.changelog"):
|
||||
msg += f"\n\n{changelog}"
|
||||
|
||||
try:
|
||||
subprocess.check_call([GIT, 'add', path])
|
||||
subprocess.check_call([GIT, 'commit', '-m', msg])
|
||||
subprocess.check_call([GIT, "add", path])
|
||||
subprocess.check_call([GIT, "commit", "-m", msg])
|
||||
except subprocess.CalledProcessError as e:
|
||||
subprocess.check_call([GIT, 'checkout', path])
|
||||
raise subprocess.CalledProcessError(f'Could not commit {path}') from e
|
||||
subprocess.check_call([GIT, "checkout", path])
|
||||
raise subprocess.CalledProcessError(f"Could not commit {path}") from e
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
epilog = """
|
||||
environment variables:
|
||||
GITHUB_API_TOKEN\tGitHub API token used when updating github packages
|
||||
"""
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, epilog=epilog)
|
||||
parser.add_argument('package', type=str, nargs='+')
|
||||
parser.add_argument('--target', type=str, choices=SEMVER.keys(), default='major')
|
||||
parser.add_argument('--commit', action='store_true', help='Create a commit for each package update')
|
||||
parser.add_argument('--use-pkgs-prefix', action='store_true', help='Use python3Packages.${pname}: instead of python: ${pname}: when making commits')
|
||||
parser = argparse.ArgumentParser(
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter, epilog=epilog
|
||||
)
|
||||
parser.add_argument("package", type=str, nargs="+")
|
||||
parser.add_argument("--target", type=str, choices=SEMVER.keys(), default="major")
|
||||
parser.add_argument(
|
||||
"--commit", action="store_true", help="Create a commit for each package update"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--use-pkgs-prefix",
|
||||
action="store_true",
|
||||
help="Use python3Packages.${pname}: instead of python: ${pname}: when making commits",
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
target = args.target
|
||||
@@ -545,6 +591,5 @@ environment variables:
|
||||
logging.info("{} package(s) updated".format(count))
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, cctools-port
|
||||
, perl
|
||||
, CoreServices
|
||||
, ApplicationServices
|
||||
@@ -29,6 +30,10 @@ stdenv.mkDerivation rec {
|
||||
--replace '`sw_vers -productVersion`' '"$MACOSX_DEPLOYMENT_TARGET"'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
|
||||
cctools-port
|
||||
];
|
||||
|
||||
buildInputs = [ perl ] ++ lib.optionals stdenv.isDarwin [ CoreServices ApplicationServices ];
|
||||
doCheck = false; # MoarVM does not come with its own test suite
|
||||
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "wasmtime";
|
||||
version = "15.0.0";
|
||||
version = "15.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bytecodealliance";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-oX8xhSyK7D5gFvgTJuXK59kcuYDa/9w25ndfwfhGPDE=";
|
||||
hash = "sha256-9vArmudz1Avxz46IS9FZIKbs8wZXoeWMd/FGLmpPitw=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
# Disable cargo-auditable until https://github.com/rust-secure-code/cargo-auditable/issues/124 is solved.
|
||||
auditable = false;
|
||||
cargoHash = "sha256-cTQrC4xXgx6HMMq5TqGnFLhGAHGt57zKXp1Cc8jEX8Y=";
|
||||
cargoHash = "sha256-/mX9zUN+dZoOCOPMeWCJ9U7KfI6JnFl8B2leYosy2jQ=";
|
||||
cargoBuildFlags = [ "--package" "wasmtime-cli" "--package" "wasmtime-c-api" ];
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
@@ -24,13 +24,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ctranslate2";
|
||||
version = "3.22.0";
|
||||
version = "3.23.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "OpenNMT";
|
||||
repo = "CTranslate2";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Fw0pMTc0Zmr4RfH2rdPgpOODZW9CL5UbDbIeH6A4zZQ=";
|
||||
hash = "sha256-jqeLNKOGdGtAVx7ExGGDxxgi5zDmQgmJ6bxIuguaM3k=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user