Как установить sysctl fs.notify.max_user_watches в GUIX? (система guix: ошибка: служба «sysctl» предоставлена ​​более одного раза)

IDE, такие как PyCharm, работают лучше, когдаfs.inotify.max_user_watchesустановлен на высоком уровне. Как это сделать в GUIX?

Я помню, что подход Draketo работал еще несколько месяцев назад: https://www.draketo.de/software/guix-config.html

                   (service sysctl-service-type
                      (sysctl-configuration
                       (settings '(("fs.file-max" . "500000")
                                   ("fs.inotify.max_user_watches" . "524288")))))

в .

Например, этот минимальныйconfig.scm

      (use-modules (gnu))
(use-service-modules desktop xorg)

(operating-system
  (locale "en_US.utf8")
  (timezone "Europe/Amsterdam")
  (keyboard-layout
    (keyboard-layout "us" "us-intl"))
  (host-name "abcd")
  (services
    (append
      (list (service gnome-desktop-service-type)
             (service sysctl-service-type
                      (sysctl-configuration
                       (settings '(("fs.file-max" . "500000")
                                   ("fs.inotify.max_user_watches" . "524288")))))
      )
      %desktop-services))
  (bootloader
    (bootloader-configuration
      (bootloader grub-efi-bootloader)
      (target "/boot/efi")
      (keyboard-layout keyboard-layout)))
  (file-systems
    (cons* (file-system
             (mount-point "/")
             (device
               (uuid "11111111-1111-1111-1111-111111111111"
                     'btrfs))
             (type "btrfs"))
           (file-system
             (mount-point "/boot/efi")
             (device (uuid "1111-1111" 'fat32))
             (type "vfat"))
           %base-file-systems)))

выдаст эту ошибку при использованииguix system build -n config.scm:

      error: sysctl-service-type: unbound variable
hint: Did you forget `(use-modules (gnu services sysctl))'?

Однако добавив эту строку вверху:

      (use-modules (gnu))
(use-service-modules desktop xorg)
(use-modules (gnu services sysctl))
(operating-system
...

или это

      (use-modules (gnu))
(use-service-modules desktop xorg sysctl)
(operating-system
...

приведет к этой ошибке:

      guix system: error: service 'sysctl' provided more than once

Гикс недавно:

      $ guix -V
guix (GNU Guix) 1b6e7157cd30ffc2b29779fe6d5cb4ddbbc6f331

Редактировать:

Возможно, связанный с этим отчет об ошибке: «[ИСПРАВЛЕНИЕ] gnu: усиление ссылок на файловую систему». https://debbugs.gnu.org/cgi/bugreport.cgi?bug=47013

Возможно, связанная ветка электронной почты: «Как составить тип sysctl-service?» https://lists.gnu.org/archive/html/help-guix/2021-03/msg00066.html

Очевидно устаревшая документация: https://guix.gnu.org/manual/en/html_node/Miscellaneous-Services.html#Miscellaneous-Services , в которой есть этот сломанный (?) пример.

      (service sysctl-service-type
         (sysctl-configuration
           (settings '(("net.ipv4.ip_forward" . "1")))))

Существует более новая документация https://git.savannah.gnu.org/cgit/guix.git/tree/doc/guix.texi со следующими инструкциями:

Сsysctl-service-typeиспользуется в списках служб по умолчанию,%base-servicesи%desktop-services, вы можете использоватьmodify-servicesчтобы изменить его конфигурацию и добавить нужные параметры ядра.

с этим примером

      (modify-services %base-services
  (sysctl-service-type config =>
                       (sysctl-configuration
                         (settings (append '(("net.ipv4.ip_forward" . "1"))
                                           %default-sysctl-settings)))))

Однако мне неясно, куда это положить. Поставив его послеservicesопределение дает эту ошибку:

      error: (modify-services %base-services (sysctl-service-type config => (sysctl-configuration (settings (append (quote (("net.ipv4.ip_forward" . "1"))) %default-sysctl-settings))))): invalid field specifier
      

0 ответов

Другие вопросы по тегам