summaryrefslogtreecommitdiff
path: root/gnu/system/shadow.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/system/shadow.scm')
-rw-r--r--gnu/system/shadow.scm117
1 files changed, 84 insertions, 33 deletions
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 47f19551b6..d9f13271d8 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -64,6 +64,13 @@
user-group-system?)
#:export (%default-bashrc
+ %default-bash-profile
+ %default-zprofile
+ %default-xdefaults
+ %default-gdbinit
+ %default-nanorc
+ %default-dotguile
+ %default-skeleton-home-config
default-skeletons
skeleton-directory
%base-groups
@@ -147,11 +154,8 @@ alias ll='ls -l'
alias grep='grep --color=auto'
alias ip='ip -color=auto'\n"))
-(define (default-skeletons)
- "Return the default skeleton files for /etc/skel. These files are copied by
-'useradd' in the home directory of newly created user accounts."
-
- (let ((profile (plain-file "bash_profile" "\
+(define %default-bash-profile
+ (plain-file "bash_profile" "\
# Set up Guix Home profile
if [ -f ~/.profile ]; then . ~/.profile; fi
@@ -161,31 +165,30 @@ if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
# Merge search-paths from multiple profiles, the order matters.
eval \"$(guix package --search-paths \\
-p $HOME/.config/guix/current \\
+-p $HOME/.guix-home/profile \\
-p $HOME/.guix-profile \\
-p /run/current-system/profile)\"
# Prepend setuid programs.
export PATH=/run/setuid-programs:$PATH
"))
- (bashrc %default-bashrc)
- (zprofile (plain-file "zprofile" "\
-# Honor system-wide environment variables
-source /etc/profile
-
-# Merge search-paths from multiple profiles, the order matters.
-eval \"$(guix package --search-paths \\
--p $HOME/.config/guix/current \\
--p $HOME/.guix-profile \\
--p /run/current-system/profile)\"
-# Prepend setuid programs.
-export PATH=/run/setuid-programs:$PATH
+(define %default-zprofile
+ (plain-file "zprofile" "\
+# Set up the system, user profile, and related variables.
+source /etc/profile
+# Set up the home environment profile.
+source ~/.profile
"))
- (xdefaults (plain-file "Xdefaults" "\
+
+(define %default-xdefaults
+ (plain-file "Xdefaults" "\
XTerm*utf8: always
XTerm*metaSendsEscape: true\n"))
- (gdbinit (plain-file "gdbinit" "\
-# Tell GDB where to look for separate debugging files.
+
+(define %default-gdbinit
+ (plain-file "gdbinit"
+ "# Tell GDB where to look for separate debugging files.
guile
(use-modules (gdb))
(execute (string-append \"set debug-file-directory \"
@@ -203,19 +206,16 @@ end
# Authorize extensions found in the store, such as the
# pretty-printers of libstdc++.
-set auto-load safe-path /gnu/store/*/lib\n")))
- `((".bash_profile" ,profile)
- (".bashrc" ,bashrc)
- ;; Zsh sources ~/.zprofile before ~/.zshrc, and it sources ~/.zlogin
- ;; after ~/.zshrc. To avoid interfering with any customizations a user
- ;; may have made in their ~/.zshrc, put this in .zprofile, not .zlogin.
- (".zprofile" ,zprofile)
- (".nanorc" ,(plain-file "nanorc" "\
-# Include all the syntax highlighting modules.
+set auto-load safe-path /gnu/store/*/lib\n"))
+
+(define %default-nanorc
+ (plain-file "nanorc"
+ "# Include all the syntax highlighting modules.
include /run/current-system/profile/share/nano/*.nanorc\n"))
- (".Xdefaults" ,xdefaults)
- (".guile" ,(plain-file "dot-guile"
- "(cond ((false-if-exception (resolve-interface '(ice-9 readline)))
+
+(define %default-dotguile
+ (plain-file "dot-guile"
+ "(cond ((false-if-exception (resolve-interface '(ice-9 readline)))
=>
(lambda (module)
;; Enable completion and input history at the REPL.
@@ -233,7 +233,58 @@ convenient interactive line editing and input history.\\n\\n\")))
(else
(display \"Consider installing the 'guile-colorized' package
for a colorful Guile experience.\\n\\n\"))))\n"))
- (".gdbinit" ,gdbinit))))
+
+(define %default-skeleton-home-config
+ (plain-file "default-home-config" "\
+;; This is a sample Guix Home configuration which can help setup your
+;; home directory in the same declarative manner as Guix System.
+;; For more information, see the Home Configuration section of the manual.
+(define-module (guix-home-config)
+ #:use-module (gnu home)
+ #:use-module (gnu home services)
+ #:use-module (gnu home services shells)
+ #:use-module (gnu services)
+ #:use-module (gnu system shadow))
+
+(define home-config
+ (home-environment
+ (services
+ (list
+ ;; Uncomment the shell you wish to use for your user:
+ ;(service home-bash-service-type)
+ ;(service home-fish-service-type)
+ ;(service home-zsh-service-type)
+
+ (service home-files-service-type
+ `((\".guile\" ,%default-dotguile)
+ (\".Xdefaults\" ,%default-xdefaults)))
+
+ (service home-xdg-configuration-files-service-type
+ `((\"gdb/gdbinit\" ,%default-gdbinit)
+ (\"nano/nanorc\" ,%default-nanorc)))))))
+
+home-config"))
+
+(define (default-skeletons)
+ "Return the default skeleton files for /etc/skel. These files are copied by
+'useradd' in the home directory of newly created user accounts."
+
+ (let ((profile %default-bash-profile)
+ (bashrc %default-bashrc)
+ (zprofile %default-zprofile)
+ (xdefaults %default-xdefaults)
+ (gdbinit %default-gdbinit))
+ `((".bash_profile" ,profile)
+ (".bashrc" ,bashrc)
+ ;; Zsh sources ~/.zprofile before ~/.zshrc, and it sources ~/.zlogin
+ ;; after ~/.zshrc. To avoid interfering with any customizations a user
+ ;; may have made in their ~/.zshrc, put this in .zprofile, not .zlogin.
+ (".zprofile" ,zprofile)
+ (".nanorc" ,%default-nanorc)
+ (".Xdefaults" ,xdefaults)
+ (".guile" ,%default-dotguile)
+ (".gdbinit" ,gdbinit)
+ ("guix-home-config.scm" ,%default-skeleton-home-config))))
(define (skeleton-directory skeletons)
"Return a directory containing SKELETONS, a list of name/derivation tuples."