From: Andy Wingo <wingo@pobox.com>
To: guix-devel@gnu.org
Subject: [PATCH 4/9] gnu: Add geoclue service.
Date: Tue, 7 Apr 2015 10:26:25 +0200 [thread overview]
Message-ID: <1428413322.661898.18272@badger> (raw)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 5987 bytes --]
* gnu/services/geoclue.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add geoclue service.
---
gnu-system.am | 1 +
gnu/services/geoclue.scm | 117 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 118 insertions(+)
create mode 100644 gnu/services/geoclue.scm
diff --git a/gnu-system.am b/gnu-system.am
index f9befa7..59ee3fa 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -328,6 +328,7 @@ GNU_SYSTEM_MODULES = \
gnu/services/colord.scm \
gnu/services/dbus.scm \
gnu/services/dmd.scm \
+ gnu/services/geoclue.scm \
gnu/services/lirc.scm \
gnu/services/networking.scm \
gnu/services/ssh.scm \
diff --git a/gnu/services/geoclue.scm b/gnu/services/geoclue.scm
new file mode 100644
index 0000000..518577d
--- /dev/null
+++ b/gnu/services/geoclue.scm
@@ -0,0 +1,117 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services geoclue)
+ #:use-module (gnu services)
+ #:use-module (gnu system shadow)
+ #:use-module (gnu packages gnome)
+ #:use-module (ice-9 match)
+ #:use-module (guix monads)
+ #:use-module (guix store)
+ #:use-module (guix gexp)
+ #:export (geoclue-application
+ %standard-geoclue-applications
+ geoclue-service))
+
+;;; Commentary:
+;;;
+;;; This module provides service definitions for the Geoclue location service.
+;;;
+;;; Code:
+
+(define (bool value)
+ (if value "true\n" "false\n"))
+
+(define* (geoclue-application name #:key (allowed? #t) system? (users '()))
+ "Configure default access permissions for an application. NAME is the
+Desktop ID of the application, without the .desktop part. If ALLOWED? is
+true, the application will have access to location information by default.
+The boolean SYSTEM? value indicates that an application is a system component
+or not. Finally USERS is a list of UIDs of all users for which this
+application is allowed location info access. An empty users list means all
+users are allowed."
+ (string-append
+ "[" name "]\n"
+ "allowed=" (bool allowed?)
+ "system=" (bool system?)
+ "users=" (string-join users ";") "\n"))
+
+(define %standard-geoclue-applications
+ (list (geoclue-application "gnome-datetime-panel" #:system? #t)
+ (geoclue-application "epiphany" #:system? #f)
+ (geoclue-application "firefox" #:system? #f)))
+
+(define* (configuration-file #:key whitelist wifi-geolocation-url
+ submit-data? wifi-submission-url submission-nick
+ applications)
+ "Return a geoclue configuration file."
+ (text-file "geoclue.conf"
+ (string-append
+ "[agent]\n"
+ "whitelist=" (string-join whitelist ";") "\n"
+ "[wifi]\n"
+ "url=" wifi-geolocation-url "\n"
+ "submit-data=" (bool submit-data?)
+ "submission-url=" wifi-submission-url "\n"
+ "submission-nick=" submission-nick "\n"
+ (string-join applications "\n"))))
+
+(define* (geoclue-service #:key (geoclue geoclue)
+ (whitelist '())
+ (wifi-geolocation-url
+ ;; Mozilla geolocation service:
+ "https://location.services.mozilla.com/v1/geolocate?key=geoclue")
+ (submit-data? #f)
+ (wifi-submission-url
+ "https://location.services.mozilla.com/v1/submit?key=geoclue")
+ (submission-nick "geoclue")
+ (applications %standard-geoclue-applications))
+ "Return a service that runs the @command{geoclue}, location service."
+ (mlet %store-monad ((config (configuration-file
+ #:whitelist whitelist
+ #:wifi-geolocation-url wifi-geolocation-url
+ #:submit-data? submit-data?
+ #:wifi-submission-url wifi-submission-url
+ #:submission-nick submission-nick
+ #:applications applications)))
+ (return
+ (service
+ (documentation "Run the Geoclue location service.")
+ (provision '(geoclue-daemon))
+ (requirement '(dbus-system))
+
+ (start #~(make-forkexec-constructor
+ (list (string-append #$geoclue "/libexec/geoclue"))
+ #:environment-variables
+ (list (string-append "GEOCLUE_CONFIG_FILE_NAME=" #$config))))
+ (stop #~(make-kill-destructor))
+
+ (user-groups (list (user-group
+ (name "geoclue")
+ (system? #t))))
+ (user-accounts (list (user-account
+ (name "geoclue")
+ (group "geoclue")
+ (system? #t)
+ (comment "Geoclue daemon user")
+ (home-directory "/var/empty")
+ (shell
+ "/run/current-system/profile/sbin/nologin"))))))))
+
+;;; geoclue.scm ends here
--
2.2.1
next reply other threads:[~2015-04-07 13:28 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-07 8:26 Andy Wingo [this message]
2015-04-08 12:50 ` [PATCH 4/9] gnu: Add geoclue service Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1428413322.661898.18272@badger \
--to=wingo@pobox.com \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.