home: Add home.scm.

Julien LepillerTue Jun 11 20:20:37+0200 2019

bc94fdd

home: Add home.scm. * home.scm: New file.

home.scm unknown status 1

1+
;;; Guix Home Manager.
2+
;;;
3+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
4+
;;;
5+
;;; This program is free software: you can redistribute it and/or modify
6+
;;; it under the terms of the GNU General Public License as published by
7+
;;; the Free Software Foundation, either version 3 of the License, or
8+
;;; (at your option) any later version.
9+
;;;
10+
;;; This program is distributed in the hope that it will be useful,
11+
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13+
;;; GNU General Public License for more details.
14+
;;;
15+
;;; You should have received a copy of the GNU General Public License
16+
;;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
17+
18+
(define-module (home)
19+
  #:use-module (guix build union)
20+
  #:use-module (guix build utils)
21+
  #:use-module (guix build-system trivial)
22+
  #:use-module (guix gexp)
23+
  #:use-module (guix licenses)
24+
  #:use-module (guix packages)
25+
  #:use-module (home build utils)
26+
  #:export (home
27+
            use-home-modules))
28+
29+
(define-syntax use-home-modules
30+
  (syntax-rules ()
31+
    ((_ modules ...)
32+
     (use-modules (home modules) ...))))
33+
34+
(define* (home basedir inputs #:key
35+
               (guix-symlink (string-append basedir "/.guix-profile"))
36+
               (guix-config-symlink (string-append basedir "/.config/guix"))
37+
               (local-symlink (string-append basedir "/.local"))
38+
               (cache-symlink (string-append basedir "/.cache")))
39+
  (define union
40+
    (computed-file "home"
41+
      #~(begin
42+
          (use-modules (guix build union))
43+
          (union-build #$output '#$inputs))
44+
      #:options
45+
      '(#:local-build? #t
46+
        #:modules ((guix build union)))))
47+
  (package
48+
    (name "tyreunom-home")
49+
    (version "0")
50+
    (source #f)
51+
    (build-system trivial-build-system)
52+
    (arguments
53+
     `(#:modules ((guix build utils) (home build utils))
54+
       #:builder
55+
       (begin
56+
         (use-modules (guix build utils) (home build utils))
57+
         (mkdir-p (home-file %outputs ".config"))
58+
         ;; For guix
59+
         (symlink ,guix-config-symlink (home-file %outputs ".config/guix"))
60+
         (symlink ,guix-symlink (home-file %outputs ".guix-profile"))
61+
         ;; symlink writeable directories
62+
         (symlink ,local-symlink (home-file %outputs ".local"))
63+
         (symlink ,cache-symlink (home-file %outputs ".cache"))
64+
         ;; rest of the files
65+
         (with-directory-excursion (assoc-ref %build-inputs "union")
66+
         (for-each
67+
           (lambda (f)
68+
             (mkdir-p (home-file %outputs (dirname f)))
69+
             (symlink (string-append (assoc-ref %build-inputs "union") "/" f)
70+
                      (home-file %outputs f)))
71+
           (find-files "." ".*"))))))
72+
    (inputs
73+
     `(("union" ,union)))
74+
    (home-page "")
75+
    (synopsis "")
76+
    (description "")
77+
    (license gpl3+)))
77<
078<
\ No newline at end of file