udiskie: add a few configuration options

The new options allow some control over automounting, notifications,
and the tray icon.

This commit also changes the defaults to automatically mount new
devices, udiskie was previously told not to automount. The change in
behavior is to closer match the default options.
This commit is contained in:
Robert Helgesson 2017-10-02 13:25:31 +02:00
parent 52256d7a73
commit e4c359d8b9
No known key found for this signature in database
GPG key ID: C3DB11069E65DC86
2 changed files with 70 additions and 3 deletions

View file

@ -274,6 +274,20 @@ in
'programs.vim.settings.shiftwidth'.
'';
}
{
time = "2017-10-02T11:15:03+00:00";
condition = config.services.udiskie.enable;
message = ''
The udiskie service now defaults to automatically mounting
new devices. Previous behavior was to not automatically
mount. To restore this previous behavior add
services.udiskie.automount = false;
to your Home Manager configuration.
'';
}
];
};
}

View file

@ -2,25 +2,78 @@
with lib;
let
cfg = config.services.udiskie;
commandArgs =
concatStringsSep " " (
map (opt: "-" + opt) [
(if cfg.automount then "a" else "A")
(if cfg.notify then "n" else "N")
({ always = "t"; auto = "s"; never = "T"; }.${cfg.tray})
]
);
in
{
meta.maintainers = [ maintainers.rycee ];
options = {
services.udiskie = {
enable = mkEnableOption "Udiskie mount daemon";
enable = mkEnableOption "udiskie mount daemon";
automount = mkOption {
type = types.bool;
default = true;
description = "Whether to automatically mount new devices.";
};
notify = mkOption {
type = types.bool;
default = true;
description = "Whether to show pop-up notifications.";
};
tray = mkOption {
type = types.enum [ "always" "auto" "never" ];
default = "auto";
description = ''
Whether to display tray icon.
</para><para>
The options are
<variablelist>
<varlistentry>
<term><literal>always</literal></term>
<listitem><para>Always show tray icon.</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>auto</literal></term>
<listitem><para>
Show tray icon only when there is a device available.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>never</literal></term>
<listitem><para>Never show tray icon.</para></listitem>
</varlistentry>
</variablelist>
'';
};
};
};
config = mkIf config.services.udiskie.enable {
systemd.user.services.udiskie = {
Unit = {
Description = "Udiskie mount daemon";
Description = "udiskie mount daemon";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${pkgs.pythonPackages.udiskie}/bin/udiskie -2 -A -n -s";
ExecStart = "${pkgs.pythonPackages.udiskie}/bin/udiskie -2 ${commandArgs}";
};
Install = {