Add localtime package and nixos module
Simple daemon for keeping system timezone up-to-date via geoclue2. Sadly i3 status needs to be restarted for timezone changes.
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.localtime;
|
||||
in {
|
||||
options = {
|
||||
services.localtime = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
description = ''
|
||||
Enable <literal>localtime</literal>, simple daemon for keeping the system
|
||||
timezone up-to-date based on the current location. It uses geoclue2 to
|
||||
determine the current location and systemd-timedated to actually set
|
||||
the timezone.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.geoclue2.enable = true;
|
||||
|
||||
security.polkit.extraConfig = ''
|
||||
polkit.addRule(function(action, subject) {
|
||||
if (action.id == "org.freedesktop.timedate1.set-timezone"
|
||||
&& subject.user == "localtimed") {
|
||||
return polkit.Result.YES;
|
||||
}
|
||||
});
|
||||
'';
|
||||
|
||||
users.users = [{
|
||||
name = "localtimed";
|
||||
description = "Taskserver user";
|
||||
}];
|
||||
|
||||
systemd.services.localtime = {
|
||||
description = "localtime service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
partOf = [ "geoclue.service "];
|
||||
|
||||
serviceConfig = {
|
||||
Restart = "on-failure";
|
||||
# TODO: make it work with dbus
|
||||
#DynamicUser = true;
|
||||
Nice = 10;
|
||||
User = "localtimed";
|
||||
PrivateTmp = "yes";
|
||||
PrivateDevices = true;
|
||||
PrivateNetwork = "yes";
|
||||
NoNewPrivileges = "yes";
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = true;
|
||||
ExecStart = "${pkgs.localtime}/bin/localtimed";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user