diff options
Diffstat (limited to 'gn/deploy')
-rw-r--r-- | gn/deploy/machines.scm | 64 | ||||
-rw-r--r-- | gn/deploy/machines/myserver.scm | 66 |
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))) |