{cryfs,vaults}: drop due to fuse dependency (#540864)

This commit is contained in:
Fernando Rodrigues
2026-07-14 10:22:08 +00:00
committed by GitHub
7 changed files with 5 additions and 407 deletions
-147
View File
@@ -1,147 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
python3,
boost,
curl,
fuse,
gtest,
openssl,
range-v3,
spdlog,
llvmPackages,
writableTmpDirAsHomeHook,
versionCheckHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "cryfs";
version = "1.0.3";
src = fetchFromGitHub {
owner = "cryfs";
repo = "cryfs";
tag = finalAttrs.version;
hash = "sha256-DbXZxPACisAcdaqaqRiBK2Su/Wp6E9Mh+w62EkJrpYA=";
};
postPatch = ''
patchShebangs src/
''
# Set Boost_USE_STATIC_LIBS via CMake command line. (see cmakeFlags below)
+ ''
substituteInPlace cmake-utils/Dependencies.cmake \
--replace-fail "set(Boost_USE_STATIC_LIBS OFF)" ""
''
# Downsize large file test as 4.5G is too big for Hydra.
+ ''
substituteInPlace test/cpp-utils/data/DataTest.cpp \
--replace-fail "(4.5L*1024*1024*1024)" "(0.5L*1024*1024*1024)"
'';
nativeBuildInputs = [
cmake
pkg-config
python3
];
strictDeps = true;
buildInputs = [
boost
curl
fuse
gtest
openssl
range-v3
spdlog
]
++ lib.optional stdenv.cc.isClang llvmPackages.openmp;
cmakeFlags = [
(lib.cmakeFeature "DEPENDENCY_CONFIG" "../cmake-utils/DependenciesFromLocalSystem.cmake")
(lib.cmakeBool "CRYFS_UPDATE_CHECKS" false)
(lib.cmakeBool "Boost_USE_STATIC_LIBS" stdenv.hostPlatform.isStatic) # This option is case sensitive.
(lib.cmakeBool "BUILD_TESTING" finalAttrs.doCheck)
];
# macFUSE needs to be installed for the tests to succeed on Darwin.
doCheck = !stdenv.hostPlatform.isDarwin;
nativeCheckInputs = [
writableTmpDirAsHomeHook
];
checkPhase =
let
runTest =
{
path,
filter ? null,
}:
"command ./${path}${lib.optionalString (!isNull filter) " '--gtest_filter=${filter}'"}";
in
''
runHook preCheck
pushd test/
''
# See the test runner at https://github.com/cryfs/cryfs/blob/1.0.3/.github/workflows/actions/run_tests/action.yaml.
+ (lib.concatLines [
(runTest {
path = "gitversion/gitversion-test";
})
(runTest {
path = "cpp-utils/cpp-utils-test";
filter =
if stdenv.hostPlatform.isStatic then "*-BacktraceTest.*:*.AssertMessageContainsBacktrace" else null;
})
(runTest {
path = "parallelaccessstore/parallelaccessstore-test";
})
(runTest {
path = "blockstore/blockstore-test";
})
(runTest {
path = "blobstore/blobstore-test";
})
(runTest {
path = "cryfs/cryfs-test";
})
# Skip tests trying to access /dev/fuse inside the build sandbox.
(runTest {
path = "fspp/fspp-test";
filter = ""; # Skip all tests.
})
(runTest {
path = "cryfs-cli/cryfs-cli-test";
filter = "*-CliTest.WorksWithCommasInBasedir:CliTest_IntegrityCheck.*:CliTest_Setup.*:CliTest_Unmount.*:RunningInForeground*";
})
])
+ ''
popd
runHook postCheck
'';
doInstallCheck = true;
nativeInstallCheckInputs = [
versionCheckHook
];
meta = {
description = "Cryptographic filesystem for the cloud";
homepage = "https://www.cryfs.org/";
changelog = "https://github.com/cryfs/cryfs/raw/${finalAttrs.version}/ChangeLog.txt";
license = lib.licenses.lgpl3Only;
maintainers = with lib.maintainers; [
peterhoeg
sigmasquadron
];
platforms = lib.systems.inspect.patterns.isUnix;
};
})
+2 -3
View File
@@ -8,7 +8,6 @@
pkg-config,
qt6,
kdePackages,
cryfs,
fscrypt-experimental,
gocryptfs,
sshfs,
@@ -47,7 +46,6 @@ stdenv.mkDerivation (finalAttrs: {
qtWrapperArgs = [
"--prefix PATH : ${
lib.makeBinPath [
cryfs
fscrypt-experimental
gocryptfs
sshfs
@@ -65,7 +63,8 @@ stdenv.mkDerivation (finalAttrs: {
];
meta = {
description = "Qt/C++ GUI front end to sshfs, ecryptfs-simple, cryfs, gocryptfs and fscrypt";
description = "Qt/C++ GUI front end to sshfs, ecryptfs-simple, gocryptfs and fscrypt";
longDescription = "Sirikali also supports `cryfs`, but `cryfs` is no longer available in Nixpkgs.";
homepage = "https://github.com/mhogomchungu/sirikali";
changelog = "https://github.com/mhogomchungu/sirikali/blob/${finalAttrs.src.rev}/changelog";
license = lib.licenses.gpl3Only;
-89
View File
@@ -1,89 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
replaceVars,
appstream-glib,
desktop-file-utils,
meson,
ninja,
pkg-config,
python3,
rustPlatform,
rustc,
cargo,
wrapGAppsHook3,
glib,
gtk4,
libadwaita,
wayland,
gocryptfs,
cryfs,
fuse,
util-linux,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vaults";
version = "0.10.0";
src = fetchFromGitHub {
owner = "mpobaschnig";
repo = "vaults";
tag = finalAttrs.version;
hash = "sha256-B4CNEghMfP+r0poyhE102zC1Yd2U5ocV1MCMEVEMjEY=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-my4CxFIEN19juo/ya2vlkejQTaZsyoYLtFTR7iCT9s0=";
};
patches = [
(replaceVars ./remove_flatpak_dependency.patch {
cryfs = lib.getExe' cryfs "cryfs";
gocryptfs = lib.getExe' gocryptfs "gocryptfs";
fusermount = lib.getExe' fuse "fusermount";
umount = lib.getExe' util-linux "umount";
})
];
postPatch = ''
patchShebangs build-aux
'';
nativeBuildInputs = [
desktop-file-utils
meson
ninja
pkg-config
wrapGAppsHook3
cargo
rustc
rustPlatform.cargoSetupHook
];
buildInputs = [
appstream-glib
gtk4
python3
glib
libadwaita
wayland
gocryptfs
cryfs
];
meta = {
description = "GTK frontend for encrypted vaults supporting gocryptfs and CryFS for encryption";
homepage = "https://mpobaschnig.github.io/vaults/";
changelog = "https://github.com/mpobaschnig/vaults/releases/tag/${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
benneti
aleksana
];
mainProgram = "vaults";
platforms = lib.platforms.linux;
};
})
@@ -1,139 +0,0 @@
diff --git a/src/backend/cryfs.rs b/src/backend/cryfs.rs
index 089bf03..157c72a 100644
--- a/src/backend/cryfs.rs
+++ b/src/backend/cryfs.rs
@@ -35,13 +35,7 @@ fn get_binary_path(vault_config: &VaultConfig) -> String {
}
}
- let global_config = GlobalConfigManager::instance().get_flatpak_info();
- let instance_path = global_config
- .section(Some("Instance"))
- .unwrap()
- .get("app-path")
- .unwrap();
- let cryfs_instance_path = instance_path.to_owned() + "/bin/cryfs";
+ let cryfs_instance_path = "@cryfs@".to_string();
log::info!("CryFS binary path: {}", cryfs_instance_path);
cryfs_instance_path
}
@@ -49,9 +43,7 @@ fn get_binary_path(vault_config: &VaultConfig) -> String {
pub fn is_available(vault_config: &VaultConfig) -> Result<bool, BackendError> {
log::trace!("is_available({:?})", vault_config);
- let output = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let output = Command::new(get_binary_path(vault_config))
.arg("--version")
.output()?;
log::debug!("CryFS output: {:?}", output);
@@ -64,9 +56,7 @@ pub fn is_available(vault_config: &VaultConfig) -> Result<bool, BackendError> {
pub fn init(vault_config: &VaultConfig, password: String) -> Result<(), BackendError> {
log::trace!("init({:?}, password: <redacted>)", vault_config);
- let mut child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let mut child = Command::new(get_binary_path(vault_config))
.env("CRYFS_FRONTEND", "noninteractive")
.stdin(Stdio::piped())
.stdout(Stdio::piped())
@@ -106,9 +96,7 @@ pub fn init(vault_config: &VaultConfig, password: String) -> Result<(), BackendE
pub fn open(vault_config: &VaultConfig, password: String) -> Result<(), BackendError> {
log::trace!("open({:?}, password: <redacted>)", vault_config);
- let mut child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let mut child = Command::new(get_binary_path(vault_config))
.env("CRYFS_FRONTEND", "noninteractive")
.stdin(Stdio::piped())
.stdout(Stdio::piped())
@@ -143,9 +131,7 @@ pub fn open(vault_config: &VaultConfig, password: String) -> Result<(), BackendE
pub fn close(vault_config: &VaultConfig) -> Result<(), BackendError> {
log::trace!("close({:?})", vault_config);
- let child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg("fusermount")
+ let child = Command::new("@fusermount@")
.arg("-u")
.stdout(Stdio::piped())
.arg(&vault_config.mount_directory)
diff --git a/src/backend/gocryptfs.rs b/src/backend/gocryptfs.rs
index 9638f3a..ffa8f44 100644
--- a/src/backend/gocryptfs.rs
+++ b/src/backend/gocryptfs.rs
@@ -35,13 +35,7 @@ fn get_binary_path(vault_config: &VaultConfig) -> String {
}
}
- let global_config = GlobalConfigManager::instance().get_flatpak_info();
- let instance_path = global_config
- .section(Some("Instance"))
- .unwrap()
- .get("app-path")
- .unwrap();
- let gocryptfs_instance_path = instance_path.to_owned() + "/bin/gocryptfs";
+ let gocryptfs_instance_path = "@gocryptfs@".to_string();
log::info!("gocryptfs binary path: {}", gocryptfs_instance_path);
gocryptfs_instance_path
}
@@ -49,9 +43,7 @@ fn get_binary_path(vault_config: &VaultConfig) -> String {
pub fn is_available(vault_config: &VaultConfig) -> Result<bool, BackendError> {
log::trace!("is_available({:?})", vault_config);
- let output = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let output = Command::new(get_binary_path(vault_config))
.arg("--version")
.output()?;
log::debug!("gocryptfs output: {:?}", output);
@@ -64,9 +56,7 @@ pub fn is_available(vault_config: &VaultConfig) -> Result<bool, BackendError> {
pub fn init(vault_config: &VaultConfig, password: String) -> Result<(), BackendError> {
log::trace!("init({:?}, password: <redacted>)", vault_config);
- let mut child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let mut child = Command::new(get_binary_path(vault_config))
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.arg("--init")
@@ -104,9 +94,7 @@ pub fn init(vault_config: &VaultConfig, password: String) -> Result<(), BackendE
pub fn open(vault_config: &VaultConfig, password: String) -> Result<(), BackendError> {
log::trace!("open({:?}, password: <redacted>)", vault_config);
- let mut child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let mut child = Command::new(get_binary_path(vault_config))
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.arg("-q")
@@ -142,9 +130,7 @@ pub fn open(vault_config: &VaultConfig, password: String) -> Result<(), BackendE
pub fn close(vault_config: &VaultConfig) -> Result<(), BackendError> {
log::trace!("close({:?}, password: <redacted>)", vault_config);
- let child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg("umount")
+ let child = Command::new("@umount@")
.stdout(Stdio::piped())
.arg(&vault_config.mount_directory)
.spawn()?;
diff --git a/src/global_config_manager.rs b/src/global_config_manager.rs
index 619bb18..cea9ac3 100644
--- a/src/global_config_manager.rs
+++ b/src/global_config_manager.rs
@@ -102,7 +102,7 @@ impl GlobalConfigManager {
let object: Self = glib::Object::new();
*object.imp().flatpak_info.borrow_mut() =
- Ini::load_from_file("/.flatpak-info").expect("Could not load .flatpak-info");
+ Ini::load_from_file("/.flatpak-info").unwrap_or_else(|_| Ini::new());
match user_config_dir().as_os_str().to_str() {
Some(user_config_directory) => {
-2
View File
@@ -3,7 +3,6 @@
mkKdeDerivation,
replaceVars,
pkg-config,
cryfs,
gocryptfs,
lsof,
}:
@@ -12,7 +11,6 @@ mkKdeDerivation {
patches = [
(replaceVars ./hardcode-paths.patch {
cryfs = lib.getExe' cryfs "cryfs";
gocryptfs = lib.getExe' gocryptfs "gocryptfs";
lsof = lib.getExe lsof;
})
@@ -1,16 +1,3 @@
diff --git a/kded/engine/backends/cryfs/cryfsbackend.cpp b/kded/engine/backends/cryfs/cryfsbackend.cpp
index f425eb3..5b8cd43 100644
--- a/kded/engine/backends/cryfs/cryfsbackend.cpp
+++ b/kded/engine/backends/cryfs/cryfsbackend.cpp
@@ -207,7 +207,7 @@ QProcess *CryFsBackend::cryfs(const QStringList &arguments) const
auto config = KSharedConfig::openConfig(PLASMAVAULT_CONFIG_FILE);
KConfigGroup backendConfig(config, "CryfsBackend");
- return process("cryfs", arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), {{"CRYFS_FRONTEND", "noninteractive"}});
+ return process("@cryfs@", arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), {{"CRYFS_FRONTEND", "noninteractive"}});
}
} // namespace PlasmaVault
diff --git a/kded/engine/backends/gocryptfs/gocryptfsbackend.cpp b/kded/engine/backends/gocryptfs/gocryptfsbackend.cpp
index 8636e4e..4f4ba0d 100644
--- a/kded/engine/backends/gocryptfs/gocryptfsbackend.cpp
@@ -46,16 +33,3 @@ index f488d00..6b76565 100644
| cast<QString>()
| onError([this] {
d->updateMessage(i18n("Failed to fetch the list of applications using this vault"));
diff --git a/kded/ui/cryfscypherchooserwidget.cpp b/kded/ui/cryfscypherchooserwidget.cpp
index bbe76ef..dbd27ac 100644
--- a/kded/ui/cryfscypherchooserwidget.cpp
+++ b/kded/ui/cryfscypherchooserwidget.cpp
@@ -39,7 +39,7 @@ void CryfsCypherChooserWidget::initializeCyphers()
// TODO: This needs to be prettier -- for modules to be able
// to reach their backends directly
auto process = new QProcess();
- process->setProgram("cryfs");
+ process->setProgram("@cryfs@");
process->setArguments({"--show-ciphers"});
auto env = process->processEnvironment();
+3 -1
View File
@@ -597,6 +597,7 @@ mapAliases {
cromfs = throw "'cromfs' has been removed due to lack of fuse 3 support. You can try replacing it with dwarfs: https://github.com/mhx/dwarfs#with-cromfs"; # Added 2026-06-05
cromite = throw "'cromite' has been removed from nixpkgs due to it not being maintained"; # Added 2025-06-12
crossLibcStdenv = throw "'crossLibcStdenv' has been renamed to/replaced by 'stdenvNoLibc'"; # Converted to throw 2025-10-27
cryfs = throw "'cryfs' has been removed as versions <2.x depend on FUSE 2, which is deprecated and is no longer available in Nixpkgs. 'cryfs' may be added again in the future once version 2.0.0 is stabilised. In the meantime, consider using 'gocryptfs'."; # Added 2026-07-12
crystal_1_11 = throw "'crystal_1_11' has been removed as it is obsolete and no longer used in the tree. Consider using 'crystal' instead"; # Added 2025-09-04
csslint = throw "'csslint' has been removed as upstream considers it abandoned."; # Addeed 2025-11-07
cstore_fdw = throw "'cstore_fdw' has been removed. Use 'postgresqlPackages.cstore_fdw' instead."; # Added 2025-07-19
@@ -694,7 +695,7 @@ mapAliases {
ebpf-verifier = warnAlias "'ebpf-verifier' has been renamed to 'prevail'" prevail; # Added 2026-04-01
EBTKS = throw "'EBTKS' has been renamed to/replaced by 'ebtks'"; # Converted to throw 2025-10-27
ec2-utils = throw "'ec2-utils' has been renamed to/replaced by 'amazon-ec2-utils'"; # Converted to throw 2025-10-27
ecryptfs = throw "'ecryptfs' has been removed due to lack of maintenance. Consider using 'fscrypt', 'gocryptfs' or 'cryfs' instead."; # Added 2026-01-14
ecryptfs = throw "'ecryptfs' has been removed due to lack of maintenance. Consider using 'fscrypt' or 'gocryptfs' instead."; # Added 2026-01-14
edid-decode = v4l-utils; # Added 2025-06-20
eidolon = throw "eidolon was removed as it is unmaintained upstream."; # Added 2025-05-28
eintopf = throw "'eintopf' has been renamed to/replaced by 'lauti'"; # Converted to throw 2025-10-27
@@ -2325,6 +2326,7 @@ mapAliases {
varnish60Packages = throw "varnish 6.0 has been removed as it used unmaintained dependencies. Please upgrade to 'varnish80' or 'vinyl-cache_9'."; # Added 2026-05-29
varnish77 = throw "varnish 7.7 is EOL. Please upgrade to 'varnish80' or 'vinyl-cache_9'."; # Added 2026-05-01
varnish77Packages = throw "varnish 7.7 is EOL. Please upgrade to 'varnish80' or 'vinyl-cache_9'."; # Added 2026-05-01
vaults = throw "'vaults' has been removed as it depends on 'fuse2', which is deprecated and no longer available in Nixpkgs."; # Added 2026-07-12
vaultwarden-vault = throw "'vaultwarden-vault' has been renamed to/replaced by 'vaultwarden.webvault'"; # Converted to throw 2025-10-27
vazir-fonts = throw "'vazir-fonts' has been renamed to 'vazirmatn'"; # Added 2026-06-15
vbetool = throw "'vbetool' has been removed as it is broken and not maintained upstream."; # Added 2025-06-11