* [PATCH 2/9] activation: Allow /var/lib to be a home directory.
2016-09-01 15:57 [PATCH 1/9] system: vm: Remove -net user flag David Craven
@ 2016-09-01 15:57 ` David Craven
2016-09-02 11:54 ` 宋文武
2016-09-03 13:24 ` Ludovic Courtès
2016-09-01 15:57 ` [PATCH 3/9] services: Export initrc David Craven
` (8 subsequent siblings)
9 siblings, 2 replies; 47+ messages in thread
From: David Craven @ 2016-09-01 15:57 UTC (permalink / raw)
To: guix-devel
* gnu/build/activation.scm (activate-user): Make sure /var/lib exists.
---
gnu/build/activation.scm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm
index 10aa58d..3abfdd6 100644
--- a/gnu/build/activation.scm
+++ b/gnu/build/activation.scm
@@ -233,6 +233,9 @@ numeric gid or #f."
;; 'groupadd' aborts if the file doesn't already exist.
(touch "/etc/group")
+ ;; allow /var/lib/application to be a home directory
+ (mkdir-p "/var/lib")
+
;; Create the root account so we can use 'useradd' and 'groupadd'.
(activate-user (find (match-lambda
((name (? zero?) _ ...) #t)
--
2.9.0
^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 2/9] activation: Allow /var/lib to be a home directory.
2016-09-01 15:57 ` [PATCH 2/9] activation: Allow /var/lib to be a home directory David Craven
@ 2016-09-02 11:54 ` 宋文武
2016-09-02 15:31 ` Vincent Legoll
2016-09-03 13:24 ` Ludovic Courtès
1 sibling, 1 reply; 47+ messages in thread
From: 宋文武 @ 2016-09-02 11:54 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
David Craven <david@craven.ch> writes:
> * gnu/build/activation.scm (activate-user): Make sure /var/lib exists.
> ---
> gnu/build/activation.scm | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm
> index 10aa58d..3abfdd6 100644
> --- a/gnu/build/activation.scm
> +++ b/gnu/build/activation.scm
> @@ -233,6 +233,9 @@ numeric gid or #f."
> ;; 'groupadd' aborts if the file doesn't already exist.
> (touch "/etc/group")
>
> + ;; allow /var/lib/application to be a home directory
> + (mkdir-p "/var/lib")
> +
The comment is misleading, I think a better one is:
allow home directories to be created under /var/lib.
Also, it's better fit in the 'add-user' procudere, before
the run of `useradd' command. And instead of handing
this particular case, how about create any parent directory
of HOME? like:
[...]
;; create the parent directory of HOME.
(when home (mkdir-p (dirname home)))
;; Use 'useradd' from the Shadow package.
[...]
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 2/9] activation: Allow /var/lib to be a home directory.
2016-09-02 11:54 ` 宋文武
@ 2016-09-02 15:31 ` Vincent Legoll
2016-09-02 17:13 ` ng0
0 siblings, 1 reply; 47+ messages in thread
From: Vincent Legoll @ 2016-09-02 15:31 UTC (permalink / raw)
To: 宋文武; +Cc: guix-devel
Hello,
> Also, it's better fit in the 'add-user' procudere, before
> the run of `useradd' command. And instead of handing
> this particular case, how about create any parent directory
> of HOME? like:
>
> [...]
> ;; create the parent directory of HOME.
> (when home (mkdir-p (dirname home)))
>
> ;; Use 'useradd' from the Shadow package.
> [...]
This looks like a better idea IMHO (more generic)
--
Vincent Legoll
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 2/9] activation: Allow /var/lib to be a home directory.
2016-09-02 15:31 ` Vincent Legoll
@ 2016-09-02 17:13 ` ng0
2016-09-02 17:19 ` David Craven
0 siblings, 1 reply; 47+ messages in thread
From: ng0 @ 2016-09-02 17:13 UTC (permalink / raw)
To: Vincent Legoll, 宋文武; +Cc: guix-devel
Vincent Legoll <vincent.legoll@gmail.com> writes:
> Hello,
>
>> Also, it's better fit in the 'add-user' procudere, before
>> the run of `useradd' command. And instead of handing
>> this particular case, how about create any parent directory
>> of HOME? like:
>>
>> [...]
>> ;; create the parent directory of HOME.
>> (when home (mkdir-p (dirname home)))
>>
>> ;; Use 'useradd' from the Shadow package.
>> [...]
>
> This looks like a better idea IMHO (more generic)
>
> --
> Vincent Legoll
>
Apparently I need this if I want to extend git-service (ie: ssh to user
git), and for gnunet-service which requires some directories to be
present in $HOME which normally are there for users as far as I remember.
[PATHS]
SERVICEHOME = /var/lib/gnunet is not working. I could of course create
.config to ~maybe~ satisfy it, but I find this patch useful, as it will
allow me to write less code.
--
ng0
For non-prism friendly talk find me on http://www.psyced.org
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 2/9] activation: Allow /var/lib to be a home directory.
2016-09-02 17:13 ` ng0
@ 2016-09-02 17:19 ` David Craven
0 siblings, 0 replies; 47+ messages in thread
From: David Craven @ 2016-09-02 17:19 UTC (permalink / raw)
To: ng0; +Cc: guix-devel
> And instead of handing this particular case,
> how about create any parent directory
> of HOME?
I briefly thought about it and thought that we should discourage users
to pick *any* home directory. This will prevent them from doing so.
But it's just an artificial restriction. In that case it's a bug fix
instead of a feature ;-)
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 2/9] activation: Allow /var/lib to be a home directory.
2016-09-01 15:57 ` [PATCH 2/9] activation: Allow /var/lib to be a home directory David Craven
2016-09-02 11:54 ` 宋文武
@ 2016-09-03 13:24 ` Ludovic Courtès
1 sibling, 0 replies; 47+ messages in thread
From: Ludovic Courtès @ 2016-09-03 13:24 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
David Craven <david@craven.ch> skribis:
> * gnu/build/activation.scm (activate-user): Make sure /var/lib exists.
^
AFAICS this is ‘activate-users+groups’.
I initially had the same reaction as 宋文武, but based on your reply, I
agree that it looks like the right place.
> + ;; allow /var/lib/application to be a home directory
Please capitalize and punctuate.
> + (mkdir-p "/var/lib")
‘mkdir’ should be enough.
Thanks!
Ludo’.
^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 3/9] services: Export initrc.
2016-09-01 15:57 [PATCH 1/9] system: vm: Remove -net user flag David Craven
2016-09-01 15:57 ` [PATCH 2/9] activation: Allow /var/lib to be a home directory David Craven
@ 2016-09-01 15:57 ` David Craven
2016-09-03 13:34 ` Ludovic Courtès
2016-09-01 15:57 ` [PATCH 4/9] services: syslog: Use syslog-configuration David Craven
` (7 subsequent siblings)
9 siblings, 1 reply; 47+ messages in thread
From: David Craven @ 2016-09-01 15:57 UTC (permalink / raw)
To: guix-devel
* gnu/services/xorg.scm (define-module): Export initrc.
---
gnu/services/xorg.scm | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 4e311de..87c4487 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -42,6 +42,8 @@
#:export (xorg-configuration-file
%default-xorg-modules
xorg-start-command
+ xinitrc
+
%default-slim-theme
%default-slim-theme-name
slim-configuration
--
2.9.0
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 4/9] services: syslog: Use syslog-configuration.
2016-09-01 15:57 [PATCH 1/9] system: vm: Remove -net user flag David Craven
2016-09-01 15:57 ` [PATCH 2/9] activation: Allow /var/lib to be a home directory David Craven
2016-09-01 15:57 ` [PATCH 3/9] services: Export initrc David Craven
@ 2016-09-01 15:57 ` David Craven
2016-09-02 12:31 ` Ludovic Courtès
2016-09-01 15:57 ` [PATCH 5/9] gnu: Add prefix to license imports in (gnu packages display-managers) David Craven
` (6 subsequent siblings)
9 siblings, 1 reply; 47+ messages in thread
From: David Craven @ 2016-09-01 15:57 UTC (permalink / raw)
To: guix-devel
* gnu/services/base.scm (<syslog-configuration>): New variable.
(syslog-service-type): Use <syslog-configuration>.
(syslog-service): Use <syslog-configuration>.
---
gnu/services/base.scm | 28 ++++++++++++++++++++--------
gnu/tests/base.scm | 9 ++++++---
2 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index f3f6408..76e974c 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -73,15 +73,15 @@
%nscd-default-caches
%nscd-default-configuration
-
nscd-configuration
nscd-configuration?
-
nscd-cache
nscd-cache?
-
nscd-service-type
nscd-service
+
+ syslog-configuration
+ syslog-configuration?
syslog-service
syslog-service-type
%default-syslog.conf
@@ -108,6 +108,7 @@
rngd-configuration?
rngd-service-type
rngd-service
+
pam-limits-service-type
pam-limits-service
@@ -885,17 +886,27 @@ given @var{config}---an @code{<nscd-configuration>} object. @xref{Name
Service Switch}, for an example."
(service nscd-service-type config))
+
+(define-record-type* <syslog-configuration>
+ syslog-configuration make-syslog-configuration
+ syslog-configuration?
+ (syslogd syslog-configuration-syslogd
+ (default #~(string-append #$inetutils "/libexec/syslogd")))
+ (config-file syslog-configuration-config-file
+ (default %default-syslog.conf)))
+
(define syslog-service-type
(shepherd-service-type
'syslog
- (lambda (config-file)
+ (lambda (config)
(shepherd-service
(documentation "Run the syslog daemon (syslogd).")
(provision '(syslogd))
(requirement '(user-processes))
(start #~(make-forkexec-constructor
- (list (string-append #$inetutils "/libexec/syslogd")
- "--no-detach" "--rcfile" #$config-file)))
+ (list #$(syslog-configuration-syslogd config)
+ "--no-detach"
+ "--rcfile" #$(syslog-configuration-config-file config))))
(stop #~(make-kill-destructor))))))
;; Snippet adapted from the GNU inetutils manual.
@@ -921,14 +932,15 @@ Service Switch}, for an example."
mail.* /var/log/maillog
"))
-(define* (syslog-service #:key (config-file %default-syslog.conf))
+(define* (syslog-service #:optional (config (syslog-configuration)))
"Return a service that runs @command{syslogd}. If configuration file
name @var{config-file} is not specified, use some reasonable default
settings.
@xref{syslogd invocation,,, inetutils, GNU Inetutils}, for more
information on the configuration file syntax."
- (service syslog-service-type config-file))
+ (service syslog-service-type config))
+
(define pam-limits-service-type
(let ((security-limits
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index 41f50c0..5c2af5b 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -384,9 +384,12 @@ functionality tests.")
(log-file "/dev/console")))
(syslog-service-type config
=>
- (plain-file
- "syslog.conf"
- "*.* /dev/console\n")))))))
+ (syslog-configuration
+ (inherit config)
+ (config-file
+ (plain-file
+ "syslog.conf"
+ "*.* /dev/console\n")))))))))
(define (run-nss-mdns-test)
;; Test resolution of '.local' names via libc. Start the marionette service
--
2.9.0
^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 4/9] services: syslog: Use syslog-configuration.
2016-09-01 15:57 ` [PATCH 4/9] services: syslog: Use syslog-configuration David Craven
@ 2016-09-02 12:31 ` Ludovic Courtès
0 siblings, 0 replies; 47+ messages in thread
From: Ludovic Courtès @ 2016-09-02 12:31 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
David Craven <david@craven.ch> skribis:
> * gnu/services/base.scm (<syslog-configuration>): New variable.
> (syslog-service-type): Use <syslog-configuration>.
> (syslog-service): Use <syslog-configuration>.
Please mention the gnu/tests/base.scm changes here.
> --- a/gnu/services/base.scm
> +++ b/gnu/services/base.scm
> @@ -73,15 +73,15 @@
>
> %nscd-default-caches
> %nscd-default-configuration
> -
> nscd-configuration
> nscd-configuration?
> -
> nscd-cache
> nscd-cache?
> -
Please keep the spacing.
> +(define-record-type* <syslog-configuration>
> + syslog-configuration make-syslog-configuration
> + syslog-configuration?
> + (syslogd syslog-configuration-syslogd
> + (default #~(string-append #$inetutils "/libexec/syslogd")))
> + (config-file syslog-configuration-config-file
> + (default %default-syslog.conf)))
Good idea!
> -(define* (syslog-service #:key (config-file %default-syslog.conf))
> +(define* (syslog-service #:optional (config (syslog-configuration)))
> "Return a service that runs @command{syslogd}. If configuration file
> name @var{config-file} is not specified, use some reasonable default
> settings.
>
> @xref{syslogd invocation,,, inetutils, GNU Inetutils}, for more
> information on the configuration file syntax."
> - (service syslog-service-type config-file))
> + (service syslog-service-type config))
Could you update the docstring and guix.texi, and add an @deftp for
‘syslog-configuration’ in guix.texi?
TIA!
Ludo’.
^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 5/9] gnu: Add prefix to license imports in (gnu packages display-managers).
2016-09-01 15:57 [PATCH 1/9] system: vm: Remove -net user flag David Craven
` (2 preceding siblings ...)
2016-09-01 15:57 ` [PATCH 4/9] services: syslog: Use syslog-configuration David Craven
@ 2016-09-01 15:57 ` David Craven
2016-09-02 12:27 ` Ludovic Courtès
2016-09-01 15:57 ` [PATCH 6/9] gnu: Add greenisland David Craven
` (5 subsequent siblings)
9 siblings, 1 reply; 47+ messages in thread
From: David Craven @ 2016-09-01 15:57 UTC (permalink / raw)
To: guix-devel
* gnu/packages/display-managers.scm: Import (guix licenses) with prefix
"license:".
---
gnu/packages/display-managers.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 579b149..3f3c6db 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -19,7 +19,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages display-managers)
- #:use-module ((guix licenses) #:prefix l:)
+ #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system cmake)
@@ -92,4 +92,4 @@ fonts, External themes support, Configurable runtime options: X server --
login / shutdown / reboot commands, Single (GDM-like) or double (XDM-like)
input control, Can load predefined user at startup, Configurable welcome /
shutdown messages, Random theme selection.")
- (license l:gpl2)))
+ (license license:gpl2)))
--
2.9.0
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 6/9] gnu: Add greenisland.
2016-09-01 15:57 [PATCH 1/9] system: vm: Remove -net user flag David Craven
` (3 preceding siblings ...)
2016-09-01 15:57 ` [PATCH 5/9] gnu: Add prefix to license imports in (gnu packages display-managers) David Craven
@ 2016-09-01 15:57 ` David Craven
2016-09-02 13:20 ` Ludovic Courtès
2016-09-07 6:50 ` Mark H Weaver
2016-09-01 15:57 ` [PATCH 7/9] gnu: Add sddm David Craven
` (4 subsequent siblings)
9 siblings, 2 replies; 47+ messages in thread
From: David Craven @ 2016-09-01 15:57 UTC (permalink / raw)
To: guix-devel
* gnu/packages/display-managers.scm (greenisland): New variable.
---
gnu/packages/display-managers.scm | 91 +++++++++++++++++++++++++++++++++++++--
1 file changed, 88 insertions(+), 3 deletions(-)
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 3f3c6db..d84dbc3 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -25,12 +25,97 @@
#:use-module (guix build-system cmake)
#:use-module (guix packages)
#:use-module (gnu packages)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl)
- #:use-module (gnu packages xorg)
+ #:use-module (gnu packages glib)
#:use-module (gnu packages image)
- #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages kde-frameworks)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
- #:use-module (gnu packages linux))
+ #:use-module (gnu packages qt)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xorg))
+
+(define-public greenisland
+ (package
+ (name "greenisland")
+ (version "0.8.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/greenisland/greenisland"
+ "/releases/download/v" version "/"
+ "greenisland-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1c9rlq7fqrsd5nb37anjvnp9xspqjz1kc0fvydv5xdy3abg8mw40"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("extra-cmake-modules" ,extra-cmake-modules)
+ ("dbus" ,dbus)
+ ("glib:bin" ,glib "bin")
+ ("pkg-config" ,pkg-config)
+ ("xorg-server" ,xorg-server)))
+ (inputs
+ `(("elogind" ,elogind)
+ ("eudev" ,eudev)
+ ("fontconfig" ,fontconfig)
+ ("freetype" ,freetype)
+ ("glib" ,glib)
+ ("libdrm" ,libdrm)
+ ("libinput" ,libinput-minimal)
+ ("libxcursor" ,libxcursor)
+ ("libxkbcommon" ,libxkbcommon)
+ ("libx11" ,libx11)
+ ("mesa" ,mesa)
+ ("qtbase" ,qtbase)
+ ("qtdeclarative" ,qtdeclarative)
+ ("wayland" ,wayland)
+ ("wayland-protocols" ,wayland-protocols)
+ ("xcb-util-cursor" ,xcb-util-cursor)))
+ (arguments
+ `(#:configure-flags
+ (list (string-append "-DPLUGIN_INSTALL_DIR="
+ (assoc-ref %outputs "out") "/plugins")
+ (string-append "-DQML_INSTALL_DIR="
+ (assoc-ref %outputs "out") "/qml"))
+ #:modules ((guix build cmake-build-system)
+ (guix build qt-utils)
+ (guix build utils))
+ #:imported-modules (,@%cmake-build-system-modules
+ (guix build qt-utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'disable-udev-tests
+ (lambda _ ; FIXME: Build env doesn't contain /dev/sda
+ (substitute* "tests/auto/platform/tst_udev.cpp"
+ (("QVERIFY") "// QVERIFY")
+ (("QCOMPARE") "// QCOMPARE"))))
+ (replace 'check
+ (lambda _
+ (setenv "DBUS_FATAL_WARNINGS" "0")
+ (zero? (system* "dbus-launch" "ctest" "."))))
+ (add-before 'check 'check-setup
+ (lambda _
+ (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output
+ (setenv "QT_QPA_PLATFORM" "offscreen")
+ (setenv "XDG_RUNTIME_DIR" (getcwd))
+ #t))
+ (add-after 'install 'wrap-programs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (wrap-qt-program out "greenisland")
+ (wrap-qt-program out "greenisland-launcher")
+ (wrap-qt-program out "greenisland-screencaster")
+ (wrap-qt-program out "greenisland-wayland-scanner")
+ #t))))))
+ (synopsis "QtQuick Wayland compositor and shell for desktop and mobile")
+ (description "Green Island provides a full blown Wayland compositor for
+QtQuick as well as pluggable hardware abstraction, extensions, tools and a
+Qt-style API for Wayland clients.")
+ (home-page "http://hawaiios.org")
+ (license (list license:gpl2 license:gpl3 license:lgpl2.1 license:lgpl3))))
(define-public slim
(package
--
2.9.0
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 7/9] gnu: Add sddm.
2016-09-01 15:57 [PATCH 1/9] system: vm: Remove -net user flag David Craven
` (4 preceding siblings ...)
2016-09-01 15:57 ` [PATCH 6/9] gnu: Add greenisland David Craven
@ 2016-09-01 15:57 ` David Craven
2016-09-02 12:26 ` Ludovic Courtès
2016-09-01 15:57 ` [PATCH 8/9] services: Add sddm service David Craven
` (3 subsequent siblings)
9 siblings, 1 reply; 47+ messages in thread
From: David Craven @ 2016-09-01 15:57 UTC (permalink / raw)
To: guix-devel
* gnu/packages/display-managers.scm (sddm): New variable.
---
gnu/packages/display-managers.scm | 65 +++++++++++++++++++++++++++++++++++++++
1 file changed, 65 insertions(+)
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index d84dbc3..335a7b5 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -25,6 +25,7 @@
#:use-module (guix build-system cmake)
#:use-module (guix packages)
#:use-module (gnu packages)
+ #:use-module (gnu packages admin)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl)
@@ -117,6 +118,70 @@ Qt-style API for Wayland clients.")
(home-page "http://hawaiios.org")
(license (list license:gpl2 license:gpl3 license:lgpl2.1 license:lgpl3))))
+(define-public sddm
+ (package
+ (name "sddm")
+ (version "0.14.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/sddm/sddm"
+ "/releases/download/v" version "/"
+ "sddm-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0y3pn8g2qj7q20zkmbasrfsj925lfzizk63sfrvzf84bc5c84d3y"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("extra-cmake-modules" ,extra-cmake-modules)
+ ("pkg-config" ,pkg-config)
+ ("qttools" ,qttools)))
+ (inputs
+ `(("glib" ,glib)
+ ("greenisland" ,greenisland)
+ ("libxcb" ,libxcb)
+ ("libxkbcommon" ,libxkbcommon)
+ ("linux-pam" ,linux-pam)
+ ("qtbase" ,qtbase)
+ ("qtdeclarative" ,qtdeclarative)
+ ("shadow" ,shadow)
+ ("wayland" ,wayland)))
+ (arguments
+ `(#:configure-flags
+ (list
+ ;; Currently doesn't do anything
+ ;; Option added by enable wayland greeters PR
+ "-DENABLE_WAYLAND=ON"
+ "-DENABLE_PAM=ON"
+ "-DCONFIG_FILE=/etc/sddm.conf"
+ ;; Set path to /etc/login.defs
+ ;; Alternatively use -DUID_MIN and -DUID_MAX
+ (string-append "-DLOGIN_DEFS_PATH="
+ (assoc-ref %build-inputs "shadow")
+ "/etc/login.defs")
+ (string-append "-DQT_IMPORTS_DIR="
+ (assoc-ref %outputs "out") "/qml")
+ (string-append "-DCMAKE_INSTALL_SYSCONFDIR="
+ (assoc-ref %outputs "out") "/etc"))
+ #:modules ((guix build cmake-build-system)
+ (guix build qt-utils)
+ (guix build utils))
+ #:imported-modules (,@%cmake-build-system-modules
+ (guix build qt-utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-programs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (wrap-qt-program out "sddm")
+ (wrap-qt-program out "sddm-greeter")
+ #t))))))
+ (synopsis "QML based X11 and Wayland display manager")
+ (description "QML based X11 and Wayland display manager.")
+ (home-page "https://github.com/sddm/sddm")
+ ;; QML files are MIT licensed and images are CC BY 3.0.
+ (license (list license:gpl2+ license:expat license:cc-by3.0))))
+
(define-public slim
(package
(name "slim")
--
2.9.0
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 8/9] services: Add sddm service.
2016-09-01 15:57 [PATCH 1/9] system: vm: Remove -net user flag David Craven
` (5 preceding siblings ...)
2016-09-01 15:57 ` [PATCH 7/9] gnu: Add sddm David Craven
@ 2016-09-01 15:57 ` David Craven
2016-09-02 12:26 ` 宋文武
2016-09-01 15:57 ` [PATCH 9/9] gnu: Add weston David Craven
` (2 subsequent siblings)
9 siblings, 1 reply; 47+ messages in thread
From: David Craven @ 2016-09-01 15:57 UTC (permalink / raw)
To: guix-devel
* gnu/services/sddm.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
gnu/local.mk | 1 +
gnu/services/sddm.scm | 316 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 317 insertions(+)
create mode 100644 gnu/services/sddm.scm
diff --git a/gnu/local.mk b/gnu/local.mk
index 8179920..61287fd 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -390,6 +390,7 @@ GNU_SYSTEM_MODULES = \
%D%/services/networking.scm \
%D%/services/shepherd.scm \
%D%/services/herd.scm \
+ %D%/services/sddm.scm \
%D%/services/spice.scm \
%D%/services/ssh.scm \
%D%/services/web.scm \
diff --git a/gnu/services/sddm.scm b/gnu/services/sddm.scm
new file mode 100644
index 0000000..79620b0
--- /dev/null
+++ b/gnu/services/sddm.scm
@@ -0,0 +1,316 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 David Craven <david@craven.ch>
+;;;
+;;; 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 sddm)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages display-managers)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu services)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu services xorg)
+ #:use-module (gnu system pam)
+ #:use-module (gnu system shadow)
+ #:use-module (guix gexp)
+ #:use-module (guix records)
+ #:export (sddm-configuration
+ sddm-confiugration?
+ sddm-service-type
+ sddm-service))
+
+(define-record-type* <sddm-configuration>
+ sddm-configuration make-sddm-configuration
+ sddm-configuration?
+ (sddm sddm-configuration-sddm
+ (default sddm))
+ (allow-empty-passwords? sddm-configuration-allow-empty-passwords?
+ (default #t))
+
+ ;; [General]
+ ;; valid values are x11 and wayland
+ ;; currently doesn't do anything is enabled by wayland greeter PR
+ (display-server sddm-configuration-display-server
+ (default "x11"))
+ ;; valid values are on, off or none
+ (numlock sddm-configuration-numlock
+ (default "on"))
+ (halt-command sddm-configuration-halt-command
+ (default #~(string-append #$shepherd "/sbin/halt")))
+ (reboot-command sddm-configuration-reboot-command
+ (default #~(string-append #$shepherd "/sbin/reboot")))
+
+ ;; [Theme]
+ ;; valid values are elarun or maldives
+ (theme sddm-configuration-theme
+ (default "maldives"))
+ (themes-directory sddm-configuration-themes-directory
+ (default #~(string-append #$sddm "/share/sddm/themes")))
+ (faces-directory sddm-configuration-faces-directory
+ (default #~(string-append #$sddm "/share/sddm/faces")))
+
+ ;; [Users]
+ (default-path sddm-configuration-default-path
+ (default "/run/current-system/profile/bin"))
+ (minimum-uid sddm-configuration-minimum-uid
+ (default 1000))
+ (maximum-uid sddm-configuration-maximum-uid
+ (default 2000))
+ (remember-last-user? sddm-configuration-remember-last-user?
+ (default #t))
+ (remember-last-session? sddm-configuration-remember-last-session?
+ (default #t))
+ (hide-users sddm-configuration-hide-users
+ (default ""))
+ (hide-shells sddm-configuration-hide-shells
+ (default #~(string-append #$shadow "/sbin/nologin")))
+
+ ;; [Wayland]
+ (session-command sddm-configuration-session-command
+ (default #~(string-append #$sddm "/share/sddm/scripts/wayland-session")))
+ (sessions-directory sddm-configuration-sessions-directory
+ (default "/run/current-system/profile/share/wayland-sessions"))
+ ;; [X11]
+ (xorg-server-path sddm-configuration-xorg-server-path
+ (default (xorg-start-command)))
+ (xauth-path sddm-configuration-xauth-path
+ (default #~(string-append #$xauth "/bin/xauth")))
+ (xephyr-path sddm-configuration-xephyr-path
+ (default #~(string-append #$xorg-server "/bin/Xephyr")))
+ (xdisplay-start sddm-configuration-xdisplay-start
+ (default #~(string-append #$sddm "/share/sddm/scripts/Xsetup")))
+ (xdisplay-stop sddm-configuration-xdisplay-stop
+ (default #~(string-append #$sddm "/share/sddm/scripts/Xstop")))
+ (xsession-command sddm-configuration-xsession-command
+ (default (xinitrc)))
+ (xsessions-directory sddm-configuration-xsessions-directory
+ (default "/run/current-system/profile/share/xsessions"))
+ (minimum-vt sddm-configuration-minimum-vt
+ (default 7))
+ (xserver-arguments sddm-configuration-xserver-arguments
+ (default "-nolisten tcp"))
+
+ ;; [Autologin]
+ (auto-login-user sddm-configuration-auto-login-user
+ (default ""))
+ ;; valid values are xfce.desktop gnome.desktop weston.desktop hawaii.desktop
+ (auto-login-session sddm-configuration-auto-login-session
+ (default ""))
+ (relogin? sddm-configuration-relogin?
+ (default #f)))
+
+(define (sddm-configuration-file config)
+ (mixed-text-file "sddm.conf" "
+[General]
+DisplayServer=" (sddm-configuration-display-server config) "
+Numlock=" (sddm-configuration-numlock config) "
+HaltCommand=" (sddm-configuration-halt-command config) "
+RebootCommand=" (sddm-configuration-reboot-command config) "
+
+[Users]
+DefaultPath=" (sddm-configuration-default-path config) "
+MinimumUid=" (number->string (sddm-configuration-minimum-uid config))"
+MaximumUid=" (number->string (sddm-configuration-maximum-uid config))"
+RememberLastUser=" (if (sddm-configuration-remember-last-user? config)
+ "true" "false") "
+RememberLastSession=" (if (sddm-configuration-remember-last-session? config)
+ "true" "false") "
+HideUsers=" (sddm-configuration-hide-users config) "
+Hideshells=" (sddm-configuration-hide-shells config) "
+
+[Theme]
+Current=" (sddm-configuration-theme config) "
+ThemeDir=" (sddm-configuration-themes-directory config) "
+FacesDir=" (sddm-configuration-faces-directory config) "
+
+[Wayland]
+SessionCommand=" (sddm-configuration-session-command config) "
+SessionDir=" (sddm-configuration-sessions-directory config) "
+
+[X11]
+ServerPath=" (sddm-configuration-xorg-server-path config) "
+XauthPath=" (sddm-configuration-xauth-path config) "
+XephyrPath=" (sddm-configuration-xephyr-path config) "
+DisplayCommand=" (sddm-configuration-xdisplay-start config) "
+DisplayStopCommand=" (sddm-configuration-xdisplay-stop config) "
+SessionCommand=" (sddm-configuration-xsession-command config) "
+SessionDir=" (sddm-configuration-xsessions-directory config) "
+MinimumVT=" (number->string (sddm-configuration-minimum-vt config)) "
+ServerArguments=" (sddm-configuration-xserver-arguments config) "
+
+[Autologin]
+User=" (sddm-configuration-auto-login-user config) "
+Session=" (sddm-configuration-auto-login-session config) "
+Relogin=" (if (sddm-configuration-relogin? config)
+ "true" "false") "
+"))
+
+(define (sddm-activation config)
+ "Return the activation gexp for CONFIG."
+ #~(begin
+ (symlink #$(sddm-configuration-file config) "/etc/sddm.conf")))
+
+(define (sddm-shepherd-service config)
+ "Return a <shepherd-service> for sddm with CONFIG."
+
+ (define sddm-command
+ #~(list (string-append #$(sddm-configuration-sddm config) "/bin/sddm")))
+
+ (list (shepherd-service
+ (documentation "SDDM display manager.")
+ (requirement '(user-processes))
+ (provision '(display-manager))
+ (start #~(make-forkexec-constructor #$sddm-command))
+ (stop #~(make-kill-destructor)))))
+
+(define (sddm-pam-service)
+ "Return a PAM service for @command{sddm}."
+ (pam-service
+ (name "sddm")
+ (auth
+ (list
+ (pam-entry
+ (control "requisite")
+ (module "pam_nologin.so"))
+ (pam-entry
+ (control "required")
+ (module "pam_env.so"))
+ (pam-entry
+ (control "required")
+ (module "pam_succeed_if.so")
+ (arguments (list "uid >= 1000" "quiet")))
+ ;; should be factored out into system-auth
+ (pam-entry
+ (control "required")
+ (module "pam_unix.so"))))
+ (account
+ (list
+ ;; should be factored out into system-account
+ (pam-entry
+ (control "required")
+ (module "pam_unix.so"))))
+ (password
+ (list
+ ;; should be factored out into system-password
+ (pam-entry
+ (control "required")
+ (module "pam_unix.so")
+ (arguments (list "sha512" "shadow" "try_first_pass")))))
+ (session
+ (list
+ ;; lfs has a required pam_limits.so
+ ;; should be factored out into system-session
+ (pam-entry
+ (control "required")
+ (module "pam_unix.so"))))))
+
+(define (sddm-greeter-pam-service)
+ "Return a PAM service for @command{sddm-greeter}."
+ (pam-service
+ (name "sddm-greeter")
+ (auth
+ (list
+ ;; Load environment form /etc/environment and ~/.pam_environment
+ (pam-entry
+ (control "required")
+ (module "pam_env.so"))
+ ;; Always let the greeter start without authentication
+ (pam-entry
+ (control "required")
+ (module "pam_permit.so"))))
+ (account
+ (list
+ ;; No action required for account management
+ (pam-entry
+ (control "required")
+ (module "pam_permit.so"))))
+ (password
+ (list
+ ;; Can't change password
+ (pam-entry
+ (control "required")
+ (module "pam_deny.so"))))
+ (session
+ (list
+ ;; Setup session
+ (pam-entry
+ (control "required")
+ (module "pam_unix.so"))))))
+
+(define (sddm-autologin-pam-service)
+ "Return a PAM service for @command{sddm-autologin}"
+ (pam-service
+ (name "sddm-autologin")
+ (auth
+ (list
+ (pam-entry
+ (control "requisite")
+ (module "pam_nologin.so"))
+ (pam-entry
+ (control "required")
+ (module "pam_succeed_if.so")
+ (arguments (list "uid >= 1000" "quiet")))
+ (pam-entry
+ (control "required")
+ (module "pam_permit.so"))))
+ (account
+ (list
+ (pam-entry
+ (control "include")
+ (module "sddm"))))
+ (password
+ (list
+ (pam-entry
+ (control "required")
+ (module "pam_deny.so"))))
+ (session
+ (list
+ (pam-entry
+ (control "include")
+ (module "sddm"))))))
+
+(define (sddm-pam-services config)
+ (list (sddm-pam-service)
+ (sddm-greeter-pam-service)
+ (sddm-autologin-pam-service)))
+
+(define %sddm-accounts
+ (list (user-group (name "sddm") (system? #t))
+ (user-account
+ (name "sddm")
+ (group "sddm")
+ (system? #t)
+ (comment "SDDM user")
+ (home-directory "/var/lib/sddm")
+ (shell #~(string-append #$shadow "/sbin/nologin")))))
+
+(define sddm-service-type
+ (service-type (name 'sddm)
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ sddm-shepherd-service)
+ (service-extension activation-service-type
+ sddm-activation)
+ (service-extension pam-root-service-type
+ sddm-pam-services)
+ (service-extension account-service-type
+ (const %sddm-accounts))))))
+
+(define* (sddm-service #:optional (config (sddm-configuration)))
+ "Run the @uref{https://github.com/sddm/sddm,SSDM display manager}
+with the given @var{config}, a @code{<sddm-configuration>} object."
+ (service sddm-service-type config))
--
2.9.0
^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 8/9] services: Add sddm service.
2016-09-01 15:57 ` [PATCH 8/9] services: Add sddm service David Craven
@ 2016-09-02 12:26 ` 宋文武
2016-09-03 13:32 ` Ludovic Courtès
0 siblings, 1 reply; 47+ messages in thread
From: 宋文武 @ 2016-09-02 12:26 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
[...]
> +
> +(define (sddm-activation config)
> + "Return the activation gexp for CONFIG."
> + #~(begin
> + (symlink #$(sddm-configuration-file config) "/etc/sddm.conf")))
I don't know the behavior of activation when reconfigure services,
but this `symlink' call will fail when the file already exists.
And to put files to /etc, it's better to extend the `etc-service-type'.
Oh, finally we get a modern display manager, thanks!
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 8/9] services: Add sddm service.
2016-09-02 12:26 ` 宋文武
@ 2016-09-03 13:32 ` Ludovic Courtès
2016-09-03 13:34 ` David Craven
0 siblings, 1 reply; 47+ messages in thread
From: Ludovic Courtès @ 2016-09-03 13:32 UTC (permalink / raw)
To: 宋文武; +Cc: guix-devel
Hi!
iyzsong@member.fsf.org (宋文武) skribis:
> [...]
>> +
>> +(define (sddm-activation config)
>> + "Return the activation gexp for CONFIG."
>> + #~(begin
>> + (symlink #$(sddm-configuration-file config) "/etc/sddm.conf")))
>
> I don't know the behavior of activation when reconfigure services,
‘guix system reconfigure’ runs the new system’s activation script.
> but this `symlink' call will fail when the file already exists.
Indeed.
> And to put files to /etc, it's better to extend the `etc-service-type'.
Agreed.
However, it’s even better to avoid populating /etc altogether; ideally
/etc should contain only global configuration files, such as
nsswitch.conf.
Could you instead pass the configuration file via a command-line option
or environment variable?
> Oh, finally we get a modern display manager, thanks!
Seconded. Thank you!
Ludo’.
^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 9/9] gnu: Add weston.
2016-09-01 15:57 [PATCH 1/9] system: vm: Remove -net user flag David Craven
` (6 preceding siblings ...)
2016-09-01 15:57 ` [PATCH 8/9] services: Add sddm service David Craven
@ 2016-09-01 15:57 ` David Craven
2016-09-01 16:00 ` David Craven
` (2 more replies)
2016-09-02 11:19 ` [PATCH 1/9] system: vm: Remove -net user flag ng0
2016-09-02 15:37 ` Leo Famulari
9 siblings, 3 replies; 47+ messages in thread
From: David Craven @ 2016-09-01 15:57 UTC (permalink / raw)
To: guix-devel
* gnu/packages/wayland.scm (weston): New file.
* gnu/local.mk (GNU_PACKAGE_MODULES): Add it.
---
gnu/local.mk | 1 +
gnu/packages/wayland.scm | 130 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 131 insertions(+)
create mode 100644 gnu/packages/wayland.scm
diff --git a/gnu/local.mk b/gnu/local.mk
index 61287fd..898b2d7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -356,6 +356,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/vpn.scm \
%D%/packages/vtk.scm \
%D%/packages/w3m.scm \
+ %D%/packages/wayland.scm \
%D%/packages/wdiff.scm \
%D%/packages/web.scm \
%D%/packages/webkit.scm \
diff --git a/gnu/packages/wayland.scm b/gnu/packages/wayland.scm
new file mode 100644
index 0000000..0124d1b
--- /dev/null
+++ b/gnu/packages/wayland.scm
@@ -0,0 +1,130 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 David Craven <david@craven.ch>
+;;;
+;;; 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 packages wayland)
+ #:use-module (gnu packages freedesktop) ; xwayland
+ #:use-module (gnu packages gl) ; cairo-xcb
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gtk) ; cairo-xcb
+ #:use-module (gnu packages libunwind)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xorg) ; xwayland
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix utils))
+
+(define-public cairo-xcb
+ (package
+ (inherit cairo)
+ (name "cairo-xcb")
+ (inputs
+ `(("mesa" ,mesa)
+ ,@(package-inputs cairo)))
+ (arguments
+ `(#:tests? #f
+ #:configure-flags
+ '("--enable-xlib-xcb" "--enable-gl" "--enable-egl")))))
+
+(define-public xwayland
+ (package
+ (inherit xorg-server)
+ (name "xwayland")
+ (inputs
+ `(("libepoxy" ,libepoxy)
+ ("wayland" ,wayland)
+ ,@(package-inputs xorg-server)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments xorg-server)
+ ((#:configure-flags flags)
+ `(cons* "--enable-xwayland" "--disable-xorg"
+ "--disable-docs" "--disable-devel-docs"
+ "--disable-xvfb" "--disable-xnest"
+ "--disable-xquartz" "--disable-xwin"
+ ,flags))))))
+
+(define-public weston
+ (package
+ (name "weston")
+ (version "1.11.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://wayland.freedesktop.org/releases/"
+ "weston-" version ".tar.xz"))
+ (sha256
+ (base32
+ "09biddxw3ar797kxf9mywjkb2iwky6my39gpp51ni846y7lqdq05"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("xorg-server" ,xorg-server)))
+ (inputs
+ `(("cairo" ,cairo-xcb)
+ ("dbus" ,dbus)
+ ("elogind" ,elogind)
+ ("libinput" ,libinput-minimal)
+ ("libunwind" ,libunwind)
+ ("libxcursor" ,libxcursor)
+ ("libxkbcommon" ,libxkbcommon)
+ ("mesa" ,mesa)
+ ("mtdev" ,mtdev)
+ ("linux-pam" ,linux-pam)
+ ("wayland" ,wayland)
+ ("wayland-protocols" ,wayland-protocols)
+ ("xwayland" ,xwayland)))
+ (arguments
+ `(#:configure-flags
+ (list "--disable-setuid-install"
+ "--enable-systemd-login"
+ (string-append "--with-xserver-path="
+ (assoc-ref %build-inputs "xwayland") "/bin/Xwayland"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'use-elogind
+ (lambda _
+ ;; Use elogind instead of systemd
+ (substitute* "configure"
+ (("libsystemd-login >= 198") "libelogind"))
+ (substitute* '("src/launcher-logind.c" "src/weston-launch.c")
+ (("#include <systemd/sd-login.h>")
+ "#include <elogind/sd-login.h>"))))
+ (add-after 'configure 'patch-confdefs.h
+ (lambda _
+ (system "echo \"#define HAVE_SYSTEMD_LOGIN_209 1\" >> confdefs.h")))
+ (add-before 'check 'setup
+ (lambda _
+ (setenv "HOME" (getcwd))
+ (setenv "XDG_RUNTIME_DIR" (getcwd))
+ #t))
+ (add-before 'check 'start-xorg-server
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; The test suite requires a running X server.
+ (system (string-append (assoc-ref inputs "xorg-server")
+ "/bin/Xvfb :1 &"))
+ (setenv "DISPLAY" ":1")
+ #t)))))
+ (home-page "https://wayland.freedesktop.org")
+ (synopsis "Reference implementation of a Wayland compositor")
+ (description "Weston is the reference implementation of a Wayland
+compositor, and a useful compositor in its own right.")
+ (license license:expat)))
--
2.9.0
^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 9/9] gnu: Add weston.
2016-09-01 15:57 ` [PATCH 9/9] gnu: Add weston David Craven
@ 2016-09-01 16:00 ` David Craven
2016-09-03 13:29 ` Ludovic Courtès
2016-09-07 6:45 ` Mark H Weaver
2 siblings, 0 replies; 47+ messages in thread
From: David Craven @ 2016-09-01 16:00 UTC (permalink / raw)
To: guix-devel
Should maybe go in a different file, created wayland.scm for now
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 9/9] gnu: Add weston.
2016-09-01 15:57 ` [PATCH 9/9] gnu: Add weston David Craven
2016-09-01 16:00 ` David Craven
@ 2016-09-03 13:29 ` Ludovic Courtès
2016-09-04 14:01 ` David Craven
2016-09-07 6:45 ` Mark H Weaver
2 siblings, 1 reply; 47+ messages in thread
From: Ludovic Courtès @ 2016-09-03 13:29 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
David Craven <david@craven.ch> skribis:
> * gnu/packages/wayland.scm (weston): New file.
> * gnu/local.mk (GNU_PACKAGE_MODULES): Add it.
[...]
> +(define-public cairo-xcb
> + (package
> + (inherit cairo)
> + (name "cairo-xcb")
> + (inputs
> + `(("mesa" ,mesa)
> + ,@(package-inputs cairo)))
> + (arguments
> + `(#:tests? #f
> + #:configure-flags
> + '("--enable-xlib-xcb" "--enable-gl" "--enable-egl")))))
Probably this should be kept next to ‘cairo’, and added as a separate
patch. Also please change the synopsis to something like “2D graphics
library (with X11 support)”.
> +(define-public xwayland
> + (package
> + (inherit xorg-server)
> + (name "xwayland")
Should it be “xorg-server-xwayland”, since fundamentally it’s still the
“xorg-server” source?
> + (inputs
> + `(("libepoxy" ,libepoxy)
> + ("wayland" ,wayland)
> + ,@(package-inputs xorg-server)))
> + (arguments
> + (substitute-keyword-arguments (package-arguments xorg-server)
> + ((#:configure-flags flags)
> + `(cons* "--enable-xwayland" "--disable-xorg"
> + "--disable-docs" "--disable-devel-docs"
> + "--disable-xvfb" "--disable-xnest"
> + "--disable-xquartz" "--disable-xwin"
> + ,flags))))))
Please add a synopsis (as above).
> +(define-public weston
> + (package
> + (name "weston")
> + (version "1.11.0")
[...]
> + (synopsis "Reference implementation of a Wayland compositor")
What about “Reference Wayland graphical display server”?
> + (description "Weston is the reference implementation of a Wayland
> +compositor, and a useful compositor in its own right.")
Maybe add a sentence about what a Wayland compositor does.
Also I think people will prefer one patch per package. :-)
Thank you!
Ludo’.
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 9/9] gnu: Add weston.
2016-09-03 13:29 ` Ludovic Courtès
@ 2016-09-04 14:01 ` David Craven
2016-09-05 21:15 ` Ludovic Courtès
0 siblings, 1 reply; 47+ messages in thread
From: David Craven @ 2016-09-04 14:01 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel
Is this ok as a description? I don't think the term display server is
commonly used for wayland compositors, so I left the synopsis.
(description "Weston is the reference implementation of a Wayland
compositor, and a useful compositor in its own right.
A Wayland compositor allows applications to render to a shared offscreen
buffer using opengles. The compositor then culls the hidden parts and
composes the final output. A Wayland compositor is essentially a
multiplexer to the KMS/DRM kernel devices.")
I renamed xwayland to xorg-server-xwayland and added cairo-xcb to
gtk.scm, xorg-server-xwayland to xorg.scm and weston to
freedesktop.scm.
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 9/9] gnu: Add weston.
2016-09-04 14:01 ` David Craven
@ 2016-09-05 21:15 ` Ludovic Courtès
2016-09-06 16:03 ` David Craven
0 siblings, 1 reply; 47+ messages in thread
From: Ludovic Courtès @ 2016-09-05 21:15 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
David Craven <david@craven.ch> skribis:
> Is this ok as a description? I don't think the term display server is
> commonly used for wayland compositors, so I left the synopsis.
>
> (description "Weston is the reference implementation of a Wayland
> compositor, and a useful compositor in its own right.
>
> A Wayland compositor allows applications to render to a shared offscreen
> buffer using opengles. The compositor then culls the hidden parts and
> composes the final output. A Wayland compositor is essentially a
> multiplexer to the KMS/DRM kernel devices.")
s/opengles/OpenGL ES/ and s/kernel/Linux kernel/ but otherwise it’s
perfect, thanks! :-)
> I renamed xwayland to xorg-server-xwayland and added cairo-xcb to
> gtk.scm, xorg-server-xwayland to xorg.scm and weston to
> freedesktop.scm.
OK!
Ludo’.
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 9/9] gnu: Add weston.
2016-09-01 15:57 ` [PATCH 9/9] gnu: Add weston David Craven
2016-09-01 16:00 ` David Craven
2016-09-03 13:29 ` Ludovic Courtès
@ 2016-09-07 6:45 ` Mark H Weaver
2016-09-07 7:08 ` David Craven
2 siblings, 1 reply; 47+ messages in thread
From: Mark H Weaver @ 2016-09-07 6:45 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
David Craven <david@craven.ch> writes:
> * gnu/packages/wayland.scm (weston): New file.
> * gnu/local.mk (GNU_PACKAGE_MODULES): Add it.
This failed to build on hydra:
https://hydra.gnu.org/build/1467506 (x86_64)
https://hydra.gnu.org/build/1467476 (i686)
https://hydra.gnu.org/build/1467551 (mips64el)
It fails in ./configure, with the following error:
configure: error: Package requirements (egl glesv2 wayland-client wayland-egl) were not met:
No package 'wayland-egl' found
Did you test this?
Mark
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 1/9] system: vm: Remove -net user flag.
2016-09-01 15:57 [PATCH 1/9] system: vm: Remove -net user flag David Craven
` (7 preceding siblings ...)
2016-09-01 15:57 ` [PATCH 9/9] gnu: Add weston David Craven
@ 2016-09-02 11:19 ` ng0
2016-09-02 12:24 ` David Craven
2016-09-02 15:37 ` Leo Famulari
9 siblings, 1 reply; 47+ messages in thread
From: ng0 @ 2016-09-02 11:19 UTC (permalink / raw)
To: David Craven, guix-devel
David Craven <david@craven.ch> writes:
> * gnu/system/vm.scm (common-qemu-options): Remove -net user flag.
> ---
> gnu/system/vm.scm | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
> index c31e3a8..551c3ca 100644
> --- a/gnu/system/vm.scm
> +++ b/gnu/system/vm.scm
> @@ -462,7 +462,6 @@ with '-virtfs' options for the host file systems listed in SHARED-FS."
> "")
> " -no-reboot -net nic,model=virtio \
> " #$@(map virtfs-option shared-fs) " \
> - -net user \
Why would you remove this?
I'd rather still have it, or extend it, maybe through an addition config
for guix system vm.. like:
guix system vm --with-net --with-forward 20:2222
would create a vm with -net user and the appropriate line to forward
port 20 of vm to port 2222 of host
and "guix system vm --without-net" could create one without?
> -vga std \
> -drive file=" #$image
> ",if=virtio,cache=writeback,werror=report,readonly \
> --
> 2.9.0
>
--
ng0
For non-prism friendly talk find me on http://www.psyced.org
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 1/9] system: vm: Remove -net user flag.
2016-09-02 11:19 ` [PATCH 1/9] system: vm: Remove -net user flag ng0
@ 2016-09-02 12:24 ` David Craven
2016-09-02 12:58 ` ng0
2016-09-03 13:39 ` Ludovic Courtès
0 siblings, 2 replies; 47+ messages in thread
From: David Craven @ 2016-09-02 12:24 UTC (permalink / raw)
To: ng0; +Cc: guix-devel
You can add custom qemu flags by running $(guix system vm *.scm) -net
user. As it is now there is no way to remove it, and I've said
multiple times that it causes networking difficulties. Adding it isn't
a problem. I think that the default qemu flags should be the minimum
common denominator, and not include anything that could cause problems
in a different setup.
Your suggestions for new guix system vm flags are additional code that
has to be maintained. I don't think we need them. Besides are you
offering to implement them? Because I'm not ;-)
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 1/9] system: vm: Remove -net user flag.
2016-09-02 12:24 ` David Craven
@ 2016-09-02 12:58 ` ng0
2016-09-02 13:00 ` David Craven
2016-09-03 13:39 ` Ludovic Courtès
1 sibling, 1 reply; 47+ messages in thread
From: ng0 @ 2016-09-02 12:58 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
David Craven <david@craven.ch> writes:
> You can add custom qemu flags by running $(guix system vm *.scm) -net
> user. As it is now there is no way to remove it, and I've said
> multiple times that it causes networking difficulties. Adding it isn't
> a problem. I think that the default qemu flags should be the minimum
> common denominator, and not include anything that could cause problems
> in a different setup.
I agree, if it is a problem it should be removed.
Okay, is this documented that one can add qemu options after the
file.scm? `guix system vm --help' doesn't show it, I haven't looked at
documentation.
> Your suggestions for new guix system vm flags are additional code that
> has to be maintained. I don't think we need them. Besides are you
> offering to implement them? Because I'm not ;-)
I don't have the time to test and debug this in addition to what I do
and my knowledge of qemu is limited, so no.
--
ng0
For non-prism friendly talk find me on http://www.psyced.org
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 1/9] system: vm: Remove -net user flag.
2016-09-02 12:58 ` ng0
@ 2016-09-02 13:00 ` David Craven
0 siblings, 0 replies; 47+ messages in thread
From: David Craven @ 2016-09-02 13:00 UTC (permalink / raw)
To: ng0; +Cc: guix-devel
> I agree, if it is a problem it should be removed.
> Okay, is this documented that one can add qemu options after the
> file.scm? `guix system vm --help' doesn't show it, I haven't looked at
> documentation.
It's not a feature of guix system vm but of the qemu script.
$(guix system vm) evaluates to the qemu-run script then we are passing
the additional qemu flag to the script.
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 1/9] system: vm: Remove -net user flag.
2016-09-02 12:24 ` David Craven
2016-09-02 12:58 ` ng0
@ 2016-09-03 13:39 ` Ludovic Courtès
2016-09-03 13:44 ` David Craven
1 sibling, 1 reply; 47+ messages in thread
From: Ludovic Courtès @ 2016-09-03 13:39 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
Hi,
David Craven <david@craven.ch> skribis:
> You can add custom qemu flags by running $(guix system vm *.scm) -net
> user. As it is now there is no way to remove it, and I've said
> multiple times that it causes networking difficulties. Adding it isn't
> a problem. I think that the default qemu flags should be the minimum
> common denominator, and not include anything that could cause problems
> in a different setup.
I sympathize with this; what problems are you referring to?
The reason for “-net user” is that it allows me to run “dhclient -v
eth0” in the VM and get access to the network, which is often what I
want.
Now I don’t feel strongly about it, and indeed, I can always add “-net
user” on the command line.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 1/9] system: vm: Remove -net user flag.
2016-09-03 13:39 ` Ludovic Courtès
@ 2016-09-03 13:44 ` David Craven
2016-09-05 8:41 ` Ludovic Courtès
0 siblings, 1 reply; 47+ messages in thread
From: David Craven @ 2016-09-03 13:44 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel
> I sympathize with this; what problems are you referring to?
>
> The reason for “-net user” is that it allows me to run “dhclient -v
> eth0” in the VM and get access to the network, which is often what I
> want.
I usually have the need to add my own flags most of the time anyway.
This is the script I usually use - the line marked > doesn't take
effect when a -net user flag was already provided:
$($HOME/guix/pre-inst-env guix system vm server-configuration.scm) \
> -net user,hostfwd=tcp::10022-:22 \
-vga virtio \
-device virtio-rng-pci,bus=pci.0,addr=0x10 \
-spice port=5930,disable-ticketing \
-device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x5
\
-chardev spicevmc,name=vdagent,id=vdagent \
-device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent,name=com.redhat.spice.0>
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 1/9] system: vm: Remove -net user flag.
2016-09-03 13:44 ` David Craven
@ 2016-09-05 8:41 ` Ludovic Courtès
0 siblings, 0 replies; 47+ messages in thread
From: Ludovic Courtès @ 2016-09-05 8:41 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
David Craven <david@craven.ch> skribis:
>> I sympathize with this; what problems are you referring to?
>>
>> The reason for “-net user” is that it allows me to run “dhclient -v
>> eth0” in the VM and get access to the network, which is often what I
>> want.
>
> I usually have the need to add my own flags most of the time anyway.
>
> This is the script I usually use - the line marked > doesn't take
> effect when a -net user flag was already provided:
>
> $($HOME/guix/pre-inst-env guix system vm server-configuration.scm) \
>> -net user,hostfwd=tcp::10022-:22 \
I see, thanks for explaining.
OK for this patch!
Ludo’.
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 1/9] system: vm: Remove -net user flag.
2016-09-01 15:57 [PATCH 1/9] system: vm: Remove -net user flag David Craven
` (8 preceding siblings ...)
2016-09-02 11:19 ` [PATCH 1/9] system: vm: Remove -net user flag ng0
@ 2016-09-02 15:37 ` Leo Famulari
9 siblings, 0 replies; 47+ messages in thread
From: Leo Famulari @ 2016-09-02 15:37 UTC (permalink / raw)
To: David Craven; +Cc: guix-devel
On Thu, Sep 01, 2016 at 05:57:03PM +0200, David Craven wrote:
> * gnu/system/vm.scm (common-qemu-options): Remove -net user flag.
Can the VM still "dial out" with this change?
^ permalink raw reply [flat|nested] 47+ messages in thread