;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès ;;; ;;; 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 . (define-module (gnu system accounts) #:use-module (guix records) #:use-module (ice-9 match) #:export (user-account user-account? user-account-name user-account-password user-account-uid user-account-group user-account-supplementary-groups user-account-comment user-account-home-directory user-account-create-home-directory? user-account-shell user-account-system? user-group user-group? user-group-name user-group-password user-group-id user-group-system? sexp->user-account sexp->user-group default-shell)) ;;; Commentary: ;;; ;;; Data structures representing user accounts and user groups. This is meant ;;; to be used both on the host side and at run time--e.g., in activation ;;; snippets. ;;; ;;; Code: (define default-shell ;; Default shell for user accounts (a string or string-valued gexp). (make-parameter "/bin/sh")) (define-record-type* user-account make-user-account user-account? (name user-account-name) (password user-account-password (default #f)) (uid user-account-uid (default #f)) (group user-account-group) ; number | string (supplementary-groups user-account-supplementary-groups (default '())) ; list of strings (comment user-account-comment (default "")) (home-directory user-account-home-directory (thunked) (default (default-home-directory this-record))) (create-home-directory? user-account-create-home-directory? ;Boolean (default #t)) (shell user-account-shell ; gexp (default (default-shell))) (system? user-account-system? ; Boolean (default #f))) (define-record-type* user-group make-user-group user-group? (name user-group-name) (password user-group-password (default #f)) (id user-group-id (default #f)) (system? user-group-system? ; Boolean (default #f))) (define (default-home-directory account) "Return the default home directory for ACCOUNT." (string-append "/home/" (user-account-name account))) (define (sexp->user-group sexp) "Take SEXP, a tuple as returned by 'user-group->gexp', and turn it into a user-group record." (match sexp ((name password id system?) (user-group (name name) (password password) (id id) (system? system?))))) (define (sexp->user-account sexp) "Take SEXP, a tuple as returned by 'user-account->gexp', and turn it into a user-account record." (match sexp ((name uid group supplementary-groups comment home-directory create-home-directory? shell password system?) (user-account (name name) (uid uid) (group group) (supplementary-groups supplementary-groups) (comment comment) (home-directory home-directory) (create-home-directory? create-home-directory?) (shell shell) (password password) (system? system?))))) 23-11-07 12:33:25 -0500'>2023-11-07doc: Add some guidelines for reviewing....* doc/contributing.texi (Contributing) [Reviewing the Work of Others]: New section. (Debbugs Usertags): Expound with Emacs Debbugs information and document the 'reviewed-looks-good' usertag. * etc/git/gitconfig [b4]: New section. Change-Id: I56630b15ec4fbc5c67e5420dbf2838556a005d6b Reviewed-by: Ludovic Courtès <ludo@gnu.org> Maxim Cournoyer 2023-10-22build: Add a commit-msg hook that embeds Change-Id in commit messages....Partially implements <https://issues.guix.gnu.org/66027>. This will make it possible to track a merged commit back to its original posting on the mailing list, and open the door to new opportunities such as closing fully merged series automatically. * Makefile.am (COMMIT_MSG_MAGIC): New variable. (.git/hooks/commit-msg): New target. * etc/git/commit-msg: New file. * doc/contributing.texi (Configuring Git): Document Change-Id. Series-changes: 3 - Clarify documentation text, as suggested by Simon Change-Id: Ia92fa958eae600fdd4e180bad494c85db8bb4dd6 Reviewed-by: Simon Tournier <zimon.toutoune@gmail.com> Maxim Cournoyer 2023-05-18etc: gitconfig: Do not enforced signed commits....This change was more invasive than initially thought, and cannot be disabled easily, as raised by a few people. Let's revert it for now. At least the pre-push hook should be deployed automatically and catch any unsigned commits attempted to be pushed to Savannah. * etc/git/gitconfig [commit]: Remove section. Maxim Cournoyer 2023-05-01Makefile.am: Auto-configure Git on 'make'....This means we do not need to worry anymore about manually syncing the pre-push git hook or the Guix-provided git configuration. * etc/git/gitconfig: Augment configuration template with useful options to allow for auto-configuration. * Makefile.am (.git/hooks/pre-push, .git/config): New targets. (nodist_noinst_DATA): New primary variable holding the above targets. Maxim Cournoyer 2021-10-14Add git configuration templates to improve diff hunk header detection....This is a follow-up to commit 9fc8ae4171e5da4939a64fc6d684c8b9d85bbe84, which missed two hunks from <https://issues.guix.gnu.org/50363>. Reported by hackeryarn on #guix. * .gitattributes, etc/git/gitconfig: New files. Signed-off-by: Marius Bakke <marius@gnu.org> Sarah Morgensen