f763710065
This was enabled by default in18a7ce76fc
with the reason that it would be "useful regardless of the desktop environment.", which I'm not arguing against. The reason why this should not be enabled by default is that there are a lot of systems that NixOS runs on that are not desktop systems. Users on such systems most likely do not want or need this feature and could even consider this an antifeature. Furthermore, it is surprising to them to find out that they have this enabled on their systems. They might be even more surprised to find that they have polkit enabled by default, which was a default that was flipped ina813be071c
. For some discussion as to why see https://github.com/NixOS/nixpkgs/pull/156858. Evidently, this default is not only surprising to users, but also module developers, as most if not all modules for desktop environments already explicity set services.udisks2.enable = true; which they don't need to right now.
78 lines
1.9 KiB
Nix
78 lines
1.9 KiB
Nix
# Udisks daemon.
|
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
settingsFormat = pkgs.formats.ini {
|
|
listToValue = concatMapStringsSep "," (generators.mkValueStringDefault {});
|
|
};
|
|
configFiles = mapAttrs (name: value: (settingsFormat.generate name value)) (mapAttrs' (name: value: nameValuePair name value ) config.services.udisks2.settings);
|
|
in
|
|
|
|
{
|
|
|
|
###### interface
|
|
|
|
options = {
|
|
|
|
services.udisks2 = {
|
|
|
|
enable = mkEnableOption "udisks2, a DBus service that allows applications to query and manipulate storage devices.";
|
|
|
|
settings = mkOption rec {
|
|
type = types.attrsOf settingsFormat.type;
|
|
apply = recursiveUpdate default;
|
|
default = {
|
|
"udisks2.conf" = {
|
|
udisks2 = {
|
|
modules = [ "*" ];
|
|
modules_load_preference = "ondemand";
|
|
};
|
|
defaults = {
|
|
encryption = "luks2";
|
|
};
|
|
};
|
|
};
|
|
example = literalExpression ''
|
|
{
|
|
"WDC-WD10EZEX-60M2NA0-WD-WCC3F3SJ0698.conf" = {
|
|
ATA = {
|
|
StandbyTimeout = 50;
|
|
};
|
|
};
|
|
};
|
|
'';
|
|
description = lib.mdDoc ''
|
|
Options passed to udisksd.
|
|
See [here](http://manpages.ubuntu.com/manpages/latest/en/man5/udisks2.conf.5.html) and
|
|
drive configuration in [here](http://manpages.ubuntu.com/manpages/latest/en/man8/udisks.8.html) for supported options.
|
|
'';
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
###### implementation
|
|
|
|
config = mkIf config.services.udisks2.enable {
|
|
|
|
environment.systemPackages = [ pkgs.udisks2 ];
|
|
|
|
environment.etc = mapAttrs' (name: value: nameValuePair "udisks2/${name}" { source = value; } ) configFiles;
|
|
|
|
security.polkit.enable = true;
|
|
|
|
services.dbus.packages = [ pkgs.udisks2 ];
|
|
|
|
systemd.tmpfiles.rules = [ "d /var/lib/udisks2 0755 root root -" ];
|
|
|
|
services.udev.packages = [ pkgs.udisks2 ];
|
|
|
|
systemd.packages = [ pkgs.udisks2 ];
|
|
};
|
|
|
|
}
|