Merge master into staging-next

This commit is contained in:
github-actions[bot]
2024-12-19 12:06:19 +00:00
committed by GitHub
36 changed files with 2622 additions and 2378 deletions
+9 -3
View File
@@ -81,12 +81,18 @@ in
};
config = lib.mkIf cfg.enable {
boot.initrd.systemd.dmVerity.enable = true;
boot.initrd = {
systemd.dmVerity.enable = true;
supportedFilesystems = {
${config.image.repart.partitions.${cfg.partitionIds.store}.repartConfig.Format} =
lib.mkDefault true;
};
};
image.repart.partitions = {
# dm-verity hash partition
${cfg.partitionIds.store-verity}.repartConfig = {
Type = partitionTypes.usr-verity;
Type = lib.mkDefault partitionTypes.usr-verity;
Verity = "hash";
VerityMatchKey = lib.mkDefault verityMatchKey;
Label = lib.mkDefault "store-verity";
@@ -95,7 +101,7 @@ in
${cfg.partitionIds.store} = {
storePaths = [ config.system.build.toplevel ];
repartConfig = {
Type = partitionTypes.usr;
Type = lib.mkDefault partitionTypes.usr;
Verity = "data";
Format = lib.mkDefault "erofs";
VerityMatchKey = lib.mkDefault verityMatchKey;
@@ -26,7 +26,7 @@ let
lib.mapAttrsToList (key: val: "${key} = ${valueToString val}") value ));
};
# Manual initialization tool
initTool = pkgs.writeShellScriptBin "mfsmaster-init" ''
if [ ! -e ${cfg.master.settings.DATA_PATH}/metadata.mfs ]; then
cp ${pkgs.moosefs}/var/mfs/metadata.mfs.empty ${cfg.master.settings.DATA_PATH}
@@ -37,19 +37,10 @@ let
fi
'';
# master config file
masterCfg = settingsFormat.generate
"mfsmaster.cfg" cfg.master.settings;
masterCfg = settingsFormat.generate "mfsmaster.cfg" cfg.master.settings;
metaloggerCfg = settingsFormat.generate "mfsmetalogger.cfg" cfg.metalogger.settings;
chunkserverCfg = settingsFormat.generate "mfschunkserver.cfg" cfg.chunkserver.settings;
# metalogger config file
metaloggerCfg = settingsFormat.generate
"mfsmetalogger.cfg" cfg.metalogger.settings;
# chunkserver config file
chunkserverCfg = settingsFormat.generate
"mfschunkserver.cfg" cfg.chunkserver.settings;
# generic template for all daemons
systemdService = name: extraConfig: configFile: {
wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ];
@@ -66,40 +57,43 @@ let
in {
###### interface
options = {
services.moosefs = {
masterHost = lib.mkOption {
type = lib.types.str;
default = null;
description = "IP or DNS name of master host.";
description = "IP or DNS name of the MooseFS master server.";
};
runAsUser = lib.mkOption {
type = lib.types.bool;
default = true;
example = true;
description = "Run daemons as user moosefs instead of root.";
description = "Run daemons as moosefs user instead of root for better security.";
};
client.enable = lib.mkEnableOption "Moosefs client";
client.enable = lib.mkEnableOption "MooseFS client";
master = {
enable = lib.mkOption {
type = lib.types.bool;
description = ''
Enable Moosefs master daemon.
You need to run `mfsmaster-init` on a freshly installed master server to
initialize the `DATA_PATH` directory.
Enable MooseFS master daemon.
The master server coordinates all MooseFS operations and stores metadata.
'';
default = false;
};
autoInit = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Whether to automatically initialize the master's metadata directory on first run. Use with caution.";
};
exports = lib.mkOption {
type = with lib.types; listOf str;
default = null;
description = "Paths to export (see mfsexports.cfg).";
description = "Export definitions for MooseFS (see mfsexports.cfg).";
example = [
"* / rw,alldirs,admin,maproot=0:0"
"* . rw"
@@ -108,7 +102,7 @@ in {
openFirewall = lib.mkOption {
type = lib.types.bool;
description = "Whether to automatically open the necessary ports in the firewall.";
description = "Whether to automatically open required firewall ports for master service.";
default = false;
};
@@ -119,16 +113,15 @@ in {
options.DATA_PATH = lib.mkOption {
type = lib.types.str;
default = "/var/lib/mfs";
description = "Data storage directory.";
description = "Directory for storing master metadata.";
};
};
description = "Contents of config file (mfsmaster.cfg).";
description = "Master configuration options (mfsmaster.cfg).";
};
};
metalogger = {
enable = lib.mkEnableOption "Moosefs metalogger daemon";
enable = lib.mkEnableOption "MooseFS metalogger daemon that maintains a backup copy of the master's metadata";
settings = lib.mkOption {
type = lib.types.submodule {
@@ -137,28 +130,27 @@ in {
options.DATA_PATH = lib.mkOption {
type = lib.types.str;
default = "/var/lib/mfs";
description = "Data storage directory";
description = "Directory for storing metalogger data.";
};
};
description = "Contents of metalogger config file (mfsmetalogger.cfg).";
description = "Metalogger configuration options (mfsmetalogger.cfg).";
};
};
chunkserver = {
enable = lib.mkEnableOption "Moosefs chunkserver daemon";
enable = lib.mkEnableOption "MooseFS chunkserver daemon that stores file data";
openFirewall = lib.mkOption {
type = lib.types.bool;
description = "Whether to automatically open the necessary ports in the firewall.";
description = "Whether to automatically open required firewall ports for chunkserver service.";
default = false;
};
hdds = lib.mkOption {
type = with lib.types; listOf str;
default = null;
description = "Mount points to be used by chunkserver for storage (see mfshdd.cfg).";
example = [ "/mnt/hdd1" ];
default = null;
description = "Mount points used by chunkserver for data storage (see mfshdd.cfg).";
example = [ "/mnt/hdd1" "/mnt/hdd2" ];
};
settings = lib.mkOption {
@@ -168,29 +160,65 @@ in {
options.DATA_PATH = lib.mkOption {
type = lib.types.str;
default = "/var/lib/mfs";
description = "Directory for lock file.";
description = "Directory for lock files and other runtime data.";
};
};
description = "Chunkserver configuration options (mfschunkserver.cfg).";
};
};
description = "Contents of chunkserver config file (mfschunkserver.cfg).";
cgiserver = {
enable = lib.mkEnableOption ''
MooseFS CGI server for web interface.
Warning: The CGI server interface should be properly secured from unauthorized access,
as it provides full control over your MooseFS installation.
'';
openFirewall = lib.mkOption {
type = lib.types.bool;
description = "Whether to automatically open the web interface port.";
default = false;
};
settings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;
options = {
BIND_HOST = lib.mkOption {
type = lib.types.str;
default = "0.0.0.0";
description = "IP address to bind CGI server to.";
};
PORT = lib.mkOption {
type = lib.types.port;
default = 9425;
description = "Port for CGI server to listen on.";
};
};
};
default = {};
description = "CGI server configuration options.";
};
};
};
};
###### implementation
config = lib.mkIf (cfg.client.enable || cfg.master.enable || cfg.metalogger.enable || cfg.chunkserver.enable || cfg.cgiserver.enable) {
warnings = [ ( lib.mkIf (!cfg.runAsUser) "Running MooseFS services as root is not recommended.") ];
config = lib.mkIf ( cfg.client.enable || cfg.master.enable || cfg.metalogger.enable || cfg.chunkserver.enable ) {
warnings = [ ( lib.mkIf (!cfg.runAsUser) "Running moosefs services as root is not recommended.") ];
# Service settings
services.moosefs = {
master.settings = lib.mkIf cfg.master.enable {
WORKING_USER = mfsUser;
EXPORTS_FILENAME = toString ( pkgs.writeText "mfsexports.cfg"
(lib.concatStringsSep "\n" cfg.master.exports));
};
master.settings = lib.mkIf cfg.master.enable (lib.mkMerge [
{
WORKING_USER = mfsUser;
EXPORTS_FILENAME = toString ( pkgs.writeText "mfsexports.cfg"
(lib.concatStringsSep "\n" cfg.master.exports));
}
(lib.mkIf cfg.cgiserver.enable {
MFSCGISERV = toString cfg.cgiserver.settings.PORT;
})
]);
metalogger.settings = lib.mkIf cfg.metalogger.enable {
WORKING_USER = mfsUser;
@@ -205,11 +233,10 @@ in {
};
};
# Create system user account for daemons
users = lib.mkIf ( cfg.runAsUser && ( cfg.master.enable || cfg.metalogger.enable || cfg.chunkserver.enable ) ) {
users = lib.mkIf ( cfg.runAsUser && ( cfg.master.enable || cfg.metalogger.enable || cfg.chunkserver.enable || cfg.cgiserver.enable ) ) {
users.moosefs = {
isSystemUser = true;
description = "moosefs daemon user";
description = "MooseFS daemon user";
group = "moosefs";
};
groups.moosefs = {};
@@ -219,28 +246,74 @@ in {
(lib.optional cfg.client.enable pkgs.moosefs) ++
(lib.optional cfg.master.enable initTool);
networking.firewall.allowedTCPPorts =
(lib.optionals cfg.master.openFirewall [ 9419 9420 9421 ]) ++
(lib.optional cfg.chunkserver.openFirewall 9422);
networking.firewall.allowedTCPPorts = lib.mkMerge [
(lib.optionals cfg.master.openFirewall [ 9419 9420 9421 ])
(lib.optional cfg.chunkserver.openFirewall 9422)
(lib.optional (cfg.cgiserver.enable && cfg.cgiserver.openFirewall) cfg.cgiserver.settings.PORT)
];
# Ensure storage directories exist
systemd.tmpfiles.rules =
lib.optional cfg.master.enable "d ${cfg.master.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser}"
++ lib.optional cfg.metalogger.enable "d ${cfg.metalogger.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser}"
++ lib.optional cfg.chunkserver.enable "d ${cfg.chunkserver.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser}";
systemd.tmpfiles.rules = [
# Master directories
(lib.optionalString cfg.master.enable
"d ${cfg.master.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser} -")
# Service definitions
systemd.services.mfs-master = lib.mkIf cfg.master.enable
( systemdService "master" {
TimeoutStartSec = 1800;
TimeoutStopSec = 1800;
Restart = "no";
} masterCfg );
# Metalogger directories
(lib.optionalString cfg.metalogger.enable
"d ${cfg.metalogger.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser} -")
systemd.services.mfs-metalogger = lib.mkIf cfg.metalogger.enable
( systemdService "metalogger" { Restart = "on-abnormal"; } metaloggerCfg );
# Chunkserver directories
(lib.optionalString cfg.chunkserver.enable
"d ${cfg.chunkserver.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser} -")
] ++ lib.optionals (cfg.chunkserver.enable && cfg.chunkserver.hdds != null)
(map (dir: "d ${dir} 0755 ${mfsUser} ${mfsUser} -") cfg.chunkserver.hdds);
systemd.services.mfs-chunkserver = lib.mkIf cfg.chunkserver.enable
( systemdService "chunkserver" { Restart = "on-abnormal"; } chunkserverCfg );
};
systemd.services = lib.mkMerge [
(lib.mkIf cfg.master.enable {
mfs-master = (lib.mkMerge [
(systemdService "master" {
TimeoutStartSec = 1800;
TimeoutStopSec = 1800;
Restart = "on-failure";
User = mfsUser;
} masterCfg)
{
preStart = lib.mkIf cfg.master.autoInit "${initTool}/bin/mfsmaster-init";
}
]);
})
(lib.mkIf cfg.metalogger.enable {
mfs-metalogger = systemdService "metalogger" {
Restart = "on-abnormal";
User = mfsUser;
} metaloggerCfg;
})
(lib.mkIf cfg.chunkserver.enable {
mfs-chunkserver = systemdService "chunkserver" {
Restart = "on-abnormal";
User = mfsUser;
} chunkserverCfg;
})
(lib.mkIf cfg.cgiserver.enable {
mfs-cgiserv = {
description = "MooseFS CGI Server";
wantedBy = [ "multi-user.target" ];
after = [ "mfs-master.service" ];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.moosefs}/bin/mfscgiserv -D /var/lib/mfs -f start";
ExecStop = "${pkgs.moosefs}/bin/mfscgiserv -D /var/lib/mfs stop";
Restart = "on-failure";
RestartSec = "30s";
User = mfsUser;
Group = mfsUser;
WorkingDirectory = "/var/lib/mfs";
};
};
})
];
};
}
@@ -29,13 +29,6 @@
options = [ "mode=0755" ];
};
"/usr" = {
device = "/dev/mapper/usr";
# explicitly mount it read-only otherwise systemd-remount-fs will fail
options = [ "ro" ];
fsType = config.image.repart.partitions.${partitionIds.store}.repartConfig.Format;
};
# bind-mount the store
"/nix/store" = {
device = "/usr/nix/store";
+1 -2
View File
@@ -12,6 +12,7 @@ import ./make-test-python.nix (
services.moosefs.master = {
enable = true;
openFirewall = true;
autoInit = true;
exports = [
"* / rw,alldirs,admin,maproot=0:0"
"* . rw"
@@ -76,8 +77,6 @@ import ./make-test-python.nix (
# prepare master server
master.start()
master.wait_for_unit("multi-user.target")
master.succeed("mfsmaster-init")
master.succeed("systemctl restart mfs-master")
master.wait_for_unit("mfs-master.service")
metalogger.wait_for_unit("mfs-metalogger.service")
+9 -10
View File
@@ -1,7 +1,7 @@
{
lib,
stdenv,
fetchFromGitLab,
fetchFromGitHub,
meson,
ninja,
pkg-config,
@@ -19,19 +19,18 @@
stdenv.mkDerivation rec {
pname = "girara";
version = "0.4.3";
version = "0.4.5";
outputs = [
"out"
"dev"
];
src = fetchFromGitLab {
domain = "git.pwmt.org";
src = fetchFromGitHub {
owner = "pwmt";
repo = "girara";
rev = version;
hash = "sha256-/bJXdLXksTxUFC3w7zuBZY6Zh7tJxUJVbS87ENDQbDE=";
tag = version;
hash = "sha256-XjRmGgljlkvxwcbPmA9ZFAPAjbClSQDdmQU/GFeLLxI=";
};
nativeBuildInputs = [
@@ -79,15 +78,15 @@ stdenv.mkDerivation rec {
inherit zathura;
};
meta = with lib; {
homepage = "https://git.pwmt.org/pwmt/girara";
meta = {
homepage = "https://pwmt.org/projects/girara";
description = "User interface library";
longDescription = ''
girara is a library that implements a GTK based VIM-like user interface
that focuses on simplicity and minimalism.
'';
license = licenses.zlib;
platforms = platforms.linux ++ platforms.darwin;
license = lib.licenses.zlib;
platforms = lib.platforms.linux ++ lib.platforms.darwin;
maintainers = [ ];
};
}
@@ -1,8 +1,7 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
fetchurl,
meson,
ninja,
wrapGAppsHook3,
@@ -33,24 +32,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "zathura";
version = "0.5.8";
version = "0.5.11";
src = fetchFromGitHub {
owner = "pwmt";
repo = "zathura";
rev = finalAttrs.version;
hash = "sha256-k6DEJpUA3s0mGxE38aYnX7uea98LrzevJhWW1abHo/c=";
src = fetchurl {
url = "https://pwmt.org/projects/zathura/download/zathura-${finalAttrs.version}.tar.xz";
hash = "sha256-VEWKmZivD7j67y6TSoESe75LeQyG3NLIuPMjZfPRtTw=";
};
patches = [
# https://github.com/pwmt/zathura/issues/664
(fetchpatch {
name = "fix-build-on-macos.patch";
url = "https://github.com/pwmt/zathura/commit/53f151f775091abec55ccc4b63893a8f9a668588.patch";
hash = "sha256-d8lRdlBN1Kfw/aTjz8x0gvTKy+SqSYWHLQCjV7hF5MI=";
})
];
outputs = [
"bin"
"man"
+13 -7
View File
@@ -16,6 +16,7 @@
zathura_cb
(if useMupdf then zathura_pdf_mupdf else zathura_pdf_poppler)
],
stdenv,
}:
symlinkJoin {
inherit (zathura_core) version;
@@ -36,7 +37,12 @@ symlinkJoin {
let
fishCompletion = "share/fish/vendor_completions.d/zathura.fish";
in
''
(lib.optionalString stdenv.hostPlatform.isLinux ''
makeWrapper ${zathura_core.bin}/bin/zathura-sandbox $out/bin/zathura-sandbox \
--prefix PATH ":" "${lib.makeBinPath [ file ]}" \
--prefix ZATHURA_PLUGINS_PATH : "$out/lib/zathura"
'')
+ ''
makeWrapper ${zathura_core.bin}/bin/zathura $out/bin/zathura \
--prefix PATH ":" "${lib.makeBinPath [ file ]}" \
--prefix ZATHURA_PLUGINS_PATH : "$out/lib/zathura"
@@ -46,11 +52,11 @@ symlinkJoin {
# so we need to fix the path to reference $out instead.
rm "$out/${fishCompletion}"
substitute "${zathura_core.out}/${fishCompletion}" "$out/${fishCompletion}" \
--replace "${zathura_core.out}" "$out"
--replace-fail "${zathura_core.out}" "$out"
'';
meta = with lib; {
homepage = "https://pwmt.org/projects/zathura/";
meta = {
homepage = "https://pwmt.org/projects/zathura";
description = "Highly customizable and functional PDF viewer";
longDescription = ''
Zathura is a highly customizable and functional PDF viewer based on the
@@ -58,9 +64,9 @@ symlinkJoin {
is an application that provides a minimalistic and space saving interface
as well as an easy usage that mainly focuses on keyboard interaction.
'';
license = licenses.zlib;
platforms = platforms.unix;
maintainers = with maintainers; [
license = lib.licenses.zlib;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
smironov
globin
TethysSvensson
@@ -7,16 +7,16 @@
buildGoModule rec {
pname = "timoni";
version = "0.22.1";
version = "0.23.0";
src = fetchFromGitHub {
owner = "stefanprodan";
repo = "timoni";
rev = "v${version}";
hash = "sha256-bztaG+agcByiIFR4vp0QCDzL9AvLJoZRyMjwSggtwio=";
hash = "sha256-WlsBW8c6x68oM6g/bVXzPgIglMn+rPcfJKXmUZPC0n0=";
};
vendorHash = "sha256-VHR5eQWC5e45ZcpCunrUPdvFKMETRZxHLZnl7FbyFcI=";
vendorHash = "sha256-mv9H0D99am/VXTP01sXQ+4Dt513Zmo0VffkUVPyF3Kk=";
subPackages = [ "cmd/timoni" ];
nativeBuildInputs = [ installShellFiles ];
@@ -1,4 +1,8 @@
{ makeDesktopItem, pname, suiteName }:
{
makeDesktopItem,
pname,
suiteName,
}:
{
planmaker = makeDesktopItem {
@@ -1,27 +1,32 @@
{ callPackage
, fetchurl
{
callPackage,
fetchurl,
# This is a bit unusual, but makes version and hash easily
# overridable. This is useful when the upstream archive was replaced
# and nixpkgs is not in sync yet.
, officeVersion ? {
version = "1054";
edition = "2021";
hash = "sha256-dqmJUm0Qi1/GzGrI4OCHo1LwQ5KxMwZZw5EsYTMF6XU=";
}
officeVersion ? {
version = "1220";
edition = "2024";
hash = "sha256-F1Srm3/4UPifYls21MhjbpxSyLaT0gEVzEMQF0gIzi0=";
},
, ... } @ args:
...
}@args:
callPackage ./generic.nix (args // rec {
inherit (officeVersion) version edition;
callPackage ./generic.nix (
args
// rec {
inherit (officeVersion) version edition;
pname = "freeoffice";
suiteName = "FreeOffice";
pname = "freeoffice";
suiteName = "FreeOffice";
src = fetchurl {
inherit (officeVersion) hash;
url = "https://www.softmaker.net/down/softmaker-freeoffice-${edition}-${version}-amd64.tgz";
};
src = fetchurl {
inherit (officeVersion) hash;
url = "https://www.softmaker.net/down/softmaker-freeoffice-${edition}-${version}-amd64.tgz";
};
archive = "freeoffice${edition}.tar.lzma";
})
archive = "freeoffice${edition}.tar.lzma";
}
)
+101 -66
View File
@@ -1,18 +1,40 @@
{ lib, stdenv, autoPatchelfHook, makeDesktopItem, makeWrapper, copyDesktopItems
{
lib,
stdenv,
autoPatchelfHook,
makeDesktopItem,
makeWrapper,
copyDesktopItems,
# Dynamic Libraries
, curl, libGL, libX11, libXext, libXmu, libXrandr, libXrender
curl,
glib,
gst_all_1,
libGL,
libX11,
libXext,
libXmu,
libXrandr,
libXrender,
# For fixing up execution of /bin/ls, which is necessary for
# product unlocking.
, coreutils, libredirect
coreutils,
libredirect,
# Extra utilities used by the SoftMaker applications.
, gnugrep, util-linux, which
gnugrep,
util-linux,
which,
, pname, version, edition, suiteName, src, archive
pname,
version,
edition,
suiteName,
src,
archive,
, ...
...
}:
let
@@ -20,7 +42,8 @@ let
inherit makeDesktopItem pname suiteName;
};
shortEdition = builtins.substring 2 2 edition;
in stdenv.mkDerivation {
in
stdenv.mkDerivation {
inherit pname src;
version = "${edition}.${version}";
@@ -33,6 +56,9 @@ in stdenv.mkDerivation {
buildInputs = [
curl
glib
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
libGL
libX11
libXext
@@ -56,66 +82,75 @@ in stdenv.mkDerivation {
runHook postUnpack
'';
installPhase = let
# SoftMaker/FreeOffice collects some system information upon
# unlocking the product. But in doing so, it attempts to execute
# /bin/ls. If the execve syscall fails, the whole unlock
# procedure fails. This works around that by rewriting /bin/ls
# to the proper path.
#
# In addition, it expects some common utilities (which, whereis)
# to be in the path.
#
# SoftMaker Office restarts itself upon some operations, such
# changing the theme and unlocking. Unfortunately, we do not
# have control over its environment then and it will fail
# with an error.
extraWrapperArgs = ''
--set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS "/bin/ls=${coreutils}/bin/ls" \
--prefix PATH : "${lib.makeBinPath [ coreutils gnugrep util-linux which ]}"
installPhase =
let
# SoftMaker/FreeOffice collects some system information upon
# unlocking the product. But in doing so, it attempts to execute
# /bin/ls. If the execve syscall fails, the whole unlock
# procedure fails. This works around that by rewriting /bin/ls
# to the proper path.
#
# In addition, it expects some common utilities (which, whereis)
# to be in the path.
#
# SoftMaker Office restarts itself upon some operations, such
# changing the theme and unlocking. Unfortunately, we do not
# have control over its environment then and it will fail
# with an error.
extraWrapperArgs = ''
--set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS "/bin/ls=${coreutils}/bin/ls" \
--prefix PATH : "${
lib.makeBinPath [
coreutils
gnugrep
util-linux
which
]
}"
'';
in
''
runHook preInstall
mkdir -p $out/share
cp -r ${pname} $out/share/${pname}${edition}
# Wrap rather than symlinking, so that the programs can determine
# their resource path.
mkdir -p $out/bin
makeWrapper $out/share/${pname}${edition}/planmaker $out/bin/${pname}-planmaker \
${extraWrapperArgs}
makeWrapper $out/share/${pname}${edition}/presentations $out/bin/${pname}-presentations \
${extraWrapperArgs}
makeWrapper $out/share/${pname}${edition}/textmaker $out/bin/${pname}-textmaker \
${extraWrapperArgs}
for size in 16 32 48 64 96 128 256 512 1024; do
mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps
for app in pml prl tml; do
ln -s $out/share/${pname}${edition}/icons/''${app}_''${size}.png \
$out/share/icons/hicolor/''${size}x''${size}/apps/${pname}-''${app}.png
done
mkdir -p $out/share/icons/hicolor/''${size}x''${size}/mimetypes
for mimetype in pmd prd tmd; do
ln -s $out/share/${pname}${edition}/icons/''${mimetype}_''${size}.png \
$out/share/icons/hicolor/''${size}x''${size}/mimetypes/application-x-''${mimetype}.png
done
done
# freeoffice 973 misses the 96x96 application icons, giving broken symbolic links
# remove broken symbolic links
find $out -xtype l -ls -exec rm {} \;
# Add mime types
install -D -t $out/share/mime/packages ${pname}/mime/softmaker-*office*${shortEdition}.xml
runHook postInstall
'';
in ''
runHook preInstall
mkdir -p $out/share
cp -r ${pname} $out/share/${pname}${edition}
# Wrap rather than symlinking, so that the programs can determine
# their resource path.
mkdir -p $out/bin
makeWrapper $out/share/${pname}${edition}/planmaker $out/bin/${pname}-planmaker \
${extraWrapperArgs}
makeWrapper $out/share/${pname}${edition}/presentations $out/bin/${pname}-presentations \
${extraWrapperArgs}
makeWrapper $out/share/${pname}${edition}/textmaker $out/bin/${pname}-textmaker \
${extraWrapperArgs}
for size in 16 32 48 64 96 128 256 512 1024; do
mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps
for app in pml prl tml; do
ln -s $out/share/${pname}${edition}/icons/''${app}_''${size}.png \
$out/share/icons/hicolor/''${size}x''${size}/apps/${pname}-''${app}.png
done
mkdir -p $out/share/icons/hicolor/''${size}x''${size}/mimetypes
for mimetype in pmd prd tmd; do
ln -s $out/share/${pname}${edition}/icons/''${mimetype}_''${size}.png \
$out/share/icons/hicolor/''${size}x''${size}/mimetypes/application-x-''${mimetype}.png
done
done
# freeoffice 973 misses the 96x96 application icons, giving broken symbolic links
# remove broken symbolic links
find $out -xtype l -ls -exec rm {} \;
# Add mime types
install -D -t $out/share/mime/packages ${pname}/mime/softmaker-*office*${shortEdition}.xml
runHook postInstall
'';
desktopItems = builtins.attrValues desktopItems;
@@ -1,28 +1,33 @@
{ callPackage
, fetchurl
{
callPackage,
fetchurl,
# This is a bit unusual, but makes version and hash easily
# overridable. This is useful when people have an older version of
# Softmaker Office or when the upstream archive was replaced and
# nixpkgs is not in sync yet.
, officeVersion ? {
version = "1032";
edition = "2021";
hash = "sha256-LchSqLVBdkmWJQ8hCEvtwRPgIUSDE0URKPzCkEexGbc=";
}
officeVersion ? {
version = "1222";
edition = "2024";
hash = "sha256-eyYBK5ZxPcBakOvXUQZIU2aftyH6PXh/rtqC/1BJhg4=";
},
, ... } @ args:
...
}@args:
callPackage ./generic.nix (args // rec {
inherit (officeVersion) version edition;
callPackage ./generic.nix (
args
// rec {
inherit (officeVersion) version edition;
pname = "softmaker-office";
suiteName = "SoftMaker Office";
pname = "softmaker-office";
suiteName = "SoftMaker Office";
src = fetchurl {
inherit (officeVersion) hash;
url = "https://www.softmaker.net/down/softmaker-office-${edition}-${version}-amd64.tgz";
};
src = fetchurl {
inherit (officeVersion) hash;
url = "https://www.softmaker.net/down/softmaker-office-${edition}-${version}-amd64.tgz";
};
archive = "office${edition}.tar.lzma";
})
archive = "office${edition}.tar.lzma";
}
)
+2 -2
View File
@@ -2,11 +2,11 @@
let
pname = "anytype";
version = "0.43.4";
version = "0.43.8";
name = "Anytype-${version}";
src = fetchurl {
url = "https://github.com/anyproto/anytype-ts/releases/download/v${version}/${name}.AppImage";
hash = "sha256-2/+bLRx+iVTBDAH599+TpLquq/z/2FFJ5i6Mz8u4HuM=";
hash = "sha256-inqJvx5K/k97X50E0FYlzJDKqrVjAU6ZKIVdCWHr8NI=";
};
appimageContents = appimageTools.extractType2 { inherit pname version src; };
in appimageTools.wrapType2 {
@@ -3,26 +3,26 @@
rustPlatform,
fetchFromGitHub,
stdenv,
Security,
darwin,
}:
let
inherit (darwin.apple_sdk.frameworks) Security;
in
rustPlatform.buildRustPackage rec {
pname = "agg";
version = "1.4.3";
version = "1.5.0";
src = fetchFromGitHub {
owner = "asciinema";
repo = "agg";
rev = "v${version}";
sha256 = "sha256-WCUYnveTWWQOzhIViMkSnyQ6vgLs5HDLWa/xvfZMh3A=";
hash = "sha256-bCE59NeITaCwgajgyXgP6jxtV7aPihPaZ/Uzh39Po1k=";
};
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"avt-0.8.0" = "sha256-5IN8P/2UWJ2EmkbbTSGWECTqiD8TeOd8LgwLZ+W2z90=";
};
};
strictDeps = true;
cargoHash = "sha256-K472Qrsi2FIEOxFMi5CDgau2ODU0P3VDQEz/cwzmKiM=";
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
Security
@@ -0,0 +1,41 @@
{
buildGoModule,
pkgs,
fetchFromGitHub,
lib,
}:
let
version = "0.6.6";
pname = "bigquery-emulator";
in
buildGoModule.override
{
stdenv = pkgs.clangStdenv;
}
{
name = pname;
src = fetchFromGitHub {
owner = "goccy";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-iAVbxbm1G7FIWTB5g6Ff8h2dZjZssONA2MOCGuvK180=";
};
vendorHash = "sha256-TQlsivudutyPFW+3HHX7rYuoB5wafmDTAO1TElO/8pc=";
postPatch = ''
# main module does not contain package
rm -r internal/cmd/generator
'';
ldflags = [ "-s -w -X main.version=${version} -X main.revision=v${version}" ];
doCheck = false;
meta = with lib; {
description = "BigQuery emulator server implemented in Go.";
homepage = "https://github.com/goccy/bigquery-emulator";
changelog = "https://github.com/goccy/pname/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ tarantoj ];
mainProgram = "bigquery-emulator";
};
}
+62
View File
@@ -0,0 +1,62 @@
{
autoPatchelfHook,
lib,
fetchFromGitHub,
flutter324,
mpv,
pkg-config,
makeDesktopItem,
wrapGAppsHook3,
copyDesktopItems,
}:
flutter324.buildFlutterApplication rec {
pname = "bloomeetunes";
version = "2.10.9";
src = fetchFromGitHub {
owner = "HemantKArya";
repo = "BloomeeTunes";
rev = "v${version}+152";
hash = "sha256-Yv0aSq2eBcHKpy4PPjAhx194UW8Gm0UJlE+F+onZYFM=";
};
pubspecLock = lib.importJSON ./pubspec.lock.json;
desktopItems = [
(makeDesktopItem {
name = "bloomeetunes";
exec = "bloomee";
icon = "bloomeetunes";
genericName = "Music Player";
desktopName = "Bloomee Tunes";
})
];
nativeBuildInputs = [
pkg-config
autoPatchelfHook
wrapGAppsHook3
copyDesktopItems
];
postInstall = ''
install -Dm644 ./assets/icons/bloomee_new_logo_c.png $out/share/pixmaps/bloomeetunes.png
'';
extraWrapProgramArgs = ''
--prefix LD_LIBRARY_PATH : "$out/app/bloomeetunes/lib:${
lib.makeLibraryPath [
mpv
]
}"
'';
meta = {
description = "Cross-platform music app designed to bring you ad-free tunes from various sources";
homepage = "https://github.com/HemantKArya/BloomeeTunes";
mainProgram = "bloomee";
license = with lib.licenses; [ gpl2Plus ];
maintainers = with lib.maintainers; [ aucub ];
platforms = lib.platforms.linux;
};
}
File diff suppressed because it is too large Load Diff
+22 -18
View File
@@ -1,23 +1,23 @@
{ lib
, stdenv
, nixosTests
, python3
, fetchFromGitHub
, radicale
{
lib,
stdenv,
nixosTests,
python3Packages,
fetchFromGitHub,
radicale,
}:
python3.pkgs.buildPythonApplication {
python3Packages.buildPythonApplication rec {
pname = "etesync-dav";
version = "0.32.1-unstable-2024-09-02";
version = "0.33.4";
src = fetchFromGitHub {
owner = "etesync";
repo = "etesync-dav";
rev = "b9b23bf6fba60d42012008ba06023bccd9109c08";
hash = "sha256-wWhwnOlwE1rFgROTSj90hlSw4k48fIEdk5CJOXoecuQ=";
tag = "v${version}";
hash = "sha256-g+rK762tSWPDaBsaTwpTzfK/lqVs+Z/Qrpq2HCpipQE=";
};
propagatedBuildInputs = with python3.pkgs; [
dependencies = with python3Packages; [
appdirs
etebase
etesync
@@ -25,10 +25,11 @@ python3.pkgs.buildPythonApplication {
flask-wtf
msgpack
setuptools
(python.pkgs.toPythonModule (radicale.override { python3 = python; }))
(python3Packages.toPythonModule (radicale.override { python3 = python; }))
requests
types-setuptools
] ++ requests.optional-dependencies.socks;
requests.optional-dependencies.socks
];
doCheck = false;
@@ -36,12 +37,15 @@ python3.pkgs.buildPythonApplication {
inherit (nixosTests) etesync-dav;
};
meta = with lib; {
homepage = "https://www.etesync.com/";
meta = {
homepage = "https://www.etesync.com";
description = "Secure, end-to-end encrypted, and privacy respecting sync for contacts, calendars and tasks";
mainProgram = "etesync-dav";
license = licenses.gpl3;
maintainers = with maintainers; [ thyol valodim ];
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
thyol
valodim
];
broken = stdenv.hostPlatform.isDarwin; # pyobjc-framework-Cocoa is missing
};
}
+4 -4
View File
@@ -30,13 +30,13 @@ let
in
stdenv.mkDerivation rec {
pname = "fido2-manage";
version = "0-unstable-2024-09-24";
version = "0-unstable-2024-11-22";
src = fetchFromGitHub {
owner = "token2";
repo = "fido2-manage";
rev = "6aef9ceccdf7bcc60a9298e51a4db633256925df";
hash = "sha256-rXTL6wpdvCifakmxH14wBLbhTptNYNFGEPskpUy3IjA=";
rev = "2c14b222a432e34750bb3929c620bbdffd1c75be";
hash = "sha256-xdElYXx+F2XCP5zsbRTmTRyHKGnEt97jNRrQM0Oab5E=";
};
icon = fetchurl {
@@ -97,7 +97,7 @@ stdenv.mkDerivation rec {
'';
desktopItems = lib.optionals stdenv.hostPlatform.isLinux [
(makeDesktopItem rec {
(makeDesktopItem {
desktopName = "Fido2 Manager";
name = "fido2-manage";
exec = "fido2-manage-gui";
+2 -2
View File
@@ -16,13 +16,13 @@
stdenv.mkDerivation rec {
pname = "libetonyek";
version = "0.1.10";
version = "0.1.12";
src = fetchFromGitHub {
owner = "LibreOffice";
repo = "libetonyek";
rev = "libetonyek-${version}";
hash = "sha256-wgyeQj1sY78sbbZT+NZuq9HEKB+ta7wwipbfN3JkyyU=";
hash = "sha256-dvYbV+7IakgOkGsZ+zaW+qgn/QoD6Jwq/juaE+7iYug=";
};
nativeBuildInputs = [
+6 -6
View File
@@ -8,23 +8,23 @@
let
hlsJs = fetchurl {
url = "https://cdn.jsdelivr.net/npm/hls.js@v1.5.17/dist/hls.min.js";
hash = "sha256-SEBU6M0D0/bReB+39AK9wxjYpMUn+TOpXGJOJ8yalHA=";
url = "https://cdn.jsdelivr.net/npm/hls.js@v1.5.18/dist/hls.min.js";
hash = "sha256-X/LXFN4wvkKPx3sT4B25pLTPAV6bTWs+iGS2XT19Ptc=";
};
in
buildGoModule rec {
pname = "mediamtx";
# check for hls.js version updates in internal/servers/hls/hlsjsdownloader/VERSION
version = "1.9.3";
version = "1.10.0";
src = fetchFromGitHub {
owner = "bluenviron";
repo = pname;
rev = "v${version}";
hash = "sha256-2qFJujfnlpmiOAmDBPl3hrbbHDOZOWFy8Yh2VOU0FEI=";
hash = "sha256-nz+8soxZ6lyc0saB4U3tDsTtqA0kV886M95cA3Gn3R0=";
};
vendorHash = "sha256-6MHtYrHZF3Oo53MV1Di0wGw9Xk+2CMei2XeoI0OcKsQ=";
vendorHash = "sha256-Csa8G+ji/OoTItu3XbGOySqmNMVdr7QqE8SNCba8cbI=";
postPatch = ''
cp ${hlsJs} internal/servers/hls/hls.min.js
@@ -32,7 +32,7 @@ buildGoModule rec {
# disable binary-only rpi camera support
substituteInPlace internal/staticsources/rpicamera/camera_disabled.go \
--replace-fail '!linux || (!arm && !arm64)' 'linux'
--replace-fail '!linux || (!arm && !arm64)' 'linux || !linux'
substituteInPlace internal/staticsources/rpicamera/{component,camera,params_serialize,pipe}.go \
--replace-fail '(linux && arm) || (linux && arm64)' 'linux && !linux'
substituteInPlace internal/staticsources/rpicamera/component_32.go \
+6 -6
View File
@@ -8,11 +8,11 @@
}:
let
metaCommon = with lib; {
metaCommon = {
description = "Command-line interface for running Temporal Server and interacting with Workflows, Activities, Namespaces, and other parts of Temporal";
homepage = "https://docs.temporal.io/cli";
license = licenses.mit;
maintainers = with maintainers; [ aaronjheng ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ aaronjheng ];
};
overrideModAttrs = old: {
@@ -24,16 +24,16 @@ let
tctl-next = buildGoModule rec {
pname = "tctl-next";
version = "1.1.1";
version = "1.1.2";
src = fetchFromGitHub {
owner = "temporalio";
repo = "cli";
rev = "v${version}";
hash = "sha256-KDJtCqx9Yp/zhutSElFveWYAKwJCckiM9k3FOtYTlLo=";
hash = "sha256-7wURMdi357w5S4s909PTUZanRzFyWM588DMY7iYWP88=";
};
vendorHash = "sha256-Vur3e6olkC0Ewz/RDZe2AIpcIs5GqeVgJa+KO9g8X7o=";
vendorHash = "sha256-umGwew8RwewlYJQD1psYSd9bu67cPEiHBJkQRJGjyGY=";
inherit overrideModAttrs;
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule rec {
pname = "terramate";
version = "0.10.8";
version = "0.11.4";
src = fetchFromGitHub {
owner = "terramate-io";
repo = "terramate";
rev = "v${version}";
hash = "sha256-fT1yuFFHI88wUXKguWZD+PHU4j3w5eda7kzCDn+Gg+o=";
hash = "sha256-RZBafDaSGW01EdvDg8RUynrSO84/pkh3OcVXlSsZ+ao=";
};
vendorHash = "sha256-kjzpXOoyTwjpYLBqDuB6Eup5Yzgej2U+HUo4z8V+cEI=";
vendorHash = "sha256-PwMxmls7sL9RhgvGKKDwxAeObk7HVBtYLOsIYt90dVU=";
# required for version info
nativeBuildInputs = [ git ];
+3 -3
View File
@@ -9,16 +9,16 @@
rustPlatform.buildRustPackage rec {
pname = "timewall";
version = "1.2.0";
version = "1.3.0";
src = fetchFromGitHub {
owner = "bcyran";
repo = "timewall";
rev = version;
hash = "sha256-OVLiuYxldk59TbggKNfPtaADz0B6pZ91gP6B6aEjEV8=";
hash = "sha256-B3pZCjl7Z78vAYYzceicwjmGfTbzYgrhpldUJnY8Aqs=";
};
cargoHash = "sha256-2Ij5bv/M6QXXugMg+tvsXc/38hWzk9lrz990+o+3igI=";
cargoHash = "sha256-AYfRZyUitUgWIeDbg00RFbs+VLnIJFHrdpUcjDlkwE8=";
nativeBuildInputs = [ installShellFiles ];
+2 -2
View File
@@ -14,13 +14,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vencord";
version = "1.10.8";
version = "1.10.9";
src = fetchFromGitHub {
owner = "Vendicated";
repo = "Vencord";
rev = "v${finalAttrs.version}";
hash = "sha256-2UOz8o+3jWppk6lWatbG0avcqBFpxHYSMEspCpFWWOk=";
hash = "sha256-sU2eJUUw7crvzMGGBQP6rbxISkL+S5nmT3QspyYXlRQ=";
};
pnpmDeps = pnpm.fetchDeps {
+5 -7
View File
@@ -9,27 +9,25 @@
}:
flutter327.buildFlutterApplication rec {
pname = "venera";
version = "1.1.1";
version = "1.1.2";
src = fetchFromGitHub {
owner = "venera-app";
repo = "venera";
tag = "v${version}";
hash = "sha256-wahQ3SCuPCloJ7eB8U051aSLHXf8FyQv+fEq58fonj4=";
hash = "sha256-zf3KeSoMLmXdD0aEYRPN5IYy0LdMYpqOkCFDmLi2ix0=";
};
pubspecLock = lib.importJSON ./pubspec.lock.json;
gitHashes = {
desktop_webview_window = "sha256-15tw3gLN9e886QjBFuYP34KLD1lN8AmQYXVza5Bvs40=";
flutter_qjs = "sha256-IeOuw2oh3WpuYQgfE77BoPU8Qukp4l8SSmZtHebKU4M=";
flutter_to_arch = "sha256-DdP82Bdl58XW/BxMyWV3Vh4JYC2DNTjZcQB0fvw72fA=";
lodepng_flutter = "sha256-puw+eVe/ZtzV+PTsC0WmP0YLuWu5slFY0r0v/SHyzHI=";
flutter_qjs = "sha256-SvOgcZquwZ1/HWVkPVnD8Eo+jD3jjfkKsVleJpNaiV0=";
lodepng_flutter = "sha256-bGc9uXD1EQ/19OIZmR7a/YL9w93fNWdQF5S19LSwxZw=";
photo_view = "sha256-Z+9xgvk8YS+bgCbBW7BBY72tV6JUq2kCX5OwKFK4YPE=";
scrollable_positioned_list = "sha256-6XmBlNxE7DEqY2LsEFtVrshn2Xt55XnmaiTq+tiPInA=";
zip_flutter = "sha256-104/tGShkLAOYw9dC/yrt/qnm0NZ+Jk7nkbt3lPcYA8=";
webdav_client = "sha256-Dz/4qW+cYGyNtK8S/abFslwQNroidgrHl7oJw3uXIqM=";
flutter_saf = "sha256-Blh2YxRlO3U/N6GmCnXhNevQYruWT1Zzl/P2gHSva6k=";
flutter_saf = "sha256-haY4eabTwUUBTpwenK0ILKpLggrtjVQszcmlpirEeTU=";
};
nativeBuildInputs = [
+16 -18
View File
@@ -507,8 +507,8 @@
"dependency": "direct main",
"description": {
"path": ".",
"ref": "ade0b9d",
"resolved-ref": "ade0b9d67331118c13a2b836684858e251512373",
"ref": "1657f62fe7545ac43a339e0a5ee2b82bacd81e9f",
"resolved-ref": "1657f62fe7545ac43a339e0a5ee2b82bacd81e9f",
"url": "https://github.com/wgh136/flutter_qjs"
},
"source": "git",
@@ -538,8 +538,8 @@
"dependency": "direct main",
"description": {
"path": ".",
"ref": "3315082b9f7055655610e4f6f136b69e48228c05",
"resolved-ref": "3315082b9f7055655610e4f6f136b69e48228c05",
"ref": "7637b8b67d0a831f3cd7e702b8173e300880d32e",
"resolved-ref": "7637b8b67d0a831f3cd7e702b8173e300880d32e",
"url": "https://github.com/pkuislm/flutter_saf.git"
},
"source": "git",
@@ -554,12 +554,11 @@
"flutter_to_arch": {
"dependency": "direct dev",
"description": {
"path": ".",
"ref": "HEAD",
"resolved-ref": "15bfead0380fda79b0256b37c73b886b0882f1bf",
"url": "https://github.com/wgh136/flutter_to_arch"
"name": "flutter_to_arch",
"sha256": "656cffc182b05af38aa96a1115931620b8865c4b0cfe00813b26fcff0875f2ab",
"url": "https://pub.dev"
},
"source": "git",
"source": "hosted",
"version": "1.0.0"
},
"flutter_to_debian": {
@@ -782,8 +781,8 @@
"dependency": "direct main",
"description": {
"path": ".",
"ref": "d1c96cd6503103b3270dfe2f320d4a1c93780f53",
"resolved-ref": "d1c96cd6503103b3270dfe2f320d4a1c93780f53",
"ref": "9a784b193af5d55b2a35e58fa390bda3e4f35d00",
"resolved-ref": "9a784b193af5d55b2a35e58fa390bda3e4f35d00",
"url": "https://github.com/venera-app/lodepng_flutter"
},
"source": "git",
@@ -1401,17 +1400,16 @@
"zip_flutter": {
"dependency": "direct main",
"description": {
"path": ".",
"ref": "HEAD",
"resolved-ref": "d5721f1fd8179ee4a5db59f932ae7c89d94e12a0",
"url": "https://github.com/wgh136/zip_flutter"
"name": "zip_flutter",
"sha256": "955b53d58709fcd9feefbed3d41b5522bc5273e677603e9fc67017a81e568d24",
"url": "https://pub.dev"
},
"source": "git",
"version": "0.0.1"
"source": "hosted",
"version": "0.0.5"
}
},
"sdks": {
"dart": ">=3.6.0 <4.0.0",
"flutter": ">=3.27.0"
"flutter": ">=3.27.1"
}
}
+104
View File
@@ -0,0 +1,104 @@
{
lib,
stdenv,
fetchurl,
autoPatchelfHook,
fontconfig,
freetype,
libGL,
glib,
alsa-lib,
pulseaudio,
xorg,
gtk3,
atk,
pango,
gdk-pixbuf,
cairo,
gst_all_1,
makeWrapper,
libsForQt5,
profiles ? {
path = "~";
},
}:
stdenv.mkDerivation rec {
pname = "windterm";
version = "2.6.1";
src = fetchurl {
url = "https://github.com/kingToolbox/WindTerm/releases/download/2.6.0/WindTerm_${version}_Linux_Portable_x86_64.tar.gz";
hash = "sha256-JwTsfUkESl2vUx48TanKYAOVWw6q4xGY+i0PrN9GfpA=";
};
dontBuild = true;
nativeBuildInputs = [
makeWrapper
autoPatchelfHook
];
buildInputs = [
xorg.libxcb
xorg.xcbutil
xorg.xcbutilimage
xorg.xcbutilkeysyms
xorg.xcbutilrenderutil
libsForQt5.qt5.qtbase
libsForQt5.qt5.qtmultimedia
fontconfig
freetype
libGL
glib
alsa-lib
pulseaudio
gst_all_1.gst-plugins-base
xorg.libXtst
gtk3
atk
pango
gdk-pixbuf
cairo
(lib.getLib stdenv.cc.cc)
];
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r ./* $out/
find $out -type d -exec chmod 755 {} \;
find $out -type f -exec chmod 644 {} \;
find $out -type f -executable -exec chmod 755 {} \;
chmod 755 $out/WindTerm
mkdir -p $out/bin/ $out/share/applications/ $out/share/pixmaps/ $out/share/licenses/${pname}/
cat > $out/profiles.config <<EOF
${builtins.toJSON profiles}
EOF
mv $out/license.txt $out/share/licenses/${pname}/license.txt
mv $out/windterm.desktop $out/share/applications/windterm.desktop
mv $out/windterm.png $out/share/pixmaps/windterm.png
substituteInPlace $out/share/applications/windterm.desktop \
--replace-fail "Exec=/usr/bin/windterm" "Exec=windterm"
runHook postInstall
'';
dontWrapQtApps = true;
preFixup = ''
makeWrapper $out/WindTerm $out/bin/windterm \
--prefix QT_PLUGIN_PATH : "$out/lib" \
''${qtWrapperArgs[@]}
'';
meta = {
description = "Professional cross-platform SSH/Sftp/Shell/Telnet/Serial terminal";
homepage = "https://github.com/kingToolbox/WindTerm";
mainProgram = "windterm";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ aucub ];
platforms = [ "x86_64-linux" ];
};
}
@@ -8,6 +8,7 @@
handy_window = callPackage ./handy-window { };
matrix = callPackage ./matrix { };
media_kit_libs_linux = callPackage ./media_kit_libs_linux { };
metadata_god = callPackage ./metadata_god { };
olm = callPackage ./olm { };
pdfrx = callPackage ./pdfrx { };
printing = callPackage ./printing { };
@@ -0,0 +1,44 @@
{
lib,
stdenv,
fetchzip,
replaceVars,
}:
{ version, src, ... }:
let
inherit (stdenv.hostPlatform) system;
selectSystem =
attrs: attrs.${system} or (throw "metadata_god: ${stdenv.hostPlatform.system} is not supported");
suffix = selectSystem {
x86_64-linux = "linux-x64";
aarch64-linux = "linux-arm64";
};
metadata_god = fetchzip {
url = "https://github.com/KRTirtho/frb_plugins/releases/download/metadata_god-v0.5.3/linux.tar.gz";
hash = "sha256-ZR/q1dF8w4Yab6dRRiS5ZCChVnoecFUrtGiHXGlll9A=";
stripRoot = false;
};
in
stdenv.mkDerivation {
pname = "metadata_god";
inherit version src;
inherit (src) passthru;
patches = [
(replaceVars ./metadata_god.patch {
output_lib = "${metadata_god}/${suffix}/libmetadata_god.so";
})
];
installPhase = ''
runHook preInstall
cp -r . $out
runHook postInstall
'';
meta.sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
}
@@ -0,0 +1,33 @@
--- old/linux/CMakeLists.txt 2024-11-30 12:48:42.346266052 +0000
+++ new/linux/CMakeLists.txt 2024-11-30 12:50:45.495928529 +0000
@@ -9,29 +9,10 @@
set(PROJECT_NAME "metadata_god")
project(${PROJECT_NAME} LANGUAGES CXX)
-# Download the binaries if they are not already present.
-set(LibRoot "${CMAKE_CURRENT_SOURCE_DIR}/${LibraryVersion}")
-set(ArchivePath "${LibRoot}.tar.gz")
-if(NOT EXISTS ${ArchivePath})
- file(DOWNLOAD
- "https://github.com/KRTirtho/metadata_god/releases/download/${LibraryVersion}/other.tar.gz"
- ${ArchivePath}
- TLS_VERIFY ON
- )
-endif()
-
-# Extract the binaries, overriding any already present.
-file(REMOVE_RECURSE ${LibRoot})
-file(MAKE_DIRECTORY ${LibRoot})
-execute_process(
- COMMAND ${CMAKE_COMMAND} -E tar xzf ${ArchivePath}
- WORKING_DIRECTORY ${LibRoot}
-)
-
# List of absolute paths to libraries that should be bundled with the plugin.
# This list could contain prebuilt libraries, or libraries created by an
# external build triggered from this build file.
set(metadata_god_bundled_libraries
- "${LibRoot}/${FLUTTER_TARGET_PLATFORM}/libmetadata_god.so"
+ @output_lib@
PARENT_SCOPE
)
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "libcdr";
version = "0.1.7";
version = "0.1.8";
src = fetchurl {
url = "https://dev-www.libreoffice.org/src/${pname}-${version}.tar.xz";
hash = "sha256-VmYknWE0ZrmqHph+pBCcBDZYZuknfYD2zZZj6GuOzdQ=";
hash = "sha256-ztZ3yDALKckdMAS7Hd3wuZdhv1VEmRwmwu6PQn6HGTw=";
};
strictDeps = true;
@@ -6,18 +6,18 @@
buildNpmPackage rec {
pname = "universal-remote-card";
version = "4.2.1";
version = "4.3.1";
src = fetchFromGitHub {
owner = "Nerwyn";
repo = "android-tv-card";
rev = version;
hash = "sha256-Gw8lPAXKZ/PqeH7DeKMU/ZIM+s9xwzDGWzR/G82fOfI=";
hash = "sha256-w8bA+Jzs72RWPw26YoBYz1YtY7a1zXEA1+gWpSVjVNI=";
};
patches = [ ./dont-call-git.patch ];
npmDepsHash = "sha256-QN7X44yRZDoS/KAQU+FxkExwvED47E/5rvKNqUjYwKA=";
npmDepsHash = "sha256-ha/P47C88HVrSZK5vQXdMUhIoqnP0cspwoLYzVM+mVI=";
installPhase = ''
runHook preInstall
+5 -5
View File
@@ -504,11 +504,11 @@ let self = {
njs = rec {
name = "njs";
src = fetchhg {
url = "https://hg.nginx.org/njs";
rev = "0.8.4";
sha256 = "sha256-SooPFx4WNEezPD+W/wmMLY+FdkGRoojLNUFbhn3Riyg=";
name = "nginx-njs";
src = fetchFromGitHub {
owner = "nginx";
repo = "njs";
rev = "0.8.7";
hash = "sha256-VEXzP+cN5hnDeniccwY7GIi4x460rnWO/o7ja3DyRCc=";
};
# njs module sources have to be writable during nginx build, so we copy them
File diff suppressed because it is too large Load Diff
-4
View File
@@ -1658,10 +1658,6 @@ with pkgs;
inherit (callPackages ../data/fonts/arphic {})
arphic-ukai arphic-uming;
asciinema-agg = callPackage ../tools/misc/asciinema-agg {
inherit (darwin.apple_sdk.frameworks) Security;
};
asymptote = libsForQt5.callPackage ../tools/graphics/asymptote { };
atomicparsley = callPackage ../tools/video/atomicparsley {