From mboxrd@z Thu Jan 1 00:00:00 1970 From: ng0 Subject: pre-release [PATCH] git-service Date: Fri, 08 Jul 2016 15:53:19 +0000 Message-ID: <87zipsgm8g.fsf@we.make.ritual.n0.is> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:46947) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bLY5w-0002PH-B7 for guix-devel@gnu.org; Fri, 08 Jul 2016 11:53:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bLY5r-0006jo-SA for guix-devel@gnu.org; Fri, 08 Jul 2016 11:53:35 -0400 Received: from 93-95-228-168.1984.is ([93.95.228.168]:41685 helo=beleriand.n0.is) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bLY5r-0006iu-Eu for guix-devel@gnu.org; Fri, 08 Jul 2016 11:53:31 -0400 Received: by beleriand.n0.is (OpenSMTPD) with ESMTPSA id a44b296f TLS version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO for ; Fri, 8 Jul 2016 15:53:25 +0000 (UTC) List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org I need some feedback on the git-service. The inserted patch gives me this output: ng0@shadowwalker ~/guix-git-service$ ./pre-inst-env guix system vm ~/testvm.scm Backtrace: In ice-9/boot-9.scm: 1724: 19 [%start-stack load-stack ...] 1729: 18 [#] In unknown file: ?: 17 [primitive-load "/home/ng0/guix-git-service/scripts/guix"] In guix/ui.scm: 1209: 16 [run-guix-command system "vm" "/home/ng0/testvm.scm"] In ice-9/boot-9.scm: 157: 15 [catch srfi-34 # ...] 157: 14 [catch system-error ...] In guix/scripts/system.scm: 882: 13 [#] 788: 12 [process-action vm ("/home/ng0/testvm.scm") ...] In guix/store.scm: 1182: 11 [run-with-store # ...] In guix/scripts/system.scm: 800: 10 [# #] 564: 9 [perform-action vm # # ...] In gnu/system/vm.scm: 496: 8 [system-qemu-image/shared-store-script # # # ...] In gnu/system.scm: 601: 7 [operating-system-derivation # # #f] In gnu/services.scm: 601: 6 [loop #] In srfi/srfi-1.scm: 578: 5 [map # (# # #)] In gnu/services.scm: 463: 4 [packages->profile-entry (# # # # ...)] In guix/profiles.scm: 187: 3 [packages->manifest (# # # # ...)] In srfi/srfi-1.scm: 576: 2 [map # (# # # # ...)] In guix/profiles.scm: 174: 1 [package->manifest-entry # #f] In guix/packages.scm: 638: 0 [package-transitive-propagated-inputs #] guix/packages.scm:638:21: In procedure package-transitive-propagated-inputs: guix/packages.scm:638:21: In procedure %package-propagated-inputs-real: Wrong type argument: #< git: # base-path: "/var/git/repositories" port: 9418> >From bfff0a190b51deca3849738310f03f2289f10881 Mon Sep 17 00:00:00 2001 From: ng0 Date: Fri, 8 Jul 2016 15:42:55 +0000 Subject: [PATCH] gnu: services: Add git-service. * gnu/services/version-control.scm: New file, create it. (git-service): New Procedures. (git-service-type): New variable. --- gnu/local.mk | 1 + gnu/services/version-control.scm | 110 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 gnu/services/version-control.scm diff --git a/gnu/local.mk b/gnu/local.mk index 947d1b0..eb0fd9a 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -384,6 +384,7 @@ GNU_SYSTEM_MODULES = \ %D%/services/shepherd.scm \ %D%/services/herd.scm \ %D%/services/ssh.scm \ + %D%/services/version-control.scm \ %D%/services/web.scm \ %D%/services/xorg.scm \ \ diff --git a/gnu/services/version-control.scm b/gnu/services/version-control.scm new file mode 100644 index 0000000..ad41afc --- /dev/null +++ b/gnu/services/version-control.scm @@ -0,0 +1,110 @@ + ;;; GNU Guix --- Functional package management for GNU + ;;; Copyright © 2016 ng0 + ;;; + ;;; 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 services version-control) + #:use-module (gnu services) + #:use-module (gnu services base) + #:use-module (gnu services shepherd) + #:use-module (gnu system shadow) + #:use-module (gnu packages version-control) + #:use-module (gnu packages admin) + #:use-module (guix records) + #:use-module (guix gexp) + #:use-module (ice-9 match) + #:export (git-service + git-service-type)) + +;;; Commentary: +;;; +;;; Version Control related services. +;;; +;;; Code: + + +;;; +;;; git +;;; + +(define-record-type* + git-configuration make-git-configuration + git-configuration? + (git git-configuration-git ; + (default git)) + (base-path git-configuration-base-path) ; string + (port git-configuration-port)) ; string + + +(define git-shepherd-service + (match-lambda + (($ git base-path port) + (let ((conf (string-append + "--base-path="base-path + "--port="(number->string port)))) + (list (shepherd-service + (provision '(git)) + (requirement '(networking loopback syslogd)) + (documentation "Run the git-daemon server for git repositories") + (start #~(make-forkexec-constructor + (list (string-append #$git "/bin/git") + "daemon" "--syslog" "--informative-errors" + #$conf))) + (stop #~(make-kill-destructor)))))))) + +(define %git-accounts + ;; User account and groups for git-daemon. + (list (user-group (name "git") (system? #t)) + (user-account + (name "git") + (group "git") + (system? #t) + (comment "git-daemon user") + (home-directory "/var/git") + (shell #~(string-append #$shadow "/sbin/nologin"))))) + +(define %git-activation + ;; Activation gexp. + #~(begin (use-modules (guix build utils)) + (mkdir-p "/var/run/git-daemon"))) + +(define git-service-type + (service-type + (name 'git) + (extensions + (list (service-extension shepherd-root-service-type + git-shepherd-service) + (service-extension activation-service-type + (const %git-activation)) + ;; Add git-daemon to the global profile. + (service-extension profile-service-type list))))) + +(define* (git-service #:key + (git git) + (base-path "/var/git/repositories") + (port 9418)) + "Return a service that runs @url{https://git-scm.org,git} as a daemon, + etc... + + The daemon will listen on the port specified in @var{port}. + + In addition, @var{extra-settings} specifies a string to append to the + daemon parameters." + (service git-service-type + (git-configuration + (git git) + (base-path base-path) + (port port)))) -- 2.9.0 -- ♥Ⓐ ng0 For non-prism friendly talk find me on http://www.psyced.org SecuShare – http://secushare.org