mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-12 12:45:27 +03:00
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:
parent
ecd0e11851
commit
d64ba1c060
4 changed files with 85 additions and 0 deletions
|
@ -588,6 +588,7 @@
|
||||||
./services/system/cloud-init.nix
|
./services/system/cloud-init.nix
|
||||||
./services/system/dbus.nix
|
./services/system/dbus.nix
|
||||||
./services/system/earlyoom.nix
|
./services/system/earlyoom.nix
|
||||||
|
./services/system/localtime.nix
|
||||||
./services/system/kerberos.nix
|
./services/system/kerberos.nix
|
||||||
./services/system/nscd.nix
|
./services/system/nscd.nix
|
||||||
./services/system/saslauthd.nix
|
./services/system/saslauthd.nix
|
||||||
|
|
60
nixos/modules/services/system/localtime.nix
Normal file
60
nixos/modules/services/system/localtime.nix
Normal file
|
@ -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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
pkgs/tools/system/localtime/default.nix
Normal file
22
pkgs/tools/system/localtime/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ stdenv, go, systemd, polkit, fetchFromGitHub, m4 }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "localtime-2017-11-07";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Stebalien";
|
||||||
|
repo = "localtime";
|
||||||
|
rev = "2e7b4317c723406bd75b2a1d640219ab9f8090ce";
|
||||||
|
sha256 = "04fyna8p7q7skzx9fzmncd6gx7x5pwa9jh8a84hpljlvj0kldfs8";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ go systemd polkit m4 ];
|
||||||
|
|
||||||
|
makeFlags = [ "PREFIX=$(out)" ];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "A daemon for keeping the system timezone up-to-date based on the current location";
|
||||||
|
homepage = https://github.com/Stebalien/localtime;
|
||||||
|
platforms = stdenv.lib.platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
|
@ -3208,6 +3208,8 @@ with pkgs;
|
||||||
|
|
||||||
limesurvey = callPackage ../servers/limesurvey { };
|
limesurvey = callPackage ../servers/limesurvey { };
|
||||||
|
|
||||||
|
localtime = callPackage ../tools/system/localtime { };
|
||||||
|
|
||||||
logcheck = callPackage ../tools/system/logcheck {
|
logcheck = callPackage ../tools/system/logcheck {
|
||||||
inherit (perlPackages) mimeConstruct;
|
inherit (perlPackages) mimeConstruct;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue