In conjunction with the default SwapUsedLimit value of 90%, we almost
never actually OOM, and instead freeze.
Reduce the time-based condition from 30 seconds to 10 so we OOM faster
in a true swap exhaustion situation. 30 seconds is so long the user may
force-restart the system, risking damage to the disk.
- Cap default log file space usage at 500 MB, down from 4 GB (no normal
person cares about having this many logs more than their own files)
- Don't log spammy debug and info messages in Qt software by default
- Wrap long lines in `journalctl` output so you can actually see them,
and copy them for debugging elsewhere
Right now we use very aggressive settings, over-provisioning zram to
200% of the physical RAM in an attempt to effectively double the memory.
Unfortunately this doesn't work for a few reasons:
1. Not all memory is compressible.
2. Not preserving enough uncompressed working memory causes frezes and
stalls even when zram doesn't look full.
3. Such a large zram size means systemd's OOM killer never thinks the
system is close to running of memory even when it's frozen due to 1
and 2.
Helps with #552
Ultimately we need a facility to download all the others as needed. For
now at least include en_us, same as we did for Tesseract which also
requires at least one language package to work.
Resolves#385
We don't need both hunspell and aspell; both do the same thing. Hunspell
appears to be much more actively maintained and also more widely used
(Firefox and LibreOffice, for example), so let's keep it and ditch
aspell.
This is only for Hebrew, and we generally aren't including
non-English single-language-specific packages right now. For example we
don't include grammalecte which is only for French, or voikko for
Finnish.
This will be a part of the "how do I download missing components?"
story later.
Found while auditing our dependencies. We generally follow the rule to
pre-install optional dependencies (where it makes sense), so include
these.
They're all tiny, so this increases the image by only a few megabytes.
Everything in here is a runtime dependency of KDE software, a hardware
enablement package, or a discretionary userspace CLI tool. Move it all
to the files for those things.
We default to lz4 which is mega fast but doesn't have the best
compression. We can get closer to having the best of both worlds by
telling the zram config to fall back to zstd for any huge pages that
lz4 couldn't compress. zstd's default level is slower but has great
compression, so it's quite suitable for this purpose.
We already set a few realtime-friendly settings in /etc/security and
/usr/lib/systemd, but these are not enough for truly realtime workflows
like audio creation. For these they also need adequate defaults for the
`rtprio` and `nice` values.
Arch's `realtime-privileges` package lays down a config file that gives
these to users in the "realtime" group. We don't put new users in that
group because not every user will need it, but we can at least write
some documentation around the topic.
It's so commonly used by experts and power users (e.g. cloning random
github repos) that it's graduated to being a general-purpose tool these
days.
This has no effect right now, but will result in us keeping git in the
base image should we ever move the dev tools into an on-demand extension
or something.
Many AMD systems are affected by a total system freeze that requires a
hard reboot. This is reported upstream at
https://gitlab.freedesktop.org/drm/amd/-/issues/4831 (and others; they
haven't been properly triaged and merged into one).
It's been going on for months with no fix in sight. Given the severity
of the issue, work around it by setting `amdgpu.dcdebugmask=0x10` in
the kernel command line, which disables panel self-refresh. The
consequence will be slightly higher power usage, but this seems worth
it to avoid system freezes and hard reboots.
This merge requests contains some changes to zsh configuration files:
* `/etc/skel/.zshrc` now checks if `/usr/share/zsh/plugins/kde-linux-default/kde-linux-default-zshrc.zsh` exists before sourcing it. This is useful to avoid error messages when user create a container that shares the home directory
* I have added key binding for **Page Up** and **Page down** to scroll through commands that start with user has currently typed. This is default behaviour in bash (at least in some distro, such as fedora), and I personally think it can be very useful
* I have added a key binding for **Control+Delete** to delete the next word
* I have slightly **modified zsh prompt** to make the current location path be colored in cyan, and when truncated, now it adds a `…/` prefix, to make it obvious the path was truncated
* I have **disabled tab cycling** through completion suggestions. This would imitate the default behavior in bash, and I personally think it's more ergonomic. For example, who hasn't pressed tab multiple times because the completion is being slow, and in bash it's ok because the prompt hasn't changed, but in zsh or fish this means that you are getting a completion that might not have been the one you intended, and now you need to undo that.
* I have **added a few aliases**, to make ls and grep have colored output by default, and to add ll, la, lla as shortcuts for useful ls commands (those are all aliases that debian based distros such as ubuntu have in their bashrc files)
Basically we'll set `flatpak config --set languages "*"` which should allow Flatpak to download every language pack available into the image. This should allow translated Flatpak apps on non-english systems.
Fixes#500
This adds some more package-managers to the command-not-found handler and
adds a way to detect if two or more missing commands belong to the same
program.