ipfs: autoMount working without root

Changed files
+11 -8
nixos
modules
services
network-filesystems
+11 -8
nixos/modules/services/network-filesystems/ipfs.nix
···
cfg = config.services.ipfs;
ipfsFlags = toString ([
-
#(optionalString cfg.autoMount "--mount")
+
(optionalString cfg.autoMount "--mount")
(optionalString cfg.autoMigrate "--migrate")
(optionalString cfg.enableGC "--enable-gc")
(optionalString (cfg.serviceFdlimit != null) "--manage-fdlimit=false")
···
ipfs repo fsck # workaround for BUG #4212 (https://github.com/ipfs/go-ipfs/issues/4214)
ipfs --local config Addresses.API ${cfg.apiAddress}
ipfs --local config Addresses.Gateway ${cfg.gatewayAddress}
-
'' + optionalString false/*cfg.autoMount*/ ''
+
'' + optionalString cfg.autoMount ''
ipfs --local config Mounts.FuseAllowOther --json true
ipfs --local config Mounts.IPFS ${cfg.ipfsMountDir}
ipfs --local config Mounts.IPNS ${cfg.ipnsMountDir}
···
description = "Whether IPFS should try to migrate the file system automatically";
};
-
#autoMount = mkOption {
-
# type = types.bool;
-
# default = false;
-
# description = "Whether IPFS should try to mount /ipfs and /ipns at startup.";
-
#};
+
autoMount = mkOption {
+
type = types.bool;
+
default = false;
+
description = "Whether IPFS should try to mount /ipfs and /ipns at startup.";
+
};
ipfsMountDir = mkOption {
type = types.str;
···
config = mkIf cfg.enable {
environment.systemPackages = [ wrapped ];
+
environment.etc."fuse.conf" = mkIf cfg.autoMount { text = ''
+
user_allow_other
+
''; };
users.extraUsers = mkIf (cfg.user == "ipfs") {
ipfs = {
···
preStart = ''
install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}
-
'' + optionalString false/*cfg.autoMount*/ ''
+
'' + optionalString cfg.autoMount ''
install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.ipfsMountDir}
install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.ipnsMountDir}
'';