guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: pre-release [PATCH] git-service [v2]


From: ng0
Subject: Re: pre-release [PATCH] git-service [v2]
Date: Wed, 13 Jul 2016 16:37:45 +0000

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 <address@hidden>
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 <address@hidden>
+;;;
+;;; 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:
+
+
+;;;
+;;; 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)))


address@hidden ~/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 address@hidden
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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]