From mboxrd@z Thu Jan 1 00:00:00 1970 From: ng0 Subject: Re: pre-release [PATCH] git-service [v2] Date: Wed, 13 Jul 2016 16:37:45 +0000 Message-ID: <87d1mhxzmu.fsf_-_@we.make.ritual.n0.is> References: <87zipsgm8g.fsf@we.make.ritual.n0.is> <87r3b33ls5.fsf@elephly.net> 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]:58839) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bNNAe-00034P-BC for guix-devel@gnu.org; Wed, 13 Jul 2016 12:38:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bNNAa-0000fT-Vx for guix-devel@gnu.org; Wed, 13 Jul 2016 12:37:59 -0400 Received: from mithlond.libertad.in-berlin.de ([2001:67c:1400:2490::1]:53979 helo=beleriand.n0.is) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bNNAa-0000fF-Dz for guix-devel@gnu.org; Wed, 13 Jul 2016 12:37:56 -0400 In-Reply-To: <87r3b33ls5.fsf@elephly.net> (Ricardo Wurmus's message of "Fri, 08 Jul 2016 22:41:30 +0200") 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: Ricardo Wurmus Cc: guix-devel Hi, this is an updated patch which in combination with the testvm.scm further below produces the output which can be seen at the bottom of this mail, not very different from where I started with. The testvm.scm might have some issues, but I'll notice once I get to the point where the service stops throwing errors. >From 55211aa38f0ba8cb4e458b2c145b3ef7e1d7f334 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 | 115 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 gnu/services/version-control.scm diff --git a/gnu/local.mk b/gnu/local.mk index d011844..5808d14 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..5654783 --- /dev/null +++ b/gnu/services/version-control.scm @@ -0,0 +1,115 @@ +;;; 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 (srfi srfi-1) + ;; check for redundancy / necessity: + ;; #:use-module (srfi srfi-9) + ;; #:use-module (srfi srfi-26) + ;; #:use-module (srfi srfi-34) + #: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 + (default "/var/git/repositories")) ;string + (port git-configuration-port + (default 9418))) ;number + +(define git-shepherd-service + (match-lambda + (($ git base-path 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" + (string-append "--base-path=" $#base-path) + (string-append "--port=" $#port)))) + (stop #~(make-kill-destructor))))))) + +;; We maybe need it to have the git-shell instead. +(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 testvm.scm: (use-modules (gnu) (gnu system nss)) 1(use-service-modules networking ssh version-control dbus avahi xorg) (use-package-modules certs) (use-package-modules tor emacs xorg version-control avahi xorg ssh) (operating-system (host-name "testvm") (timezone "UTC") (locale "en_US.UTF-8") (bootloader (grub-configuration (device "/dev/sda"))) (file-systems (list (file-system (mount-point "/") (device "dummy") (type "dummy")) %binary-format-file-system)) (users (list (user-account (name "bobthecrashtestdummy") (comment "") (group "users") (supplementary-groups '("wheel" "netdev" "audio" "video")) (home-directory "/home/bobthecrashtestdummy") (password "")))) (services (cons* (slim-service #:auto-login? #t #:default-user "bobthecrashtestdummy") (console-keymap-service "de-latin1") (static-networking-service "eth0" "10.0.2.10" #:name-servers '("10.0.2.3") #:gateway "10.0.2.2") ;;(avahi-service) ;;(dbus-service (list avahi)) (git-service) %base-services)) ;;%desktop-services)) (pam-services (base-pam-services #:allow-empty-passwords? #t)) (packages (cons* emacs openssh git xterm avahi findutils grep which xmodmap %base-packages))) ng0@shadowwalker ~/src/guix/guix-git-service$ ./pre-inst-env guix system vm ~/src/guix/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/src/guix/guix-git-service/scripts/guix"] In guix/ui.scm: 1209: 16 [run-guix-command system "vm" "/home/ng0/src/guix/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/src/guix/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> -- ♥Ⓐ ng0 For non-prism friendly talk find me on http://www.psyced.org SecuShare – http://secushare.org