aboutsummaryrefslogtreecommitdiff
path: root/gnu/installer/user.scm
blob: 4e701e64ce3efa25d018c827b4a6203149186b3b (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; 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 installer user)
  #:use-module (guix records)
  #:use-module (srfi srfi-1)
  #:export (<user>
            user
            make-user
            user-name
            user-real-name
            user-group
            user-home-directory
            user-password

            users->configuration))

(define-record-type* <user>
  user make-user
  user?
  (name            user-name)
  (real-name       user-real-name
                   (default ""))
  (group           user-group
                   (default "users"))
  (password        user-password)
  (home-directory  user-home-directory))

(define (users->configuration users)
  "Return the configuration field for USERS."
  (define (user->sexp user)
    `(user-account
      (name ,(user-name user))
      (comment ,(user-real-name user))
      (group ,(user-group user))
      (home-directory ,(user-home-directory user))
      (supplementary-groups '("wheel" "netdev"
                              "audio" "video"))))

  `((users (cons*
            ,@(filter-map (lambda (user)
                            ;; Do not emit a 'user-account' form for "root".
                            (and (not (string=? (user-name user) "root"))
                                 (user->sexp user)))
                          users)
            %base-user-accounts))))
: Likewise. No swap partition when installing the Hurd. * gnu/installer/final.scm (install-system): Cater for cross installation of the Hurd. (bootloader-configuration): Use `grub-minimal-bootloader' when installing the Hurd. (user-partition-missing-modules): Cater for empty user-partitions. (initrd-configuration, user-partitions->configuration): Cater for the Hurd. * gnu/installer/steps.scm (format-configuration, configuration->file): Cater for the Hurd. * gnu/system/hurd.scm (%desktop-services/hurd): New variable. * gnu/installer/tests.scm (choose-kernel): New procedure. * gnu/tests/install.scm (gui-test-program): Use it. Change-Id: Ifafb27b8a2f933944c77223a27ec151757237e36 Janneke Nieuwenhuizen 2024-11-11system: examples: Add devel-hurd.tmpl....This operating system specification for the Hurd creates a system that supports building the guix package from git natively. Do something like ./pre-inst-env guix system build --target=i586-pc-gnu \ gnu/system/examples/devel-hurd.tmpl ./pre-inst-env guix system image --image-type=hurd-qcow2 --image-size=15G \ --no-offload gnu/system/examples/devel-hurd.tmpl cp /gnu/store/...disk-image devel.img guix shell qemu -- qemu-system-i386 -enable-kvm -m 4096 \ -device rtl8139,netdev=net0 \ -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \ -hda devel-hurd.img ssh -p 10022 root@localhost GUIX_PROFILE=/run/current-system/bootstrap-profile source $GUIX_PROFILE/etc/profile mkdir -p ~/src/guix cd src/guix git clone git://git.savannah.gnu.org/guix cd guix ./bootstrap ./configure --with-courage make * gnu/system/examples/devel-hurd.tmpl: New file. Change-Id: I097c7c00a9ab9602db7f8f3305827c815f308d1e Janneke Nieuwenhuizen 2024-11-11system: hurd: Remove qemu networking from %base-services/hurd....This allows us to use %base-services/hurd for services in a Hurd config for a real machine without removing static-networking. * gnu/system/hurd.scm (%base-services/hurd): Factor networking out to... (%base-services+qemu-networking/hurd): ..this new variable. * gnu/system/examples/bare-hurd.tmpl (%hurd-os): Use it. * gnu/services/virtualization.scm (%hurd-vm-operating-system): Use it. * gnu/system/images/hurd.scm (hurd-barebones-os): Use it. Add comment about QEMU and networking for a real machine. Change-Id: I777a63410383b9bf8b5740e4513dbc1e9fb0fd41 Janneke Nieuwenhuizen 2024-10-14image: Add support for btrfs....* gnu/build/image.scm (make-btrfs-image): New variable. * gnu/system/image.scm (system-disk-image): Support btrfs. Change-Id: I80a5b52ec478ce5927d6208e324cbb70282c647a Signed-off-by: Ludovic Courtès <ludo@gnu.org> Roman Scherer 2024-09-08images: wsl2: Update comment....* gnu/system/images/wsl2.scm (wsl-boot-program): Update privileged program directory in a comment. Change-Id: I65906cbfbcd17ff164837ad293dc4324314bfcf1 Tobias Geerinckx-Rice 2024-09-08privilege: Add file-like->setuid-program helper....* gnu/system/privilege.scm (file-like->setuid-program): New public procedure. * gnu/system/setuid.scm: Re-export it for compatibility. (file-like->setuid-program): Remove this old version. * gnu/services/docker.scm (singularity-setuid-programs): Use it (again). * gnu/services/desktop.scm (enlightenment-privileged-programs): Likewise. Change-Id: I8e41144438677a15cdadb3063651dbc780715497 Tobias Geerinckx-Rice 2024-09-01uuid: Add support for exFAT....We expect users to use the generic STRING->FAT-UUID procedure. This is consistent with how we already treat FAT32 vs FAT16. It is not consistent with how we export 8 different aliases for STRING->DCE-UUID, but I'm unconvinced that would be better. * gnu/system/uuid.scm (%uuid-parsers, %uuid-printers): Add the ‘exfat’ file system type. Change-Id: Ia31482716e4395f9f10f794f49fb31c9f330a2e3 Tobias Geerinckx-Rice 2024-09-09system: locale: ‘glibc-supported-locales’ uses zstd instead of xz....This is a followup to c9666c120b8e40321d6044f572533e160c1e0351. Fixes <https://issues.guix.gnu.org/73065>. * gnu/system/locale.scm (glibc-supported-locales): Change XZ to ZSTD. Change-Id: Ie3cb5d50648a0698ce5246591fb405e4eb690af5 Ludovic Courtès 2024-08-31gnu: %default-locale-libcs: Add glibc-2.35 and generalize for Hurd....* gnu/system/locale.scm (%default-locale-libcs): Stop checking for Hurd, since we have the same libc now. Also add glibc-2.35 while the transition happens. Change-Id: I1f4980d18184580f3a42a86ca244c8015df15269 Josselin Poiret 2024-08-19install: Set ‘privileged-programs’ rather than ‘setuid-programs’....* gnu/system/install.scm (installation-os)[setuid-programs]: Remove. [privileged-programs]: New field. Change-Id: I5c93f282f5ec790f13ac076e0ab0f6d59d92d59d Ludovic Courtès 2024-08-19system: hurd: Empty default ‘privileged-programs’ list....Fixes a bug whereby Hurd systems would find themselves including ‘%default-privileged-programs’ in addition to ‘%setuid-programs/hurd’. * gnu/system/hurd.scm (%hurd-default-operating-system)[privileged-programs]: New field. Change-Id: I5b6a55a8df7e6af697d22166e9f483f6dd816e64 Ludovic Courtès 2024-08-11privilege: Add POSIX capabilities(7) support....* gnu/system/privilege.scm (<privileged-program>): Add a field representing the program's POSIX capabilities. (privileged-program-capabilities): New public procedure. * doc/guix.texi (Privileged Programs): Document it. * gnu/build/activation.scm (activate-privileged-programs): Take a LIBCAP package argument providing setcap(8) to apply said capabilities. * gnu/services.scm (privileged-program->activation-gexp): Pass said package argument where supported. Include privileged-program-capabilities in the compatibility hack. Tobias Geerinckx-Rice 2024-08-11system: (gnu system setuid) wraps (gnu system privilege)....* gnu/system/setuid.scm (setuid-program): Rewrite as syntax to create a <privileged-program> record that is setuid by default. (setuid-program?, setuid-program-program, setuid-program-setuid?) (setuid-program-setgid?, setuid-program-user, setuid-program-group): Alias their privileged-program equivalent. Tobias Geerinckx-Rice 2024-08-11system: Add (gnu system privilege)....* gnu/system/privilege.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. Tobias Geerinckx-Rice