(use-modules (guix packages) (guix download) ((guix licenses) #:prefix license:) (guix gexp) (nonguix build-system binary) (gnu packages gcc) (gnu packages admin) (gnu services) (gnu services configuration) (gnu services shepherd) (gnu system shadow)) (define statping-ng-bin-amd64 (package (name "statping-ng-bin-amd64") (version "0.91.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/statping-ng/statping-ng/releases/download/v" version "/statping-linux-amd64.tar.gz")) (file-name "statping-ng") (sha256 (base32 "1d4qnwp5cmv7glw31m9g1ackccgx4kdrc445fdfi5ir75grqqx0g")))) (build-system binary-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'chmod-to-allow-patchelf (lambda _ (chmod "statping-ng" #o755)))) ;#:validate-runpath? #f #:install-plan `(("statping-ng" "bin/")))) (inputs `(("gcc:lib" ,gcc "lib"))) (home-page "https://statping-ng.github.io/") (synopsis "An updated drop-in for statping.") (description "A Status Page for monitoring your websites and applications with beautiful graphs, analytics, and plugins. Run on any type of environment.") (properties '((release-monitoring-url . "https://github.com/statping-ng/statping-ng/releases"))) (license license:gpl3))) (define %statping-ng-accounts (list (user-group (name "statping-ng") (system? #t)) (user-account (name "statping-ng") (group "statping-ng") (system? #t) (shell (file-append shadow "/sbin/nologin")) (comment "uporabnik za statping-ng uptime tracker")))) (define %statping-ng-activation #~(begin (use-modules (guix build tools)) (mkdir-p "/srv/statping-ng") (let ((user (getpwnam "statping-ng"))) (chown "/srv/statping-ng" (passwd:uid user) (passwd:gid user))))) (define (statping-ng-shepherd-service config) "Vrne storitev ki poganja statping-ng" (let* ((statping-ng (statping-ng-configuration config)) (statping-ng-bin (file-append statping-ng-bin-amd64 "/bin/statping-ng")) (statping-ng-cfg (statping-ng-configuration->file config))) (list (shepherd-service (documentation "požene statping-ng storitev") (requirement '(networking user-processes)) (provision '(statping-ng)) (start #~(make-forkexec-constructor (list #$statping-ng-bin) #:environment-variables (list))) (stop #~(make-kill-destructor)))))) (define-configuration/no-serialization statping-ng-configuration (statping-ng-bin-amd64 (file-like statping-ng-bin-amd64) "paket statping-ng")) (define (statping-ng-configuration->file config) (mixed-text-file "statping-ng.yml" " connection: postgres host: localhost user: statpingng password: d7e9820c6856698908632127 database: statpingng port: 5432 language: en allow_reports: true location: /srv/statping-ng disable_http: false demo_mode: false disable_logs: false use_assets: false db_open_connections: 25 db_idle_connections: 25 db_max_life_connections: 300 sample_data: false use_cdn: false disable_colors: false ")) (define statping-ng-bin-amd64-service-type (service-type (name 'statping-ng-bin-amd64) (extensions ;; Storitev, ki teče (list (service-extension shepherd-root-service-type statping-ng-shepherd-service) ;; Uporabniški računi za storitev (service-extension account-service-type (const %statping-ng-accounts)) ;; Aktivacija se požene menda enkrat, ko prvič poženeš (service-extension activation-service-type (const %statping-ng-activation)))) (default-value (statping-ng-configuration)) (description "Poženi statping-ng"))) statping-ng-bin-amd64