IDE's like PyCharm work better when fs.inotify.max_user_watches is set to a high level. How to do that in GUIX?
I recall that the approach by Draketo used to work up to a few months ago: 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")))))
in config.scm.
E.g. this minimal 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)))
will give this error when using guix system build -n config.scm:
error: sysctl-service-type: unbound variable
hint: Did you forget `(use-modules (gnu services sysctl))'?
However, adding that line to the top:
(use-modules (gnu))
(use-service-modules desktop xorg)
(use-modules (gnu services sysctl))
(operating-system
...
or this
(use-modules (gnu))
(use-service-modules desktop xorg sysctl)
(operating-system
...
will lead to this error:
guix system: error: service 'sysctl' provided more than once
Guix is recent:
$ guix -V
guix (GNU Guix) 1b6e7157cd30ffc2b29779fe6d5cb4ddbbc6f331
Edit:
Possibly related bug report: " [PATCH] gnu: Harden filesystem links." https://debbugs.gnu.org/cgi/bugreport.cgi?bug=47013
Possibly related email thread: "How to compose sysctl-service-type?" https://lists.gnu.org/archive/html/help-guix/2021-03/msg00066.html
Apparently outdated documentation: https://guix.gnu.org/manual/en/html_node/Miscellaneous-Services.html#Miscellaneous-Services which has this broken(?) example
(service sysctl-service-type
(sysctl-configuration
(settings '(("net.ipv4.ip_forward" . "1")))))
There is newer documentation https://git.savannah.gnu.org/cgit/guix.git/tree/doc/guix.texi with these instructions:
Since
sysctl-service-typeis used in the default lists of services,%base-servicesand%desktop-services, you can usemodify-servicesto change its configuration and add the kernel parameters that you want.
with this example
(modify-services %base-services
(sysctl-service-type config =>
(sysctl-configuration
(settings (append '(("net.ipv4.ip_forward" . "1"))
%default-sysctl-settings)))))
However it is unclear to me where to put that. Putting it after the services definition gives this error:
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