From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id eKVhA1luTWRcOAAASxT56A (envelope-from ) for ; Sat, 29 Apr 2023 21:22:01 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id kCpgA1luTWR1kQAA9RJhRA (envelope-from ) for ; Sat, 29 Apr 2023 21:22:01 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id B6C573B1A1 for ; Sat, 29 Apr 2023 21:22:00 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1psoHu-00018L-Ck; Sat, 29 Apr 2023 13:23:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1psoHs-00017F-Bt for bug-guix@gnu.org; Sat, 29 Apr 2023 13:23:08 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1psoHs-0003Nx-32 for bug-guix@gnu.org; Sat, 29 Apr 2023 13:23:08 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1psoHr-00008k-V5 for bug-guix@gnu.org; Sat, 29 Apr 2023 13:23:07 -0400 X-Loop: help-debbugs@gnu.org Subject: bug#63082: [PATCH v2 14/16] services: mpd: Provision a default cache directory and set HOME. Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sat, 29 Apr 2023 17:23:07 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63082 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 63082@debbugs.gnu.org Cc: Maxim Cournoyer Received: via spool by 63082-submit@debbugs.gnu.org id=B63082.1682788960363 (code B ref 63082); Sat, 29 Apr 2023 17:23:07 +0000 Received: (at 63082) by debbugs.gnu.org; 29 Apr 2023 17:22:40 +0000 Received: from localhost ([127.0.0.1]:36583 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1psoHP-00005g-WF for submit@debbugs.gnu.org; Sat, 29 Apr 2023 13:22:40 -0400 Received: from mail-qk1-f173.google.com ([209.85.222.173]:62854) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1psoHA-0008VM-Jh for 63082@debbugs.gnu.org; Sat, 29 Apr 2023 13:22:25 -0400 Received: by mail-qk1-f173.google.com with SMTP id af79cd13be357-75131c2997bso959295385a.1 for <63082@debbugs.gnu.org>; Sat, 29 Apr 2023 10:22:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682788939; x=1685380939; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XAGn1odtsvcG4FzVbUqlE8Dfg5ejkTEVHTwH2Z7A3jw=; b=PUN2/CMsmEZ01972TxGDdcmGzxQyHOcC1taBFl3+XEsgMQVfOs3skwkDDbdL2OH8wS CY2a5/9We9REXqsQoaLz0NpQqdw4DZearhmp780wbSQ8pCEmNlqliRReNy8qgYpC/DzZ 5U4DBZZ3ZsK9AK9mjsJO2pc2/XYx3Tj6NVCjSBp4yjBdKcVJNmbkttIey9Fl0uhGYunR MDOHqyXO+sQFL1+u0uxoj2LZc1SLWCxtz6HfQjDe3ubxVNGHKEMdv1ELgfY8TilimzQo 6cj5qB20tcA7o9WskWNhPFpxUpTmuxigx7CAM5dy727yryr5nUNB877lsRiWzdpM/C1f hpCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682788939; x=1685380939; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XAGn1odtsvcG4FzVbUqlE8Dfg5ejkTEVHTwH2Z7A3jw=; b=MDsu25Y322BkYjpCPcKnWA362GdzQWF4kgplV8DgVhfCGjr55Plju7dRvvU7mtl3Fe thMc2GMiXWbDQ1yWpX/lNl8raSStPul2+D0cOWdCuqdAvRTkq5I+kikk4HfMHBE7Bm0v zc21OUiMv2yjU3vFT65pYHLiqjqMQ5tUPWsy4/T5tOoZqfQwIh3Ipq7BXBK8AmmsfU94 rKTxD08whe7IdXuDogN+E1qNxVIV7Ew9bTuMJbHh0O4ZO+fLH7YbTC5Bx4a/uaF7jCtf l5N7UOwL1yTi2R6JUnqZK0JaWZjvfagx++NGsOg20U6JNePWmPtluafaJKVqXAAweDnH vcfw== X-Gm-Message-State: AC+VfDyeNRRKgll+AwM6EzIsxVnfzgjJGqbOkGDv3p0owkmn+GNIbl/3 L2t9jzG5agqQxdAHfojhnowO1iuauWc= X-Google-Smtp-Source: ACHHUZ6lxriI+YaQhphv+CfoxIlfiicf4krC2wHbmXyxfjPOeJzQgVSwXaEdOySYpxxEhuU4wHj3+g== X-Received: by 2002:a05:6214:4105:b0:5df:d35d:2108 with SMTP id kc5-20020a056214410500b005dfd35d2108mr19263196qvb.25.1682788938959; Sat, 29 Apr 2023 10:22:18 -0700 (PDT) Received: from localhost.localdomain (dsl-155-245.b2b2c.ca. [66.158.155.245]) by smtp.gmail.com with ESMTPSA id dm45-20020a05620a1d6d00b0074cf009f443sm7582489qkb.85.2023.04.29.10.22.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 Apr 2023 10:22:18 -0700 (PDT) From: Maxim Cournoyer Date: Sat, 29 Apr 2023 13:21:51 -0400 Message-Id: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: bug-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Seal: i=1; s=key1; d=yhetil.org; t=1682796120; a=rsa-sha256; cv=none; b=f4Hr9f3vivWwevx1aW8X+nuXn8VzfQnJrIpt6rWOILoC2EZuBPOQXbBMp1LnWZJk49PUIi /YuUazXJ94e+f4NYRyjCG+f5oNICVw0YOhYltSliscOnPa0XSwwP45F3CSzpZNwoGPThy8 Wcsr3h4Bi8ftktupejU5DaO3P6Cpigz6XrAaxoiEEGZ779DMK3DbFt4n7qOe1aDO8/khMc SEpnLvsxrVzhBIAkGYYw5bETqTj7lOo4ZqP4rpkScVSIegQCUhkVk4/pbj7q0+2LeA7Hhm Gn00E5wpUw6a0OS26Al1q7WH702Cg6/xhSe62oJK+cVVQKOb8VXn8y3IPQ6I7A== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20221208 header.b="PUN2/CMs"; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1682796120; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=XAGn1odtsvcG4FzVbUqlE8Dfg5ejkTEVHTwH2Z7A3jw=; b=upSqYiOK2sCOQFRP0FsDIRiJNl4FGPOHf5dE3oxzIgIl5+bZftXSec31/AwD3na00a2hCC xe9YAh2tje8Ndmz6KTO8FpwZK96rPKMPZHg6/z+wkFjiuebDpCyhcp1w1CbyLUz3MfxvtE c6pCRcW4w4VN3o4SybdY6YxetX7qNHp8ZrE9gSMZQPKCTy9xaG2DS8XI2NsJye6cDUPowt 4dJehFJqV/na5uvuji7DJ/yxels2peqyEpQF1k9tJpUgmoZMv4akcodog0p6GtTifE8o3b f1jVOfr3ktxjge5l+2LsLbmuPpF32rHUYyhFbs5rRy+dX0E8AQMXiSjruVsW7g== X-Migadu-Spam-Score: 0.69 X-Spam-Score: 0.69 X-Migadu-Queue-Id: B6C573B1A1 X-Migadu-Scanner: scn0.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20221208 header.b="PUN2/CMs"; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-TUID: JlKgu4oHAtWT Relates to . * gnu/services/audio.scm (mpd-shepherd-service): Create a default .cache directory. Use mkdir-p/perms and refactor loop. Set the HOME environment variables. --- doc/guix.texi | 3 +- gnu/services/audio.scm | 68 ++++++++++++++++++++++++------------------ 2 files changed, 41 insertions(+), 30 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 148ca88633..abfbbdb2fc 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -33604,7 +33604,8 @@ Audio Services The directory to store playlists. @item @code{db-file} (type: maybe-string) -The location of the music database. +The location of the music database. When left unspecified, +@file{~/.cache/db} is used. @item @code{state-file} (type: maybe-string) The location of the file that stores current MPD's state. diff --git a/gnu/services/audio.scm b/gnu/services/audio.scm index dca2e8e5f6..0e90d72462 100644 --- a/gnu/services/audio.scm +++ b/gnu/services/audio.scm @@ -465,7 +465,8 @@ (define-configuration mpd-configuration (db-file maybe-string - "The location of the music database.") + "The location of the music database. When left unspecified, +@file{~/.cache/db} is used.") (state-file maybe-string @@ -609,35 +610,44 @@ (define (mpd-shepherd-service config) #~(begin (use-modules (gnu build activation)) - (let ((user (getpw #$username))) - - (define (init-directory directory) - (unless (file-exists? directory) - (mkdir-p/perms directory user #o755))) + (let ((home #$(user-account-home-directory user))) + (let ((user (getpw #$username)) + (default-cache-dir (string-append home "/.cache"))) + + (define (init-directory directory) + (unless (file-exists? directory) + (mkdir-p/perms directory user #o755))) + + ;; Define a cache location that can be automatically used + ;; for the database file, in case it hasn't been explicitly + ;; specified. + (for-each + init-directory + (cons default-cache-dir + '#$(map dirname + ;; XXX: Delete the potential "syslog" + ;; log-file value, which is not a directory. + (delete "syslog" + (filter-map maybe-value + (list db-file + log-file + state-file + sticker-file))))))) - (for-each - init-directory - '#$(map dirname - ;; XXX: Delete the potential "syslog" - ;; log-file value, which is not a directory. - (delete "syslog" - (filter-map maybe-value - (list db-file - log-file - state-file - sticker-file)))))) - - (make-forkexec-constructor - (list #$(file-append package "/bin/mpd") "--no-daemon" - #$config-file) - #:environment-variables - ;; Use the system-configured pulse configuration. - (list "PULSE_CLIENTCONFIG=/etc/pulse/client.conf" - "PULSE_CONFIG=/etc/pulse/daemon.conf") - #:user #$username - #:group #$(user-account-group user) - #:supplementary-groups - '#$(user-account-supplementary-groups user))))) + (make-forkexec-constructor + (list #$(file-append package "/bin/mpd") "--no-daemon" + #$config-file) + #:environment-variables + ;; Use the system-configured pulse configuration. Set HOME + ;; so MPD can infer default paths, such as for the database + ;; file. + (list (string-append "HOME=" home) + "PULSE_CLIENTCONFIG=/etc/pulse/client.conf" + "PULSE_CONFIG=/etc/pulse/daemon.conf") + #:user #$username + #:group #$(user-account-group user) + #:supplementary-groups + '#$(user-account-supplementary-groups user)))))) (stop #~(make-kill-destructor)) (actions (list (shepherd-configuration-action config-file) -- 2.39.2