all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: ng0 <ng0@we.make.ritual.n0.is>
To: Ricardo Wurmus <rekado@elephly.net>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: pre-release [PATCH] git-service [v2]
Date: Wed, 13 Jul 2016 16:37:45 +0000	[thread overview]
Message-ID: <87d1mhxzmu.fsf_-_@we.make.ritual.n0.is> (raw)
In-Reply-To: <87r3b33ls5.fsf@elephly.net> (Ricardo Wurmus's message of "Fri, 08 Jul 2016 22:41:30 +0200")

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 <ng0@we.make.ritual.n0.is>
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 <ng0@we.make.ritual.n0.is>
+;;;
+;;; 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 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:
+
+\f
+;;;
+;;; git
+;;;
+
+(define-record-type* <git-configuration>
+  git-configuration make-git-configuration
+  git-configuration?
+  (git       git-configuration-git  ;<package>
+             (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-configuration> 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 #<procedure fc0b60 at
ice-9/boot-9.scm:4041:10 ()>]
1729: 18 [#<procedure fc5ea0 ()>]
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 #<procedure 3b761a0 at
    guix/ui.scm:425:2 ()> ...]
     157: 14 [catch system-error ...]
     In guix/scripts/system.scm:
      882: 13 [#<procedure 3b78cf0 at
      guix/scripts/system.scm:874:2 ()>]
       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 [#<procedure 3cc3a20 at
        guix/scripts/system.scm:792:8 (state)> #]
         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 #<procedure 4b413c0 at
             gnu/services.scm:590:4 (service)> (# # #)]
             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 #<procedure 1867a60 at
                guix/profiles.scm:188:8 (expr)> (# # # # ...)]
                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-configuration> git: #<package git@2.9.0
gnu/packages/version-control.scm:113 2f229c0> base-path:
"/var/git/repositories" port: 9418>


-- 
♥Ⓐ  ng0
For non-prism friendly talk find me on http://www.psyced.org
SecuShare – http://secushare.org

  parent reply	other threads:[~2016-07-13 16:38 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-08 15:53 pre-release [PATCH] git-service ng0
2016-07-08 18:24 ` Thompson, David
2016-07-08 20:41   ` Ricardo Wurmus
2016-07-09  1:08     ` ng0
2016-07-13 10:23     ` ng0
2016-07-13 16:37     ` ng0 [this message]
2016-07-14  9:07       ` pre-release [PATCH] git-service [v2] ng0
2016-08-11 15:55         ` ng0
2016-08-19  9:02           ` ng0
2016-08-22  8:03           ` Alex Kost
2016-08-25  9:55             ` ng0
2016-08-26  4:50               ` Alex Kost
2016-08-27 15:39                 ` ng0
2016-08-27 20:09                   ` Alex Kost
2016-08-27 20:44                     ` ng0
2016-08-28  0:04                       ` ng0

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=87d1mhxzmu.fsf_-_@we.make.ritual.n0.is \
    --to=ng0@we.make.ritual.n0.is \
    --cc=guix-devel@gnu.org \
    --cc=rekado@elephly.net \
    /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.