aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/vim.scm
blob: baf6ca91cf8fce06b799edca51e7c5d8b8c7c1de (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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 HiPhish <hiphish@posteo.de>
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019, 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
;;;
;;; 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 vim)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (guix utils)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix build-system cmake)
  #:use-module (guix build-system copy)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system python)
  #:use-module (gnu packages)
  #:use-module (gnu packages acl)
  #:use-module (gnu packages admin) ; For GNU hostname
  #:use-module (gnu packages attr)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages base)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages gawk)
  #:use-module (gnu packages gettext)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages gperf)
  #:use-module (gnu packages groff)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages image)
  #:use-module (gnu packages jemalloc)
  #:use-module (gnu packages libevent)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages lua)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages python)
  #:use-module (gnu packages python-xyz)
  #:use-module (gnu packages ruby)
  #:use-module (gnu packages serialization)
  #:use-module (gnu packages shells)
  #:use-module (gnu packages tcl)
  #:use-module (gnu packages text-editors)
  #:use-module (gnu packages terminals)
  #:use-module (gnu packages xdisorg)
  #:use-module (gnu packages xorg))

(define-public vim
  (package
    (name "vim")
    (version "8.2.2067")
    (source (origin
             (method git-fetch)
             (uri (git-reference
                    (url "https://github.com/vim/vim")
                    (commit (string-append "v" version))))
             (file-name (git-file-name name version))
             (sha256
              (base32
               "02cd953h69k9klrcwi756namwg39ka7if9ccc399ihb1l5f3kr66"))))
    (build-system gnu-build-system)
    (arguments
     `(#:test-target "test"
       #:parallel-tests? #f
       #:phases
       (modify-phases %standard-phases
         (add-after 'configure 'patch-absolute-paths
           (lambda _
             (substitute* "runtime/tools/mve.awk"
               (("/usr/bin/nawk") (which "gawk")))
             (substitute* '("src/testdir/Makefile"
                            "src/testdir/test_normal.vim"
                            "src/testdir/test_popupwin.vim"
                            "src/testdir/test_system.vim"
                            "src/testdir/test_terminal.vim"
                            "src/testdir/test_terminal2.vim")
               (("/bin/sh") (which "sh")))
             (substitute* "src/testdir/test_autocmd.vim"
               (("/bin/kill") (which "kill")))
             #t))
         (add-before 'check 'set-environment-variables
           (lambda* (#:key inputs #:allow-other-keys)
             ;; One of the tests tests timezone-dependent functions.
             (setenv "TZDIR"
                     (string-append (assoc-ref inputs "tzdata")
                                    "/share/zoneinfo"))

             ;; Make sure the TERM environment variable is set for the tests
             (setenv "TERM" "xterm")
             #t))
         (add-before 'check 'skip-or-fix-failing-tests
           (lambda _
             ;; This test assumes that PID 1 is run as root and that the user
             ;; running the test suite does not have permission to kill(1, 0)
             ;; it.  This is not true in the build container, where both PID 1
             ;; and the test suite are run as the same user.  Skip the test.
             ;; An alternative fix would be to patch the PID used to a random
             ;; 32-bit value and hope it never shows up in the test environment.
             (substitute* "src/testdir/test_swap.vim"
               (("if !IsRoot\\(\\)") "if 0"))

             ;; These tests compares output against a golden ‘…/|b|i|n|/|s|h…’
             ;; literal.  We need to match that and substitute a similarly
             ;; ‘spliced’ path to ‘sh’ in the store, truncated to the last
             ;; 44 (spliced: 88) or so characters.
             ;; Two of the tests we simply skip instead of patching the screen dump.
             (substitute* "src/testdir/test_popupwin.vim"
               ((".*Test_popupwin_term_0[1|2].*") ""))
             ;; We replace the external program call (!) with a scroll-back (<)
             ;; symbol and blindly fix some other differences based on error output.
             (let ((splice (lambda (s separator)
                               (string-join (map string (string->list s))
                                            separator))))
               (substitute* "src/testdir/dumps/Test_terminal_from_cmd.dump"
                 (((splice "/bin/sh" "\\|"))
                  (splice (string-take-right (which "sh") 44) "|"))
                 (("^\\|!") "|<")
                 (("@37") ""))
               (substitute* '("src/testdir/dumps/Test_terminal_scrollback_1.dump"
                              "src/testdir/dumps/Test_terminal_scrollback_2.dump")
                 (((splice "/bin/sh" "\\|"))
                  (splice (string-take-right (which "sh") 61) "|"))
                 (("^\\|!") "|<")
                 ((" @55") " @1"))
               (substitute* '("src/testdir/dumps/Test_terminal_scrollback_3.dump"
                              "src/testdir/dumps/Test_popupwin_term_03.dump"
                              "src/testdir/dumps/Test_popupwin_term_04.dump")
                 (((splice "/bin/sh" "\\|"))
                  (splice (string-take-right (which "sh") 62) "|"))
                 (("^\\|!") "|<")
                 (("\\]\\| @56") "]| @1")))
             #t)))))
    (inputs
     `(("gawk" ,gawk)
       ("ncurses" ,ncurses)
       ("perl" ,perl)
       ("tcsh" ,tcsh)))                 ; For runtime/tools/vim32
    (native-inputs
     `(("libtool" ,libtool)

       ;; For tests.
       ("tzdata" ,tzdata-for-tests)))
    (home-page "https://www.vim.org/")
    (synopsis "Text editor based on vi")
    ;; The description shares language with the vim-full package. When making
    ;; changes, check if the other description also needs to be updated.
    (description
     "Vim is a highly configurable text editor built to enable efficient text
editing.  It is an improved version of the vi editor distributed with most UNIX
systems.

Vim is often called a \"programmer's editor,\" and so useful for programming
that many consider it an entire IDE.  It's not just for programmers, though.
Vim is perfect for all kinds of text editing, from composing email to editing
configuration files.")
    (license license:vim)))

(define-public xxd
  (package (inherit vim)
    (name "xxd")
    (arguments
     `(#:make-flags (list ,(string-append "CC=" (cc-for-target)))
       #:tests? #f ; there are none
       #:phases
       (modify-phases %standard-phases
         (delete 'configure)
         (add-after 'unpack 'chdir
           (lambda _
             (chdir "src/xxd")
             #t))
         (replace 'install
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
               (install-file "xxd" bin)
               #t))))))
    (inputs `())
    (native-inputs `())
    (synopsis "Hexdump utility from vim")
    (description "This package provides the Hexdump utility xxd that comes
with the editor vim.")))

(define-public vim-full
  (package
    ;; This package should share its source with Vim, but it doesn't
    ;; build reliably, and we want to keep Vim up to date due to the
    ;; frequency of important bug fixes.
    (inherit vim)
    (name "vim-full")
    (arguments
     `(#:configure-flags
       (list (string-append "--with-lua-prefix="
                            (assoc-ref %build-inputs "lua"))
             "--with-features=huge"
             "--enable-python3interp=yes"
             "--enable-perlinterp=yes"
             "--enable-rubyinterp=yes"
             "--enable-tclinterp=yes"
             "--enable-luainterp=yes"
             "--enable-cscope"
             "--enable-sniff"
             "--enable-multibyte"
             "--enable-xim"
             "--disable-selinux"
             "--enable-gui")
       ;; This flag fixes the following error:
       ;; .../libpython3.7m.a(pyexpat.o): undefined reference to symbol 'XML_FreeContentModel'
       ;; .../libexpat.so.1: error adding symbols: DSO missing from command line
       #:make-flags '("LDFLAGS=-lexpat")
       ,@(substitute-keyword-arguments (package-arguments vim)
           ((#:phases phases)
            `(modify-phases ,phases
               (add-before 'check 'start-xserver
                 (lambda* (#:key inputs #:allow-other-keys)
                   ;; Some tests require an X server, but does not start one.
                   (let ((xorg-server (assoc-ref inputs "xorg-server"))
                         (display ":1"))
                     (setenv "DISPLAY" display)
                     (zero? (system (string-append xorg-server "/bin/Xvfb "
                                                    display " &")))))))))))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("xorg-server" ,xorg-server-for-tests)
       ,@(package-native-inputs vim)))
    (inputs
     `(("acl" ,acl)
       ("atk" ,atk)
       ("attr" ,attr)
       ("cairo" ,cairo)
       ("fontconfig" ,fontconfig)
       ("freetype" ,freetype)
       ("gdk-pixbuf" ,gdk-pixbuf)
       ("gettext" ,gettext-minimal)
       ("glib" ,glib)
       ("gpm" ,gpm)
       ("gtk" ,gtk+-2)
       ("harfbuzz" ,harfbuzz)
       ("libice" ,libice)
       ("libpng" ,libpng)
       ("libsm" ,libsm)
       ("libx11" ,libx11)
       ("libxdmcp" ,libxdmcp)
       ("libxt" ,libxt)
       ("libxpm" ,libxpm)
       ("lua" ,lua)
       ("pango" ,pango)
       ("pixman" ,pixman)
       ("python-3" ,python)
       ("ruby" ,ruby)
       ("tcl" ,tcl)
       ,@(package-inputs vim)))
    ;; The description shares language with the vim package. When making
    ;; changes, check if the other description also needs to be updated.
    (description "Vim is a highly configurable text editor built to enable efficient text
editing.  It is an improved version of the vi editor distributed with most UNIX
systems.

Vim is often called a \"programmer's editor,\" and so useful for programming
that many consider it an entire IDE.  It's not just for programmers, though.
Vim is perfect for all kinds of text editing, from composing email to editing
configuration files.

This package provides a version of Vim with many optional features enabled.
It includes a graphical interface, @command{gvim}, and support for plugins
written in the Python 3, Perl, Ruby, Tcl, and Lua programming languages.")))

(define-public vim-neocomplete
  (package
    (name "vim-neocomplete")
    (version "2.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/Shougo/neocomplete.vim")
              (commit (string-append "ver." version))))
       (file-name (git-file-name name version))
       (sha256
        (base32
         "1h6sci5mhdfg6sjsjpi8l5li02hg858zcayiwl60y9j2gqnd18lv"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("autoload" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/")
         ("plugin" "share/vim/vimfiles/"))))
    (synopsis "Next generation completion framework for Vim")
    (description
     "@code{neocomplete}, an abbreviation of 'neo-completion with cache',
is a plugin for Vim.
It provides keyword completion system by maintaining a cache of keywords in
the current buffer.  Neocomplete can be customized easily and has many more
features than Vim's built-in completion.")
    (home-page "https://github.com/Shougo/neocomplete.vim/")
    (license license:expat)))

;; There are no release tarballs.
(define-public vim-neosnippet-snippets
  (let ((commit "8e2b1c0cab9ed9a832b3743dbb65e9966a64331a")
        (revision "1"))
    (package
      (name "vim-neosnippet-snippets")
      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/Shougo/neosnippet-snippets")
               (commit commit)))
         (file-name (string-append name "-" version "-checkout"))
         (sha256
          (base32
           "151wpvbj6jb9jdkbhj3b77f5sq7y328spvwfbqyj1y32rg4ifmc6"))))
      (build-system copy-build-system)
      (arguments
       '(#:install-plan
         '(("neosnippets" "share/vim/vimfiles/"))))
    (synopsis "Snippets for neosnippet")
    (description
     "@code{neosnippet-snippets} provides standard snippets for the Vim plugin
@code{neosnippet}.  Snippets are small templates for commonly used code that
you can fill in on the fly.")
    (home-page "https://github.com/Shougo/neosnippet-snippets")
    (license license:expat))))

;; The released tarball is too old for our Vim.
(define-public vim-neosnippet
  (let ((commit "1bd7e23c79b73da16eb0c9469b25c376d3594583")
        (revision "1"))
  (package
    (name "vim-neosnippet")
    (version (string-append "4.2-" revision "." (string-take commit 7)))
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/Shougo/neosnippet.vim/")
             (commit commit)))
       (file-name (string-append name "-" version "-checkout"))
       (sha256
        (base32
         "0k80syscmpnj38ks1fq02ds59g0r4jlg9ll7z4qc048mgi35alw5"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("autoload" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/")
         ("ftdetect" "share/vim/vimfiles/")
         ("ftplugin" "share/vim/vimfiles/")
         ("indent" "share/vim/vimfiles/")
         ("plugin" "share/vim/vimfiles/")
         ("rplugin" "share/vim/vimfiles/")
         ("syntax" "share/vim/vimfiles/"))))
    (synopsis "Snippet support for Vim")
    (description
     "@code{neosnippet}, is a plugin for Vim which adds snippet support to Vim.
Snippets are small templates for commonly used code that you can fill in on
the fly.  To use snippets can increase your productivity in Vim a lot.
The functionality of this plug-in is quite similar to plug-ins like
@code{snipMate.vim} or @code{snippetsEmu.vim}.  But since you can choose
snippets with the neocomplcache / neocomplete interface, you might have less
trouble using them, because you do not have to remember each snippet name.")
    (home-page "https://github.com/Shougo/neosnippet.vim/")
    (license license:expat))))

(define-public vim-scheme
  (let ((commit "93827987c10f2d5dc519166a761f219204926d5f")
        (revision "1"))
    (package
      (name "vim-scheme")
      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "http://git.foldling.org/vim-scheme.git")
               (commit commit)))
         (file-name (string-append name "-" version "-checkout"))
         (sha256
          (base32
           "1ynjr1109dxgj0lz261gmzz3wf5ap1m6j6hnvl3lcyv66a4y8pjv"))))
      (build-system copy-build-system)
      (arguments
       '(#:install-plan
         '(("after" "share/vim/vimfiles/")
           ("ftplugin" "share/vim/vimfiles/")
           ("syntax" "share/vim/vimfiles/"))))
      (synopsis "Scheme syntax for Vim")
      (description
       "@code{vim-scheme} provides Scheme support for Vim (R7RS and CHICKEN).")
      (home-page "https://foldling.org/git/vim-scheme.git/")
      (license license:public-domain))))

(define-public vim-luna
  (let ((commit "633619953dcf8577168e255230f96b05f28d6371")
        (revision "1"))
    (package
      (name "vim-luna")
      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/notpratheek/vim-luna")
               (commit commit)))
         (file-name (string-append name "-" version "-checkout"))
         (sha256
          (base32
           "0ka3qbhsh8lix1vyj4678j7dnchkd8khhirrnn3aylxxf8fpqyg8"))))
      (build-system copy-build-system)
      (arguments
       '(#:install-plan
         '(("colors" "share/vim/vimfiles/"))))
      (synopsis "Dark color theme for Vim")
      (description
       "@code{vim-luna} is a dark color theme for Vim.")
      (home-page "https://github.com/notpratheek/vim-luna")
      (license license:expat))))

;; There are no tarball releases.
(define-public vim-context-filetype
  (let ((commit "5e85f8cae26806f391aefe2661791a6de53bcea2")
        (revision "1"))
    (package
      (name "vim-context-filetype")
      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/Shougo/context_filetype.vim")
               (commit commit)))
         (file-name (string-append name "-" version "-checkout"))
         (sha256
          (base32
           "0alvrfhmd91zkd9h83s8wvgyq4iakcf6rybsyjd369qbgpcqky89"))))
      (build-system copy-build-system)
      (arguments
       '(#:install-plan
         '(("doc" "share/vim/vimfiles/")
           ("autoload" "share/vim/vimfiles/"))))
      (synopsis "Context filetype library for Vim")
      (description
       "@code{vim-context-filetype} is context filetype library for Vim script.")
      (home-page "https://github.com/Shougo/context_filetype.vim")
      (license license:expat)))) ; ??? check again

(define-public vim-fugitive
  (package
    (name "vim-fugitive")
    (version "3.2")
    (source
      (origin
        (method git-fetch)
        (uri (git-reference
               (url "https://github.com/tpope/vim-fugitive")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
          "1jbn5jxadccmcz01j94d0i1bp74cixr0fpxxf1h0aqdf1ljk3d7n"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("autoload" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/")
         ("ftdetect" "share/vim/vimfiles/")
         ("plugin" "share/vim/vimfiles/")
         ("syntax" "share/vim/vimfiles/"))))
    (home-page "https://github.com/tpope/vim-fugitive")
    (synopsis "Vim plugin to work with Git")
    (description "Vim-fugitive is a wrapper for Vim that complements the
command window, where you can stage and review your changes before the next
commit or run any Git arbitrary command.")
    (license license:vim))) ; distributed under the same license as vim

(define-public vim-airline
  (package
    (name "vim-airline")
    (version "0.11")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/vim-airline/vim-airline")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32
         "1aksmr73648pvyc75pfdz28k2d4ky52rn7xiwcv7lz87q3vqld7k"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("autoload" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/")
         ("plugin" "share/vim/vimfiles/"))))
    (synopsis "Statusline for Vim")
    (description
     "@code{vim-airline} is an extensible statusline for Vim.
It can be extended and costumized with themes, works with unicode fonts
and powerline symbols, etc.")
    (home-page "https://github.com/vim-airline/vim-airline")
    (license license:expat)))

;; There are no tarball releases.
(define-public vim-airline-themes
  (let ((commit "e6f233231b232b6027cde6aebeeb18d9138e5324")
        (revision "2"))
    (package
      (name "vim-airline-themes")
      (version (git-version "0.0.0" revision commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/vim-airline/vim-airline-themes")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32
           "1sb7nb7j7bz0pv1c9bgdy0smhr0jk2b1vbdv9yzghg5lrknpsbr6"))))
      (build-system copy-build-system)
      (arguments
       '(#:install-plan
         '(("autoload" "share/vim/vimfiles/")
           ("doc" "share/vim/vimfiles/")
           ("plugin" "share/vim/vimfiles/"))))
      (synopsis "Collection of themes for Vim-airline")
      (description
       "@code{vim-airline-themes} is a collection of themes for @code{vim-airline}.")
      (home-page "https://github.com/vim-airline/vim-airline-themes")
      (license license:expat))))

(define-public vim-syntastic
  (package
    (name "vim-syntastic")
    (version "3.10.0")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/vim-syntastic/syntastic")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0j91f72jaz1s6aw1hpjiz30vk2ds2aqd9gisk91grsldy6nz6hhz"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("autoload" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/")
         ("plugin" "share/vim/vimfiles/")
         ("syntax_checkers" "share/vim/vimfiles/"))))
    (synopsis "Syntax checking plugin for Vim")
    (description
     "Vim-syntastic is a syntax checking plugin for Vim.  It runs files through
external syntax checkers and displays any resulting errors to the user.  This
can be done on demand, or automatically as files are saved.  If syntax errors
are detected, the user is notified.")
    (home-page "https://github.com/vim-syntastic/syntastic")
    (license license:wtfpl2)))

(define-public editorconfig-vim
  (package
    (name "editorconfig-vim")
    (version "1.1.1")
    (source
      (origin
        (method git-fetch)
        (uri (git-reference
               (url "https://github.com/editorconfig/editorconfig-vim")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
          "0mp80bi2m56bb93szw87vy6q5s85yk9g91sl4pr51316rgdv5kkv"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("autoload" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/")
         ("plugin" "share/vim/vimfiles/"))))
    (home-page "https://editorconfig.org/")
    (synopsis "EditorConfig plugin for Vim")
    (description "EditorConfig makes it easy to maintain the correct coding
style when switching between different text editors and between different
projects.  The EditorConfig project maintains a file format and plugins for
various text editors which allow this file format to be read and used by those
editors.")
    (license license:bsd-2)))

(define-public neovim-syntastic
  (package
    (inherit vim-syntastic)
    (name "neovim-syntastic")
    (arguments
     '(#:install-plan
       '(("autoload" "share/nvim/site/")
         ("doc" "share/nvim/site/")
         ("plugin" "share/nvim/site/")
         ("syntax_checkers" "share/nvim/site/"))))
    (synopsis "Syntax checking plugin for Neovim")
    (description
     "Vim-syntastic is a syntax checking plugin for Neovim.  It runs files through
external syntax checkers and displays any resulting errors to the user.  This
can be done on demand, or automatically as files are saved.  If syntax errors
are detected, the user is notified.")))

(define-public neovim
  (package
    (name "neovim")
    (version "0.4.4")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/neovim/neovim")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "11zyj6jvkwas3n6w1ckj3pk6jf81z1g7ngg4smmwm7c27y2a6f2m"))))
    (build-system cmake-build-system)
    (arguments
     `(#:modules ((srfi srfi-26)
                  (guix build cmake-build-system)
                  (guix build utils))
       #:configure-flags '("-DPREFER_LUA:BOOL=YES")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-lua-paths
           (lambda* (#:key inputs #:allow-other-keys)
             (let* ((lua-version "5.1")
                    (lua-cpath-spec
                     (lambda (prefix)
                       (let ((path (string-append prefix "/lib/lua/" lua-version)))
                         (string-append path "/?.so;" path "/?/?.so"))))
                    (lua-path-spec
                     (lambda (prefix)
                       (let ((path (string-append prefix "/share/lua/" lua-version)))
                         (string-append path "/?.lua;" path "/?/?.lua"))))
                    (lua-inputs (map (cute assoc-ref %build-inputs <>)
                                     '("lua"
                                       "lua-luv"
                                       "lua-lpeg"
                                       "lua-bitop"
                                       "lua-libmpack"))))
               (setenv "LUA_PATH"
                       (string-join (map lua-path-spec lua-inputs) ";"))
               (setenv "LUA_CPATH"
                       (string-join (map lua-cpath-spec lua-inputs) ";"))
               #t)))
         (add-after 'unpack 'prevent-embedding-gcc-store-path
           (lambda _
             ;; nvim remembers its build options, including the compiler with
             ;; its complete path.  This adds gcc to the closure of nvim, which
             ;; doubles its size.  We remove the refirence here.
             (substitute* "cmake/GetCompileFlags.cmake"
               (("\\$\\{CMAKE_C_COMPILER\\}") "/gnu/store/.../bin/gcc"))
             #t)))))
    (inputs
     `(("libuv" ,libuv)
       ("msgpack" ,msgpack)
       ("libtermkey" ,libtermkey)
       ("libvterm" ,libvterm)
       ("unibilium" ,unibilium)
       ("jemalloc" ,jemalloc)
       ("libiconv" ,libiconv)
       ("lua" ,lua-5.1)
       ("lua-luv" ,lua5.1-luv)
       ("lua-lpeg" ,lua5.1-lpeg)
       ("lua-bitop" ,lua5.1-bitop)
       ("lua-libmpack" ,lua5.1-libmpack)))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("gettext" ,gettext-minimal)
       ("gperf" ,gperf)))
    (home-page "https://neovim.io")
    (synopsis "Fork of vim focused on extensibility and agility")
    (description "Neovim is a project that seeks to aggressively
refactor Vim in order to:

@itemize
@item Simplify maintenance and encourage contributions
@item Split the work between multiple developers
@item Enable advanced external UIs without modifications to the core
@item Improve extensibility with a new plugin architecture
@end itemize\n")
    ;; Neovim is licensed under the terms of the Apache 2.0 license,
    ;; except for parts that were contributed under the Vim license.
    (license (list license:asl2.0 license:vim))))

(define-public vifm
  (package
    (name "vifm")
    (version "0.11")
    (source
      (origin
        (method url-fetch)
        (uri (list
               (string-append "https://github.com/vifm/vifm/releases/download/v"
                              version "/vifm-" version ".tar.bz2")
               (string-append "https://sourceforge.net/projects/vifm/files/vifm/"
                              "vifm-" version ".tar.bz2")))
        (sha256
         (base32
          "0rqyd424y0g5b5basw2ybb60r9gar4f40d1xgzr3c2dsy4jpwvyh"))))
    (build-system gnu-build-system)
    (arguments
     '(#:configure-flags '("--disable-build-timestamp")
       #:phases
       (modify-phases %standard-phases
         (add-after 'patch-source-shebangs 'patch-test-shebangs
           (lambda _
             (substitute* (cons* "src/background.c"
                                 "src/cfg/config.c"
                                 (find-files "tests" "\\.c$"))
               (("/bin/sh") (which "sh"))
               (("/bin/bash") (which "bash")))
             ;; This test segfaults
             (substitute* "tests/Makefile"
               (("misc") ""))
             #t))
          (add-after 'install 'install-vim-plugin-files
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (vifm (string-append out "/share/vifm"))
                     (vimfiles (string-append out "/share/vim/vimfiles")))
                (copy-recursively (string-append vifm "/colors")
                                  (string-append vimfiles "/colors"))
                (copy-recursively (string-append vifm "/vim")
                                  vimfiles)
                (delete-file-recursively (string-append vifm "/colors"))
                (delete-file-recursively (string-append vifm "/vim")))
              #t)))))
    (native-inputs
     `(("groff" ,groff))) ; for the documentation
    (inputs
     `(("libx11" ,libx11)
       ("ncurses" ,ncurses)
       ("perl" ,perl)))
    (home-page "https://vifm.info/")
    (synopsis "Flexible vi-like file manager using ncurses")
    (description "Vifm is a file manager providing a @command{vi}-like usage
experience.  It has similar keybindings and modes (e.g. normal, command line,
visual).  The interface uses ncurses, thus vifm can be used in text-only
environments.  It supports a wide range of features, some of which are known
from the @command{vi}-editor:
@enumerate
@item utf8 support
@item user mappings (almost like in @code{vi})
@item ranges in command
@item line commands
@item user defined commands (with support for ranges)
@item registers
@item operation undoing/redoing
@item fuse file systems support
@item trash
@item multiple files renaming
@item support of filename modifiers
@item colorschemes support
@item file name color according to file type
@item path specific colorscheme customization
@item bookmarks
@item operation backgrounding
@item customizable file viewers
@item handy @code{less}-like preview mode
@item filtering out and searching for files using regular expressions
@item one or two panes view
@end enumerate
With the package comes a plugin to use vifm as a vim file selector.")
    (license license:gpl2+)))

(define-public python-pynvim
  (package
    (name "python-pynvim")
    (version "0.4.2")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "pynvim" version))
              (sha256
               (base32
                "13qgwkqbx012j5spis1aw8rb120rw0zphgjy1j58irax8r6j1ikb"))))
    (build-system python-build-system)
    (propagated-inputs
     `(("python-greenlet" ,python-greenlet)
       ("python-msgpack" ,python-msgpack)))
    (arguments
     `(#:tests? #f))
    (home-page "https://github.com/neovim/pynvim")
    (synopsis "Python client and plugin host for neovim")
    (description "Pynvim implements support for python plugins in neovim.  It
also works as a library for connecting to and scripting neovim processes
through its msgpack-rpc API.")
    (license license:asl2.0)))

(define-public python2-pynvim
  (package-with-python2 python-pynvim))

(define-public vim-guix-vim
  (package
    (name "vim-guix-vim")
    (version "0.1.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                     (url "https://gitlab.com/Efraim/guix.vim")
                     (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "10bfy0dgwizxr56b4272b7sqajpr6lnz332pzx055dis2zzjap8z"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("compiler" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/")
         ("indent" "share/vim/vimfiles/")
         ("ftdetect" "share/vim/vimfiles/")
         ("ftplugin" "share/vim/vimfiles/")
         ("syntax" "share/vim/vimfiles/"))))
    (home-page "https://gitlab.com/Efraim/guix.vim")
    (synopsis "Guix integration in Vim")
    (description "This package provides support for GNU Guix in Vim.")
    (license license:vim)))

(define-public vim-asyncrun
  (package
    (name "vim-asyncrun")
    (version "2.7.5")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                     (url "https://github.com/skywind3000/asyncrun.vim")
                     (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "02fiqf4rcrxbcgvj02mpd78wkxsrnbi54aciwh9fv5mnz5ka249m"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("plugin" "share/vim/vimfiles/")
         ("doc/" "share/vim/vimfiles/doc" #:include ("asyncrun.txt")))))
    (home-page "https://github.com/skywind3000/asyncrun.vim")
    (synopsis "Run Async Shell Commands in Vim")
    (description "This plugin takes the advantage of new APIs in Vim 8 (and
NeoVim) to enable you to run shell commands in background and read output in the
quickfix window in realtime.")
    (license license:expat)))

(define-public vim-dispatch
  (package
    (name "vim-dispatch")
    (version "1.8")
    (source
      (origin
        (method git-fetch)
        (uri (git-reference
               (url "https://github.com/tpope/vim-dispatch")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
          "1m8b5mn2zqlphzs6xfwykwmghf6p0wabrhpjmh7vav35jgcxc4wl"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("autoload" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/")
         ("plugin" "share/vim/vimfiles/"))))
    (home-page "https://github.com/tpope/vim-dispatch")
    (synopsis "Asynchronous build and test dispatcher")
    (description "Leverage the power of Vim's compiler plugins without being
bound by synchronicity.  Kick off builds and test suites using one of several
asynchronous adapters (including tmux, screen, and a headless mode), and when
the job completes, errors will be loaded and parsed automatically.")
    (license license:vim)))

(define-public vim-eunuch
  (let ((commit "33e875b31c8b811a0a47908884a5e2339106bbe8")
        (revision "1"))
    (package
      (name "vim-eunuch")
      (version (git-version "1.2" revision commit))
      (source
        (origin
          (method git-fetch)
          (uri (git-reference
                 (url "https://github.com/tpope/vim-eunuch")
                 (commit commit)))
          (file-name (git-file-name name version))
          (sha256
           (base32
            "1xadb22kd40swmww0qxmmkcpcq6viy8l167pjck5q32hfngll5d3"))))
      (build-system copy-build-system)
      (arguments
       '(#:install-plan
         '(("doc" "share/vim/vimfiles/")
           ("plugin" "share/vim/vimfiles/"))))
      (home-page "https://github.com/tpope/vim-eunuch")
      (synopsis "Vim sugar for the UNIX shell commands")
      (description "Vim sugar for the UNIX shell commands that need it the most.
This package includes commands such as @code{SudoWrite} and @code{SudoEdit} and
help working on Vim buffers and the files they reference with one command.")
      (license license:vim))))
he packages and is ``deep down'' in the dependency graph): @example guix build --with-graft=glibc=glibc@@2.31 hello @end example Run @command{info \"(guix) Package Transformation Options\"} for more info.") (es "Las opciones de transformación de paquetes como @option{--with-branch}, @option{--with-input}, etcétera, ahora también influyen en las entradas implícitas---antes únicamente las entradas explícitas del paquete se veían afectadas. Esto permite, por ejemplo, sustituir la dependencia en python de un paquete que use @code{python-build-system}: @example guix install --with-input=python=python2 python-itsdangerous @end example Otro ejemplo podría ser el injerto de una versión diferente de la biblioteca de C de GNU (@code{glibc} es una entrada implícita de casi todos los paquetes y ``muy abajo'' en el grafo de dependencias): @example guix build --with-graft=glibc=glibc@@2.31 hello @end example Ejecute @command{info \"(guix.es) Opciones de transformación de paquetes\"} para obtener más información.") (de "Paketumwandlungsoptionen wie @option{--with-branch}, @option{--with-input} und so weiter betreffen nun auch implizite Eingaben — zuvor haben sie sich nur auf die expliziten Eingaben eines Pakets ausgewirkt. Dadurch kann jetzt zum Beispiel die Python-Abhängigkeit eines Pakets, welches @code{python-build-system} benutzt, ersetzt werden: @example guix install --with-input=python=python2 python-itsdangerous @end example Ein weiteres Beispiel ist, mit einer anderen Version der GNU-C-Bibliothek zu veredeln (@code{glibc} ist eine implizite Eingabe fast aller Pakete und steckt „ganz tief“ im Abhängigkeitsgraphen): @example guix build --with-graft=glibc=glibc@@2.31 hello @end example Führen Sie für mehr Informationen @command{info \"(guix.de) Paketumwandlungsoptionen\"} aus.") (fr "Les options de transformation de paquets telles que @option{--with-branch} et @option{--with-input} s'appliquent désormais aux dépendances implicites — jusque là seules les dépendances explicites des paquets étaient prises en compte. Cela permet certaines choses telles que remplacer la dépendance sur Python d'un paquet utilisant @code{python-build-system} : @example guix install --with-input=python=python2 python-itsdangerous @end example Un autre exemple est la possibilité de greffer une version différente de la bibliothèque C GNU (la @code{glibc} est une dépendance implicite de tous les paquets et se trouve « tout en bas » du graphe de dépendance) : @example guix build --with-graft=glibc=glibc@@2.31 hello @end example Voir @command{info \"(guix.fr) Options de transformation de paquets\"} pour plus de détails."))) (entry (commit "f458cfbcc54ed87b1a87dd9e150ea276f17eab74") (title (en "New @option{--without-tests} transformation option") (es "Nueva opción de transformación @option{--without-tests}") (de "Neue Paketumwandlungsoption @option{--without-tests}") (fr "Nouvelle option de transformation @option{--without-tests}")) (body (en "The new @option{--without-tests} package transformation option instructs Guix to skip the test suite of a given package. In the example below, @code{guile-gcrypt} is built using a variant of @code{automake} itself built without running its (lengthy) test suite: @example guix build guile-gcrypt --without-tests=automake @end example This is primarily useful as a way to speed up development cycles, or to work around flaky test suites---skipping tests can hide real issues, so use with care. Run @command{info \"(guix) Package Transformation Options\"} for more info.") (es "La nueva opción de transformación de paquetes @option{--without-tests} indica a Guix que omita la batería de pruebas del paquete proporcionado. En el siguiente ejemplo @code{guile-gcrypt} se construye usando una variación de @code{automake}, la cual se ha construido sin ejecutar su (larga) batería de pruebas: @example guix build guile-gcrypt --without-tests=automake @end example Esto es principalmente útil como una forma de acelerar ciclos de desarrollo o de omitir temporalmente baterías de pruebas problemáticas---omitir las pruebas puede ocultar problemas reales, por lo que debe usarse con precaución. Ejecute @command{info \"(guix.es) Opciones de transformación de paquetes\"} para obtener más información.") (de "Mit der neuen Paketumwandlungsoption @option{--without-tests} wird Guix angewiesen, den Testkatalog des angegebenen Pakets zu überspringen. Im folgenden Beispiel wird @code{guile-gcrypt} mit einer Variante von @code{automake} erstellt, die wiederum ohne Durchlauf ihres (viel Zeit in Anspruch nehmenden) Testkatalogs erstellt wird: @example guix build guile-gcrypt --without-tests=automake @end example Der hauptsächliche Nutzen liegt in der Beschleunigung von Entwicklungszyklen oder im Umgehen unzuverlässiger Testkataloge. Allerdings kann das Überspringen dazu führen, dass echte Probleme verborgen bleiben. Setzen Sie es mit Bedacht ein. Führen Sie @command{info \"(guix.de) Paketumwandlungsoptionen\"} aus, um mehr Informationen zu erhalten.") (fr "La nouvelle option de transformation de paquets @option{--without-tests} demande à Guix de sauter la suite de tests d'un paquet. Dans l'exemple ci-dessous, @code{guile-gcrypt} est construit en utilisant une variante de @code{automake} construite sans lancer sa suite de tests : @example guix build guile-gcrypt --without-tests=automake @end example Cette option est surtout intéressante pour raccourcir le cycle de développement ou pour contourner une suite de tests qui n'est pas fiable — sauter les tests peut cacher des vrais problèmes, à utiliser avec précaution donc. Voir @command{info \"(guix.fr) Options de transformation de paquets\"} pour plus de détails."))) (entry (commit "a98712785e0b042a290420fd74e5a4a5da4fc68f") (title (en "New @command{guix git authenticate} command") (es "Nueva orden @command{guix git authenticate}") (de "Neuer Befehl @command{guix git authenticate}") (fr "Nouvelle commande @command{guix git authenticate}")) (body (en "The new @command{guix git authenticate} command authenticates a Git repository by verifying commit signatures and ensuring they all come from authorized parties, exactly like @command{guix pull} now does. This command is primarily useful to developers of channels. It allows them to ensure, before pushing, that the channel only contains commits signed with authorized keys. But this command is also useful anytime you use Git and want to allow people to authenticate code fetched from your repository. Run @command{info \"(guix) Invoking guix git authenticate\"} for more info, and see @uref{https://guix.gnu.org/blog/2020/securing-updates/} for details on these mechanisms.") (es "La nueva orden @command{guix git authenticate} comprueba la validez de un repositorio git verificando las firmas de las revisiones y comprobando que todas las firmas están autorizadas, exactamente igual que @command{guix pull}. Esta orden es principalmente útil para desarrolladoras de canales. Permite asegurar, antes de subir nada al repositorio remoto, que el canal contiene únicamente revisiones firmadas por claves autorizadas. No obstante esta orden es útil siempre que use git y quiera que otras personas puedan verificar el código obtenido de su repositorio. Ejecute @command{info \"(guix.es) Invocación de guix git authenticate\"} para obtener más información y vea detalles sobre estos mecanismos en @uref{https://guix.gnu.org/blog/2020/securing-updates/}.") (de "Mit dem neuen Befehl @command{guix git authenticate} können Sie ein Git-Repository authentifizieren. Dazu werden alle Commit-Signaturen verifiziert und geprüft, dass jede von einer autorisierten Quelle kommt, genau wie es @command{guix pull} nun tut. Dieser Befehl hilft in erster Linie den Entwicklern von Kanälen. Mit ihm kann vor einem Push sichergestellt werden, dass der Kanal nur Commits enthält, die mit autorisierten Schlüsseln signiert worden sind. Aber der Befehl kann auch helfen, wann immer Sie Git verwenden und ermöglichen wollen, dass Nutzer von Ihrem Repository geladenen Code authentifizieren können. Führen Sie @command{info \"(guix) Invoking guix git authenticate\"} aus, um mehr Informationen zu erhalten, und lesen Sie @uref{https://guix.gnu.org/blog/2020/securing-updates/} für die Details dieser Mechanismen.") (fr "La nouvelle commande @command{guix git authenticate} authentifie un dépôt Git en vérifiant les signatures sur les changements (@i{commits}) et en s'assurant qu'elles sont autorisées, exactement comme @command{guix pull} le fait désormais. Cette commande est avant tout utile aux personnes développant un canal. Elle leur permet de s'assurer, avant de pousser des changements, que le canal ne contient que des changements signés par des clefs autorisées. Mais cette commande peut aussi s'avérer utile dès que tu veux utiliser Git et permettre aux autres d'authentifier le code récupéré depuis ton dépôt. Lance @command{info \"(guix.fr) Invoking guix git authenticate\"} pour plus d'informations. Voir @uref{https://guix.gnu.org/blog/2020/securing-updates/} pour en savoir plus sur ces mécanismes."))) (entry (commit "43badf261f4688c8a7a7a9004a4bff8acb205835") (title (en "@command{guix pull} authenticates channels") (es "@command{guix pull} verifica los canales") (de "@command{guix pull} authentifiziert Kanäle") (fr "@command{guix pull} authentifie les canaux")) (body (en "The @command{guix pull} and @command{guix time-machine} commands now authenticate the source code that they pull, unless the new @option{--disable-authentication} option is passed. What this means is that Guix ensures that each commit received is cryptographically signed by an authorized developer. This protects you from attempts to tamper with the Guix repository and from attempts to ship malicious code to users. This feature is currently limited to the @code{guix} channel but will soon be available to third-party channel authors.") (es "Las ordenes @command{guix pull} y @command{guix time-machine} ahora verifican el código fuente que obtienen, a menos que se proporcione la opción @option{--disable-authentication}. Lo que esto significa es que Guix se asegura de que cada revisión que recibe está firmada criptográficamente por una desarrolladora autorizada. Esto le protege de intentos de modificación del repositorio de Guix y de entregas de código con malas intenciones sobre las usuarias. Esta característica está limitada actualmente al canal @code{guix} pero pronto estará disponible para autoras de canales independientes.") (de "Die Befehle @command{guix pull} und @command{guix time-machine} prüfen nun die Authentizität des heruntergeladenen Quellcodes, außer wenn die neue Befehlszeilenoption @option{--disable-authentication} angegeben wurde. Das bedeutet, Guix stellt sicher, dass jeder empfangene Commit durch einen autorisierten Entwickler kryptografisch signiert wurde. Das schützt Sie vor Versuchen, das Guix-Repository zu manipulieren oder bösartigen Code an die Nutzer auszuliefern. Diese Funktionalität ist auf den @code{guix}-Kanal beschränkt, sie wird jedoch bald auch Autoren dritter Kanäle zur Verfügung stehen.") (fr "Les commandes @command{guix pull} et @command{guix time-machine} authentifient dorénavant le code source qu'elles obtiennent, à moins que la nouvelle option @option{--disable-authentication} soit utilisée. Cela signifie que Guix s'assure que chaque soumission (@i{commit}) récupéré dispose d'une signature cryptographique par un·e développeur·euse autorisé·e. Cela te protège de tentatives de modifications du dépôt Guix et de tentatives de livrer du code malintentionné. Cette fonctionnalité n'est actuellement disponible que pour le canal @code{guix} mais le sera bientôt pour les canaux tiers."))) (entry (commit "c924e541390f9595d819edc33c19d979917c15ec") (title (en "@command{guix repl} adds support for running Guile scripts") (es "@command{guix repl} puede ejecutar guiones de Guile") (de "@command{guix repl} kann Guile-Skripte ausführen") (fr "@command{guix repl} permet d'exécuter des scripts en langage Guile")) (body (en "The @command{guix repl} command can now be used to run Guile scripts. Compared to just launching the @command{guile} command, @command{guix repl} guarantees that all the Guix modules and all its dependencies are available in the search path. Scripts are run like this: @example guix repl -- my-script,scm --option1 --option2=option-arg arg1 arg2 @end example Run @command{info \"(guix) Invoking guix repl\"} for more information.") (es "La orden @command{guix repl} ahora se puede usar para ejecutar guiones de Guile. En comparación con únicamente la ejecución de la orden @command{guile}, @command{guix repl} garantiza que todos los módulos de Guix y sus dependencias están disponibles en la ruta de búsqueda. Los guiones se ejecutan de este modo: @example guix repl -- mi-guion.scm --opcion1 --opcion2=param-op2 param1 param2 @end example Ejecute @command{info \"(guix.es) Invocación de guix repl\"} para obtener más información.") (de "Der Befehl @command{guix repl} kann jetzt zur Ausführung von Guile-Skripten verwendet werden. Im Vergleich zum Befehl @command{guile} garantiert @command{guix repl}, dass alle Guix-Module und alle seine Abhängigkeiten im Suchpfad verfügbar sind. Skripte werden wie folgt ausgeführt: @example guix repl -- my-script,scm --option1 --option2 --option2=option-arg arg1 arg2 @end example Weitere Informationen erhalten Sie mit @command{info \"(guix.de) Aufruf von guix repl\"}.") (fr "La commande @command{guix repl} peut maintenant être utilisée pour exécuter des scripts en langage Guile. Par rapport au simple lancement de la commande @command{guile}, @command{guix repl} garantit que tous les modules Guix et toutes ses dépendances sont disponibles dans le chemin de recherche. Les scripts sont exécutés comme ceci : @example guix repl -- my-script,scm --option1 --option2=option-arg arg1 arg2 @end example Exécutez @command{info \"(guix.fr) Invoquer guix repl\"} pour plus d'informations."))) (entry (commit "b460ba7992a0b4af2ddb5927dcf062784539ef7b") (title (en "Add support to boot from a Btrfs subvolume") (es "Implementado el arranque desde un subvolumen de Btrfs") (de "Unterstützung für Systemstart von einem Btrfs-Unterlaufwerk hinzugefügt") (fr "Ajout du support pour démarrer depuis un sous-volume Btrfs") (nl "Nieuwe ondersteuning voor het opstarten vanaf een Btrfs-subvolume")) (body (en "The generation of the GRUB configuration file produced from an operating system declaration now takes into account the use of a Btrfs subvolume for the partition holding @file{/gnu/store}. Run the command @command{info \"(guix) Btrfs file system\"} for more information and examples.") (es "El fichero de configuración de GRUB producido por la declaración de sistema operativo ahora tiene en cuenta el uso de subvolúmenes de Btrfs en la partición que contiene @file{/gnu/store}. Ejecute la orden @command{info \"(guix.es) Sistema de ficheros Btrfs\"} para obtener más información y ejemplos.") (de "Für die Erzeugung einer GRUB-Konfigurationsdatei aus einer Betriebssystemdeklaration kann jetzt ein Btrfs-Unterlaufwerk („Subvolume“) für die Partition mit @file{/gnu/store} angegeben werden. Führen Sie @command{info \"(guix) Btrfs file system\"} aus, wenn Sie mehr Informationen und Beispiele sehen möchten.") (fr "La génération du fichier de configuration de GRUB produite à partir de la déclaration d'un @code{operating-system} tient maintenant compte de l'utilisation d'un sous-volume Btrfs pour la partition contenant @file{/gnu/store}. Exécutez la commande @command{info\"(guix) Btrfs file system\"} pour des exemples et plus d'information.") (nl "Het opmaken van het GRUB-configuratiebestand op basis van een @code{operating-system}-declaratie houdt nu rekening met het gebruik van een Btrfs-subvolume voor de partitie die @file{/gnu/store} bevat. Voer @command{info \"(guix) Btrfs file system\"} uit voor meer informatie en voorbeelden."))) (entry (commit "6456232164890dbf5aa20394ee24637feb4b7b9e") (title (en "@command{guix pack -RR} introduces a new execution engine") (es "@command{guix pack -RR} introduce un nuevo motor de ejecución") (de "@command{guix pack -RR} führt neuen Ausführungstreiber ein")) (body (en "The @command{guix pack -RR} command allows you to create a tarball containing @dfn{relocatable binaries}. Until now, those would rely either on Linux ``unprivileged user namespaces'' or on PRoot, when unprivileged user namespaces are not supported. However, PRoot introduces significant overhead for some workloads. To address that, @command{guix pack -RR} introduces a third option based on an extension to the GNU run-time linker (ld.so) and on Fakechroot, which incurs very little overhead. You can select the fastest option when executing a relocatable binary like this: @example GUIX_EXECUTION_ENGINE=performance export GUIX_EXECUTION_ENGINE @end example Run @command{info \"(guix) Invoking guix pack\"} for more information.") (es "La orden @command{guix pack -RR} le permite crear un archivador tar que contiene @dfn{binarios reposicionables}. Hasta ahora dichos binarios dependían o bien de los ``espacios de nombres de usuarias sin privilegios'' de Linux o en PRoot, cuando estos no estaban implementados. No obstante, PRoot introduce una sobrecarga significativa en algunos escenarios de trabajo. Para estos casos @command{guix pack -RR} introduce una tercera opción basada en una extensión al enlazador de tiempo de ejecución de GNU (ld.so) y en Fakechroot, lo que conlleva muy poca sobrecarga. Puede seleccionar la opción más rápida cuando ejecute un binario reposicionable de esta manera: @example GUIX_EXECUTION_ENGINE=performance export GUIX_EXECUTION_ENGINE @end example Ejecute @command{info \"(guix.es) Invocación de guix pack\"} para obtener más información.") (de "Mit dem Befehl @command{guix pack -RR} können Sie einen Tarball mit @dfn{verschieblichen Binärdateien} erzeugen (englisch „Relocatable Binaries“). Bisher wurden diese entweder in „unprivilegierten Benutzernamensräumen“ ohne Berechtigungen ausgeführt, oder in PRoot, wenn keine unprivilegierten Benutzernamensräume unterstützt wurden. Allerdings fällt bei der Ausführung mit PRoot bei manchen Anwendungen deutlich mehr Rechenaufwand an. Um dem entgegenzuwirken, stellt @command{guix pack -RR} nun eine dritte Option zur Verfügung, die sich eine Erweiterung des GNU-Laufzeit-Binders („Run-Time Linker“, ld.so) und Fakechroot zu Nutze macht. Dadurch entsteht fast kein Mehraufwand. Sie können sich die schnellste Option aussuchen, wenn Sie eine verschiebliche Binärdatei ausführen, zum Beispiel so: @example GUIX_EXECUTION_ENGINE=performance export GUIX_EXECUTION_ENGINE @end example Führen Sie @command{info \"(guix.de) Aufruf von guix pack\"} aus, wenn Sie mehr wissen wollen."))) (entry (commit "88a96c568c47c97d05d883ada5afbc4e1200b10f") (title (en "New @option{--path} option for @command{guix graph}") (es "Nueva opción @option{--path} para @command{guix graph}") (de "Neue Option @option{--path} für @command{guix graph}")) (body (en "The @command{guix graph} command has a new @option{--path} option that instructs it to display the shortest path between two packages, derivations, or store items. For example, the command below displays the shortest path from the @code{libreoffice} package to @code{libunistring}: @example guix graph --path libreoffice libunistring @end example Run @code{info \"(guix) Invoking guix graph\"} for more information.") (es "La orden @command{guix graph} tiene una nueva opción @option{--path} que le indica que debe mostrar la ruta más corta entre dos paquetes, derivaciones o elementos del almacén. Por ejemplo, la siguiente orden muestra la ruta más corta desde el paquete @code{libreoffice} hasta @code{libunistring}: @example guix graph --path libreoffice libunistring @end example Ejecute @code{info \"(guix.es) Invocación de guix graph\"} para obtener más información.") (de "Der Befehl @command{guix graph} verfügt über eine neue Befehlszeilenoption @option{--path}, die ihn den kürzesten Pfad zwischen zwei Paketen, Ableitungen oder Store-Objekten ausgeben lässt. Zum Beispiel zeigt folgender Befehl den kürzesten Pfad vom Paket @code{libreoffice} zu @code{libunistring}: @example guix graph --path libreoffice libunistring @end example Führen Sie @code{info \"(guix.de) Aufruf von guix graph\"} aus, um mehr zu erfahren."))) (entry (commit "a33eac038a811603c8b9ed106ae405a5f80a0e9d") (title (en "GNU C Library upgraded") (de "GNU-C-Bibliothek aktualisiert") (es "Actualización de la biblioteca C de GNU") (fr "Mise à jour de la bibliothèque C de GNU") (nl "GNU C-bibliotheek bijgewerkt")) (body (en "The GNU C Library (glibc) has been upgraded to version 2.31. To run previously-installed programs linked against glibc 2.29, you need to install locale data for version 2.29 in addition to locale data for 2.31: @example guix install glibc-locales glibc-locales-2.29 @end example On Guix System, you can adjust the @code{locale-libcs} field of your @code{operating-system} form. Run @code{info \"(guix) Locales\"}, for more info.") (de "Die GNU-C-Bibliothek (glibc) wurde auf Version 2.31 aktualisiert. Um zuvor installierte Programme, die an glibc 2.29 gebunden worden sind, weiter benutzen zu können, müssen Sie Locale-Daten für Version 2.29 zusätzlich zu den Locale-Daten für 2.31 installieren: @example guix install glibc-locales glibc-locales-2.29 @end example Auf Guix System genügt es, das @code{locale-libcs}-Feld Ihrer @code{operating-system}-Form anzupassen. Führen Sie @code{info \"(guix.de) Locales\"} aus, um weitere Informationen dazu zu erhalten.") (es "Se ha actualizado la biblioteca de C de GNU (glibc) a la versión 2.31. Para ejecutar programas instalados previamente que se encuentren enlazados con glibc 2.29, es necesario que instale los datos de localización de la versión 2.29 junto a los datos de localización de la versión 2.31: @example guix install glibc-locales glibc-locales-2.29 @end example En el sistema Guix, puede ajustar el campo @code{locale-libcs} de su declaración @code{operating-system}. Ejecute @code{info \"(guix.es) Localizaciones\"} para obtener más información.") (fr "La bibliothèque C de GNU (glibc) a été mise à jour en version 2.31. Pour pouvoir lancer tes programmes déjà installés et liés à glibc 2.29, tu dois installer les données pour la version 2.29 en plus des données de régionalisation pour la version 2.31: @example guix install glibc-locales glibc-locales-2.29 @end example Sur le système Guix, tu peux ajuster le champ @code{locale-libcs} de ta forme @code{operating-system}. Lance @code{info \"(guix.fr) Régionalisation\"} pour plus de détails.") (nl "De GNU C-bibliotheek (glibc) werd bijgewerkt naar versie 2.31. Om gebruik te maken van reeds geïnstalleerde programma's die aan glibc 2.29 gebonden zijn, moet u de regionale informatie van versie 2.29 naast die van versie 2.31 installeren: @example guix install glibc-locales glibc-locales-2.29 @end example Op Guix System kunt u het @code{locale-libcs}-veld van uw @code{operating-system}-vorm aanpassen. Voer @code{info \"(guix) Locales\"} uit voor verdere uitleg."))) (entry (commit "e1e6491226347d9fb93ff484d78cef98848a510a") (title (en "Guix Cookbook now available as Info") (de "Guix-Kochbuch jetzt als Info-Dokument verfügbar")) ;; TRANSLATORS: Adjust the URL and the 'info' command to refer to the ;; translated manual if it's available. (body (en "The new Guix Cookbook is now fetched by @command{guix pull} and thus readily available in the Info format. It aims to provide tutorials and detailed examples covering a variety of use cases. You can access it by typing: @example info guix-cookbook @end example The Cookbook is currently available in English and German. You can also find it @uref{https://guix.gnu.org/cookbook/en/, on-line}. Your contributions are welcome: @uref{https://guix.gnu.org/contact/, get in touch with the developers} to share your recipes!") (de "Das neue Guix-Kochbuch wird nun von @command{guix pull} geladen und steht dann im Info-Format zur Verfügung. Darin sollen Anleitungen und detaillierte Beispiele gezeigt werden, die eine breite Spanne an Anwendungsfällen abdecken. Um darauf zuzugreifen, geben Sie dies ein: @example info guix-cookbook.de @end example Das Kochbuch steht derzeit auf Deutsch und Englisch zur Verfügung. Sie können auch @uref{https://guix.gnu.org/cookbook/de/, online} darauf zugreifen. Ihre Beiträge werden gerne gesehen. Bitte @uref{https://guix.gnu.org/contact/, kontaktieren Sie die Entwickler}, um Ihre Rezepte mit uns zu teilen!"))) (entry (commit "2ca7af43fe17d9acf082dce85d137a27a8ac4887") (title (en "Further reduced binary seed bootstrap") (de "Bootstrapping jetzt mit noch kleinerem Seed")) (body (en "The package graph on x86_64 and i686 is now rooted in a further @dfn{reduced set of binary seeds}. The initial set of binaries from which packages are built now weighs in at approximately 60 MiB, a quarter of what it used to be. Run @code{info \"(guix) Bootstrapping\"} to learn more, or watch the talk at @uref{https://fosdem.org/2020/schedule/event/gnumes/}.") (de "Der Paketgraph auf x86_64 und i686 hat jetzt eine noch @dfn{kleinere Menge an binären Seeds} als Wurzel. Das heißt, die ursprüngliche Menge an Binärdateien, aus denen heraus Pakete erstellt werden, machen nun ungefähr 60 MiB aus, ein Viertel der früheren Größe. Führen Sie @code{info \"(guix.de) Bootstrapping\"} aus, um mehr zu erfahren, oder schauen Sie sich den Vortrag auf @uref{https://fosdem.org/2020/schedule/event/gnumes/} an."))) (entry (commit "0468455e7d279c89ea3ad1b51935efb2b785ec47") (title (en "Rottlog service added to @code{%base-services}") (de "Rottlog-Dienst ist nun Teil der @code{%base-services}")) (body (en "An instance of @code{rottlog-service-type}, the system service responsible for log rotation, has been added to @code{%base-services}. If your operating system configuration for Guix System is explicitly adding @code{rottlog-service-type} to the services, you should now remove it. See the ``Log Rotation'' section of the manual for more information.") (de "Eine Instanz des @code{rottlog-service-type} für Log-Rotation wurde zu den @code{%base-services} hinzugefügt. Wenn der Systemdienst bereits in Ihrer Konfiguration für Guix System ausdrücklich genannt wurde, sollten Sie ihn jetzt daraus entfernen. Siehe den Abschnitt „Log-Rotation“ im Handbuch für weitere Informationen."))) (entry (commit "b6bee63bed4f013064c0d902e7c8b83ed7514ade") (title (en "@code{guile} package now refers to version 3.0") (de "Das @code{guile}-Paket bezeichnet jetzt Version 3.0")) (body (en "The @code{guile} package has been upgraded to version 3.0 (instead of 2.2). The @code{guile3.0-} packages have been renamed to their original name, and @code{guile2.2-} variants of these packages have been defined. Additionally, derivations are now all built with Guile 3.0, and system services also run on 3.0.") (de "Das @code{guile}-Paket wurde auf Version 3.0 (statt 2.2) aktualisiert. Die Pakete, deren Namen mit @code{guile3.0-} beginnen, wurden umbenannt, so dass sie nun den unveränderten Namen tragen, während ihre Varianten mit @code{guile2.2-} hinzugefügt wurden. Des Weiteren werden jetzt alle Ableitungen mit Guile 3.0 erstellt und die Systemdienste laufen auch auf 3.0."))) (entry (commit "e3e1a7ba08af2d58c47264c543617e499c239444") (title (en "@command{guix pull} now supports SSH authenticated repositories") (de "@command{guix pull} unterstützt nun SSH-authentifizierte Repositorys") (fr "@command{guix pull} prend maintenant en charge l'authentification en SSH pour les dépôts.") (nl "@command{guix pull} ondersteunt nu SSH-geauthenticeerde repository's.")) (body (en "The @command{guix pull} command now supports SSH authenticated repositories as argument of @option{--url} and in custom channels definitions. The authentication requires that an @command{ssh-agent} is running.") (de "Der Befehl @command{guix pull} unterstützt nun über SSH authentifizierte Repositorys als Argument von @option{--url} und in selbstgeschriebenen Kanaldefinitionen. Zur Authentisierung muss ein @command{ssh-agent} laufen.") (fr "La commande @command{guix pull} prend maintenant en charge l'authentification SSH pour les dépôts dans l'argument @option{--url} et dans le définitions de canaux personnalisés. L'authentification nécessite qu'un @command{ssh-agent} soit lancé.") (nl "Het @command{guix pull}-commando ondersteunt nu SSH-geauthenticeerde opslag als argument na @option{--url} en bij het schrijven van eigen kanaaldefinities. Hiervoor moet een @command{ssh-agent} gestart zijn."))) (entry (commit "8234fe653e61d0090138cbd4c48d877568355439") (title (en "Guix now runs on Guile 3.0") (de "Guix läuft jetzt auf Guile 3.0") (fr "Guix tourne maintenant sous Guile 3.0") (nl "Guix draait nu op Guile 3.0")) (body (en "The Guix revision you just pulled runs on version 3.0 of GNU@tie{}Guile (previously it would run on version 2.2). Guile 3.0 improves performance through the use of just-in-time (JIT) native code generation. The switch should be entirely transparent to you. See @uref{https://gnu.org/software/guile} for more information on Guile 3.0.") (de "Die Guix-Version, die Sie gerade gepullt haben, läuft auf Version 3.0 von GNU@tie{}Guile (und nicht mehr auf Version 2.2). Guile 3.0 verbessert die Rechenleistung, indem native Maschinenbefehle „just in time“ erzeugt werden (JIT-Kompilierung). Der Wechsel sollte für Sie völlig transparent sein und Guix verhält sich gleich. Siehe @uref{https://gnu.org/software/guile} für weitere Informationen zu Guile 3.0.") (fr "La révision de Guix que tu viens de récupérer tourne sous la version 3.0 de GNU@tie{}Guile (Guix tournait avant sous la version 2.2). Guile 3.0 améliore la performance en générant du code natif à la volée (JIT). Le changement devrait être totalement transparent pour toi. Voir @uref{https://gnu.org/software/guile} pour plus d'information sur Guile 3.0.") (nl "De Guix die u net heeft gepulld gebruikt versie 3.0 van GNU@tie{}Guile (voorheen was dat versie 2.2). Guile@tie{}3.0 draait dezelfde programma's doorgaans sneller door ze ‘just-in-time’ (JIT) te vertalen naar machine-instructies. De omschakeling zou voor u volledig naadloos moeten zijn. Lees @uref{https://gnu.org/software/guile} voor meer informatie over Guile@tie{}3.0."))) (entry (commit "828a39da68a9169ef1d9f9ff02a1c66b1bcbe884") (title (en "New @option{--diff} option for @command{guix challenge}") (de "Neue @option{--diff}-Option für @command{guix challenge}") (fr "Nouvelle option @option{--diff} sur @command{guix challenge}")) (body (en "The @command{guix challenge} command, which compares binaries provided by different substitute servers as well as those built locally, has a new @option{--diff} option. With @option{--diff=simple} (the default), @command{guix challenge} automatically downloads binaries and reports the list of differing files; @option{--diff=diffoscope} instructs it to pass them to @command{diffoscope}, which simplifies the comparison process. Run @command{info \"(guix) Invoking guix challenge\"}, for more info.") (fr "La commande @command{guix challenge} qui compare les binaires fournis par différents serveurs de substituts aux contsructions locales a une nouvelle option @option{--diff}. Avec @option{--diff=simple} (par défaut), @command{guix challenge} télécharge automatiquement les binaires et rapporte la liste des fichiers différents@tie{}; @option{--diff=diffoscope} lui dit de les passer à @command{diffoscope} qui simplifie le processus de comparaison. Lance @command{info \"(guix.fr) Invoquer guix challenge\"} pour plus d'info.") (de "Der Befehl @command{guix challenge}, mit dem Binärdateien von unterschiedlichen Substitut-Servern oder lokale Erstellungen miteinander verglichen werden können, hat eine neue Befehlszeilenoption @option{--diff} bekommen. Bei @option{--diff=simple} (der Voreinstellung) lädt @command{guix challenge} automatisch Binärdateien herunter und listet sich unterscheidende Dateien auf; wird @option{--diff=diffoscope} angegeben, werden sie an @command{diffoscope} geschickt, was deren Vergleich erleichtert. Führen Sie @command{info \"(guix.de) Aufruf von guix challenge\"} aus, um nähere Informationen zu erhalten."))) (entry (commit "f675f8dec73d02e319e607559ed2316c299ae8c7") (title (en "New command @command{guix time-machine}") (de "Neuer Befehl @command{guix time-machine}") (fr "Nouvelle commande @command{guix time-machine}")) (body (en "The new command @command{guix time-machine} facilitates access to older or newer revisions of Guix than the one that is installed. It can be used to install different versions of packages, and to re-create computational environments exactly as used in the past.") (de "Der neue Befehl @command{guix time-machine} vereinfacht den Zugriff auf ältere oder neuere Guix-Versionen als die installierte. Er kann zur Installation bestimmter Paketversionen verwendet werden, aber auch zur Wiederherstellung von Entwicklungsumgebungen, wie sie in der Vergangenheit verwendet wurden.") (fr "La nouvelle commande @command{guix time-machine} facilite l'accès à des versions antérieures ou postérieures par rapport à la version installée. Elle sert à installer des versions spécifiques de paquets, ainsi à la restauration d'environnements dans un état historique."))) (entry (commit "3e962e59d849e4300e447d94487684102d9d412e") (title (en "@command{guix graph} now supports package transformations") (de "@command{guix graph} unterstützt nun Paketumwandlungen")) (body (en "The @command{guix graph} command now supports the common package transformation options (see @command{info \"(guix) Package Transformation Options\"}). This is useful in particular to see the effect of the @option{--with-input} dependency graph rewriting option.") (de "Der Befehl @command{guix graph} unterstützt nun die mit anderen Befehlen gemeinsamen Umwandlungsoptionen (siehe @command{info \"(guix.de) Paketumwandlungsoptionen\"}). Sie helfen insbesondere dabei, die Wirkung der Befehlszeilenoption @option{--with-input} zum Umschreiben des Abhängigkeitsgraphen zu sehen.") (es "La orden @command{guix graph} ahora implementa las opciones comunes de transformación de paquetes (véase @command{info \"(guix.es) Opciones de transformación de paquetes\"}). Esto es particularmente útil para comprobar el efecto de la opción de reescritura del grafo de dependencias @option{--with-input}."))) (entry (commit "49af34cfac89d384c46269bfd9388b2c73b1220a") (title (en "@command{guix pull} now honors @file{/etc/guix/channels.scm}") (de "@command{guix pull} berücksichtigt nun @file{/etc/guix/channels.scm}") (es "Ahora @command{guix pull} tiene en cuenta @file{/etc/guix/channels.scm}") (fr "@command{guix pull} lit maintenant @file{/etc/guix/channels.scm}")) (body (en "The @command{guix pull} command will now read the @file{/etc/guix/channels.scm} file if it exists and if the per-user @file{~/.config/guix/channels.scm} is not present. This allows administrators of multi-user systems to define site-wide defaults.") (de "Der Befehl @command{guix pull} liest nun die Datei @file{/etc/guix/channels.scm}, wenn sie existiert und es für den jeweiligen Benutzer keine @file{~/.config/guix/channels.scm} gibt. Dadurch können Administratoren von Mehrbenutzersystemen systemweite Voreinstellungen vornehmen.") (es "Ahora la orden @command{guix pull} lee el fichero @file{/etc/guix/channels.scm} si existe y el fichero personalizable @file{~/.config/guix/channels.scm} no está presente. Esto permite a quienes administran sistemas con múltiples usuarias definir valores predeterminados en el sistema.") (fr "La commande @command{guix pull} lira maintenant le fichier @file{/etc/guix/channels.scm} s'il existe et si le fichier @file{~/.config/guix/channels.scm} par utilisateur·rice n'est pas présent. Cela permet aux personnes administrant des systèmes multi-utilisateurs de définir les canaux par défaut."))) (entry (commit "81c580c8664bfeeb767e2c47ea343004e88223c7") (title (en "Insecure @file{/var/guix/profiles/per-user} permissions (CVE-2019-18192)") (de "Sicherheitslücke in @file{/var/guix/profiles/per-user}-Berechtigungen (CVE-2019-18192)") (es "Vulnerabilidad en los permisos de @file{/var/guix/profiles/per-user} (CVE-2019-18192)") (fr "Permissions laxistes pour @file{/var/guix/profiles/per-user} (CVE-2019-18192)") (nl "Onveilige @file{/var/guix/profiles/per-user}-rechten (CVE-2019-18192)")) (body (en "The default user profile, @file{~/.guix-profile}, points to @file{/var/guix/profiles/per-user/$USER}. Until now, @file{/var/guix/profiles/per-user} was world-writable, allowing the @command{guix} command to create the @code{$USER} sub-directory. On a multi-user system, this allowed a malicious user to create and populate that @code{$USER} sub-directory for another user that had not yet logged in. Since @code{/var/@dots{}/$USER} is in @code{$PATH}, the target user could end up running attacker-provided code. See @uref{https://issues.guix.gnu.org/issue/37744} for more information. This is now fixed by letting @command{guix-daemon} create these directories on behalf of users and removing the world-writable permissions on @code{per-user}. On multi-user systems, we recommend updating the daemon now. To do that, run @code{sudo guix pull} if you're on a foreign distro, or run @code{guix pull && sudo guix system reconfigure @dots{}} on Guix System. In both cases, make sure to restart the service afterwards, with @code{herd} or @code{systemctl}.") (de "Das voreingestellte Benutzerprofil, @file{~/.guix-profile}, verweist auf @file{/var/guix/profiles/per-user/$USER}. Bisher hatte jeder Benutzer Schreibzugriff auf @file{/var/guix/profiles/per-user}, wodurch der @command{guix}-Befehl berechtigt war, das Unterverzeichnis @code{$USER} anzulegen. Wenn mehrere Benutzer dasselbe System benutzen, kann ein böswilliger Benutzer so das Unterverzeichnis @code{$USER} und Dateien darin für einen anderen Benutzer anlegen, wenn sich dieser noch nie angemeldet hat. Weil @code{/var/…/$USER} auch in @code{$PATH} aufgeführt ist, kann der betroffene Nutzer dazu gebracht werden, vom Angreifer vorgegebenen Code auszuführen. Siehe @uref{https://issues.guix.gnu.org/issue/37744} für weitere Informationen. Der Fehler wurde nun behoben, indem @command{guix-daemon} diese Verzeichnisse jetzt selbst anlegt statt das dem jeweiligen Benutzerkonto zu überlassen. Der Schreibzugriff auf @code{per-user} wird den Benutzern entzogen. Für Systeme mit mehreren Benutzern empfehlen wir, den Daemon jetzt zu aktualisieren. Auf einer Fremddistribution führen Sie dazu @code{sudo guix pull} aus; auf einem Guix-System führen Sie @code{guix pull && sudo guix system reconfigure …} aus. Achten Sie in beiden Fällen darauf, den Dienst mit @code{herd} oder @code{systemctl} neuzustarten.") (es "El perfil predeterminado de la usuaria, @file{~/.guix-profile}, apunta a @file{/var/guix/profiles/per-user/$USUARIA}. Hasta ahora cualquiera podía escribir en @file{/var/guix/profiles/per-user}, lo cual permitía a la orden @command{guix} crear el subdirectorio @code{$USUARIA}. En un sistema con múltiples usuarias, esto permitiría a cualquiera con intención de causar daño crear ese subdirectorio @code{$USUARIA} con el nombre de alguien que no hubiese ingresado en el sistema. Puesto que ese subdirectorio @code{/var/@dots{}/$USUARIA} se encuentra en la ruta de binarios predeterminada @code{$PATH}, el objetivo del ataque podría ejecutar código proporcionado por la parte atacante. Véase @uref{https://issues.guix.gnu.org/issue/37744} para obtener más información. Se ha solucionando delegando en @command{guix-daemon} la creación de esos directorios y eliminando los permisos de escritura para todo el mundo en @code{per-user}. En sistemas con múltiples usuarias recomendamos actualizar cuanto antes el daemon. Para hacerlo ejecute @code{sudo guix pull} si se encuentra en una distribución distinta, o ejecute @code{guix pull && sudo guix system reconfigure @dots{}} en el sistema Guix. En ambos casos, asegurese de reiniciar el servicio tras ello, con @code{herd} o @code{systemctl}.") (fr "Le profil utilisateur par défaut, @file{~/.guix-profile}, pointe vers @file{/var/guix/profiles/per-user/$USER}. Jusqu'à maintenant, @file{/var/guix/profiles/per-user} était disponible en écriture pour tout le monde, ce qui permettait à la commande @command{guix} de créér le sous-répertoire @code{$USER}. Sur un système multi-utilisateur, cela permet à un utilisateur malveillant de créer et de remplir le sous-répertoire @code{USER} pour n'importe quel utilisateur qui ne s'est jamais connecté. Comme @code{/var/@dots{}/$USER} fait partie de @code{$PATH}, l'utilisateur ciblé pouvait exécuter des programmes fournis par l'attaquant. Voir @uref{https://issues.guix.gnu.org/issue/37744} pour plus de détails. Cela est maintenant corrigé en laissant à @command{guix-daemon} le soin de créer ces répertoire pour le compte des utilisateurs et en supprimant les permissions en écriture pour tout le monde sur @code{per-user}. Nous te recommandons de mettre à jour le démon immédiatement. Pour cela, lance @code{sudo guix pull} si tu es sur une distro externe ou @code{guix pull && sudo guix system reconfigure @dots{}} sur le système Guix. Dans tous les cas, assure-toi ensuite de redémarrer le service avec @code{herd} ou @code{systemctl}.") (nl "Het standaard gebruikersprofiel, @file{~/.guix-profile}, verwijst naar @file{/var/guix/profiles/per-user/$USER}. Tot op heden kon om het even wie in @file{/var/guix/profiles/per-user} schrijven, wat het @command{guix}-commando toestond de @code{$USER} submap aan te maken. Op systemen met meerdere gebruikers kon hierdoor een kwaadaardige gebruiker een @code{$USER} submap met inhoud aanmaken voor een andere gebruiker die nog niet was ingelogd. Omdat @code{/var/@dots{}/$USER} zich in @code{$PATH} bevindt, kon het doelwit zo code uitvoeren die door de aanvaller zelf werd aangeleverd. Zie @uref{https://issues.guix.gnu.org/issue/37744} voor meer informatie. Dit probleem is nu verholpen: schrijven door iedereen in @code{per-user} is niet meer toegestaan en @command{guix-daemon} maakt zelf submappen aan namens de gebruiker. Op systemen met meerdere gebruikers raden we aan om @code{guix-daemon} nu bij te werken. Op Guix System kan dit met @code{guix pull && sudo guix system reconfigure @dots{}}, op andere distributies met @code{sudo guix pull}. Herstart vervolgens in beide gevallen @code{guix-daemon} met @code{herd} of @code{systemctl}."))) (entry (commit "5f3f70391809f8791c55c05bd1646bc58508fa2c") (title (en "GNU C Library upgraded") (de "GNU-C-Bibliothek aktualisiert") (es "Actualización de la biblioteca C de GNU") (fr "Mise à jour de la bibliothèque C de GNU") (nl "GNU C-bibliotheek bijgewerkt")) (body (en "The GNU C Library (glibc) has been upgraded to version 2.29. To run previously-installed programs linked against glibc 2.28, you need to install locale data for version 2.28 in addition to locale data for 2.29: @example guix install glibc-locales glibc-locales-2.28 @end example On Guix System, you can adjust the @code{locale-libcs} field of your @code{operating-system} form. Run @code{info \"(guix) Locales\"}, for more info.") (de "Die GNU-C-Bibliothek (glibc) wurde auf Version 2.29 aktualisiert. Um zuvor installierte Programme, die an glibc 2.28 gebunden worden sind, weiter benutzen zu können, müssen Sie Locale-Daten für Version 2.28 zusätzlich zu den Locale-Daten für 2.29 installieren: @example guix install glibc-locales glibc-locales-2.28 @end example Auf Guix System genügt es, das @code{locale-libcs}-Feld Ihrer @code{operating-system}-Form anzupassen. Führen Sie @code{info \"(guix.de) Locales\"} aus, um weitere Informationen dazu zu erhalten.") (es "Se ha actualizado la biblioteca de C de GNU (glibc) a la versión 2.29. Para ejecutar programas instalados previamente que se encuentren enlazados con glibc 2.28, es necesario que instale los datos de localización de la versión 2.28 junto a los datos de localización de la versión 2.29: @example guix install glibc-locales glibc-locales-2.28 @end example En el sistema Guix, puede ajustar el campo @code{locale-libcs} de su declaración @code{operating-system}. Ejecute @code{info \"(guix.es) Localizaciones\"} para obtener más información.") (fr "La bibliothèque C de GNU (glibc) a été mise à jour en version 2.29. Pour pouvoir lancer tes programmes déjà installés et liés à glibc 2.28, tu dois installer les données pour la version 2.28 en plus des données de régionalisation pour la version 2.29 : @example guix install glibc-locales glibc-locales-2.28 @end example Sur le système Guix, tu peux ajuster le champ @code{locale-libcs} de ta forme @code{operating-system}. Lance @code{info \"(guix.fr) Régionalisation\"} pour plus de détails.") (nl "De GNU C-bibliotheek (glibc) werd bijgewerkt naar versie 2.29. Om gebruik te maken van reeds geïnstalleerde programma's die aan glibc 2.28 gebonden zijn, moet u de regionale informatie van versie 2.28 naast die van versie 2.29 installeren: @example guix install glibc-locales glibc-locales-2.28 @end example Op Guix System kunt u het @code{locale-libcs}-veld van uw @code{operating-system}-vorm aanpassen. Voer @code{info \"(guix) Locales\"} uit voor verdere uitleg."))) (entry (commit "cdd3bcf03883d129581a79e6d6611b2afd3b277b") (title (en "New reduced binary seed bootstrap") (de "Neues Bootstrapping mit kleinerem Seed") (es "Nueva reducción de la semilla binaria para el lanzamiento inicial") (fr "Nouvel ensemble de binaires de bootstrap réduit") (nl "Nieuwe bootstrap met verkleinde binaire kiem")) (body (en "The package graph on x86_64 and i686 is now rooted in a @dfn{reduced set of binary seeds}. The initial set of binaries from which packages are built now weighs in at approximately 130 MiB, half of what it used to be. Run @code{info \"(guix) Bootstrapping\"} to learn more, or watch the talk at @uref{https://archive.fosdem.org/2019/schedule/event/gnumes/}.") (de "Der Paketgraph auf x86_64 und i686 hat jetzt eine @dfn{kleinere Menge an binären Seeds} als Wurzel. Das heißt, die ursprüngliche Menge an Binärdateien, aus denen heraus Pakete erstellt werden, machen nun ungefähr 130 MiB aus, halb so viel wie früher. Führen Sie @code{info \"(guix.de) Bootstrapping\"} aus, um mehr zu erfahren, oder schauen Sie sich den Vortrag auf @uref{https://archive.fosdem.org/2019/schedule/event/gnumes/} an.") (fr "Le graphe des paquets sur x86_64 et i686 prend maintenant sa source dans un @dfn{ensemble réduit de binaires}. L'ensemble initial des binaires à partir desquels les paquets sont construits pèse maintenant environ 130 Mio, soit la moitié par rapport à l'ensemble précédent. Tu peux lancer @code{info \"(guix) Bootstrapping\"} pour plus de détails, ou regarder la présentation sur @uref{https://archive.fosdem.org/2019/schedule/event/gnumes/}.") (es "El grafo de paquetes en x86_64 y i686 ahora tiene su raíz en un @dfn{conjunto reducido de semillas binarias}. El conjunto inicial de binarios desde el que se construyen los paquetes ahora tiene un tamaño aproximado de 130_MiB , la mitad de su tamaño anterior. Ejecute @code{info \"(guix.es) Lanzamiento inicial\"} para aprender más, o puede ver la charla en inglés en@uref{https://archive.fosdem.org/2019/schedule/event/gnumes/}.") (nl "Het netwerk van pakketten voor x86_64 en i686 is nu geworteld in een @dfn{verkleinde verzameling van binaire kiemen}. Die beginverzameling van binaire bestanden waaruit pakketten gebouwd worden is nu zo'n 130 MiB groot; nog maar half zo groot als voorheen. Voer @code{info \"(guix) Bootstrapping\"} uit voor meer details, of bekijk de presentatie op @uref{https://archive.fosdem.org/2019/schedule/event/gnumes/}."))) (entry (commit "dcc90d15581189dbc30e201db2b807273d6484f0") (title (en "New channel news mechanism") (de "Neuer Mechanismus, um Neuigkeiten über Kanäle anzuzeigen.") (es "Nuevo mecanismo de noticias de los canales") (fr "Nouveau mécanisme d'information sur les canaux") (nl "Nieuw mechanisme voor nieuwsberichten per kanaal")) (body (en "You are reading this message through the new channel news mechanism, congratulations! This mechanism allows channel authors to provide @dfn{news entries} that their users can view with @command{guix pull --news}. Run @command{info \"(guix) Invoking guix pull\"} for more info.") (de "Sie lesen diese Meldung mit Hilfe des neuen Mechanismus, um Neuigkeiten über Kanäle anzuzeigen — Glückwunsch! Mit diesem Mechanismus können Kanalautoren Ihren Nutzern @dfn{Einträge zu Neuigkeiten} mitteilen, die diese sich mit @command{guix pull --news} anzeigen lassen können. Führen Sie @command{info \"(guix.de) Aufruf von guix pull\"} aus, um weitere Informationen zu erhalten.") (es "Está leyendo este mensaje a través del mecanismo de noticias del canal, ¡enhorabuena! Este mecanismo permite a las autoras de canales proporcionar @dfn{entradas de noticias} que las usuarias pueden ver con @command{guix pull --news}. Ejecute @command{info \"(guix.es) Invocación de guix pull\"} para obtener más información.") (fr "Ce message t'arrive à travers le nouveau mécanisme d'information des canaux, bravo ! Ce mécanisme permet aux auteur·rice·s de canaux de fournir des informations qu'on peut visualiser avec @command{guix pull --news}. Tape @command{info \"(guix.fr) Invoquer guix pull\"} pour plus de détails.") (nl "U leest dit bericht door een nieuw mechanisme om per kanaal @dfn{nieuwsberichten} te verspreiden. Proficiat! Hiermee kunnen kanaalauteurs mededelingen uitzenden die hun gebruikers met @command{guix pull --news} kunnen lezen. Voer @command{info \"(guix) Invoking guix pull\"} uit voor meer informatie."))))