aboutsummaryrefslogtreecommitdiff
path: root/gn
diff options
context:
space:
mode:
Diffstat (limited to 'gn')
-rw-r--r--gn/deploy/machines.scm64
-rw-r--r--gn/deploy/machines/myserver.scm66
2 files changed, 130 insertions, 0 deletions
diff --git a/gn/deploy/machines.scm b/gn/deploy/machines.scm
new file mode 100644
index 0000000..b54f2f1
--- /dev/null
+++ b/gn/deploy/machines.scm
@@ -0,0 +1,64 @@
+; Machine definitions
+
+(define-module (gn deploy machines)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system perl)
+ #:use-module (guix build-system python)
+ ;; #:use-module (guix build-system ruby)
+ #:use-module (guix build-system r)
+ #:use-module (guix build-system trivial)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages web)
+ #:use-module (gn packages web)
+ #:use-module (srfi srfi-1))
+
+; Configure a default version of the nginx web server
+(define-public nginx-config
+ (let ((commit "e2ac61bfa472f23eb8e0c6863395a79c94a3d68a")
+ (revision "1"))
+ (package
+ (name "nginx-gn-config")
+ (version (git-version "0.0.1" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://git.genenetwork.org/pjotrp/guix-bioinformatics.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1pczs7farkcklvh96q1psjgv86mlwv93c3lzmc1mwp9m299g4qdr"))))
+ (build-system trivial-build-system)
+ (native-inputs `(("unzip" ,unzip)
+ ("source" ,source)))
+ (propagated-inputs `(("nginx" ,nginx)))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((target (string-append (assoc-ref %outputs "out")
+ "/etc/nginx"))
+ (nginx-etc (string-append (assoc-ref %build-inputs "nginx")
+ "/share/nginx/conf")))
+ ; (write target)
+ (mkdir-p target)
+ ; copy original nginx configuration /gnu/store/nginx-ver/share/nginx/conf/*
+ ; (copy-recursively nginx-etc target)
+ (copy-file (string-append nginx-etc "/nginx.conf")
+ (string-append target "/nginx.conf"))
+ (plain-file "sudoers" "\
+root ALL=(ALL) ALL
+%wheel ALL=(ALL) ALL\n")
+ #t))))
+ (home-page "http://git.genenetwork.org/pjotrp/guix-bioinformatics")
+ (synopsis "Nginx configuration")
+ (description "None.")
+ (license license:expat))))
diff --git a/gn/deploy/machines/myserver.scm b/gn/deploy/machines/myserver.scm
new file mode 100644
index 0000000..9a9923d
--- /dev/null
+++ b/gn/deploy/machines/myserver.scm
@@ -0,0 +1,66 @@
+;; This is an operating system configuration template
+;; for a "bare bones" setup, with no X11 display server.
+
+(use-modules (gnu)
+ (gnu packages web))
+(use-service-modules networking ssh web)
+(use-package-modules screen ruby)
+
+(operating-system
+ (host-name "komputilo")
+ (timezone "Europe/Amsterdam")
+ (locale "en_US.utf8")
+
+ ;; Boot in "legacy" BIOS mode, assuming /dev/sdX is the
+ ;; target hard disk, and "my-root" is the label of the target
+ ;; root file system.
+ (bootloader (bootloader-configuration
+ (bootloader grub-bootloader)
+ (target "/dev/sdX")))
+ (file-systems (cons (file-system
+ (device (file-system-label "my-root"))
+ (mount-point "/")
+ (type "ext4"))
+ %base-file-systems))
+
+ ;; This is where user accounts are specified. The "root"
+ ;; account is implicit, and is initially created with the
+ ;; empty password.
+ (users (cons (user-account
+ (name "pjotr")
+ (password "$6$EoLVFsCpLywbQmy1$aJJ3dIrgIH4UtiTVynIZ0MiC667w4C5ybygGisUnUfusPrgxZ7ncz.Cjv67EJPA6VW3EPFbOaiadQzxFn2sLb.")
+ (comment "Pjotr")
+ (group "users")
+
+ ;; Adding the account to the "wheel" group
+ ;; makes it a sudoer. Adding it to "audio"
+ ;; and "video" allows the user to play sound
+ ;; and access the webcam.
+ (supplementary-groups '("wheel"
+ "audio" "video")))
+ %base-user-accounts))
+
+ ;; Globally-installed packages.
+ ; (packages (cons screen %base-packages))
+
+ (packages (append (list
+ screen nginx)
+ %base-packages))
+
+
+ ;; Add services to the baseline: a DHCP client and
+ ;; an SSH server with nginx
+ (services (append (list (service dhcp-client-service-type)
+ (service openssh-service-type
+ (openssh-configuration
+ ; (authorized-keys
+ ; `(("pjotr" ,(local-file "/home/pjotr/.ssh/authorized_keys"))))
+ (password-authentication? #t)
+ (port-number 2222)))
+ (service nginx-service-type
+ (nginx-configuration
+ (server-blocks
+ (list (nginx-server-configuration
+ (listen '("8080")))))))
+ )
+ %base-services)))