2022-06-25 02:04:00 +03:00
|
|
|
# Manage KDE Plasma with Home Manager
|
|
|
|
|
2023-11-14 01:48:11 +03:00
|
|
|
This project aims to provide [Home Manager][home-manager] modules which allow you
|
2022-06-25 02:04:00 +03:00
|
|
|
to configure KDE Plasma using Nix.
|
|
|
|
|
2024-04-01 00:29:18 +03:00
|
|
|
## Table of contents
|
|
|
|
- [What's supported](#whats-supported)
|
|
|
|
- [What's not supported](#whats-not-well-supported-at-the-moment)
|
|
|
|
- [Getting started](#getting-started)
|
|
|
|
- [Enabling declarative configuration](#make-your-configuration-more-declarative-with-overrideconfig)
|
|
|
|
- [Capturing existing configuration](#capturing-your-current-configuration-with-rc2nix)
|
|
|
|
- [Contributions and maintenance](#contributions-and-maintenance)
|
|
|
|
- [Special thanks](#special-thanks)
|
|
|
|
|
|
|
|
## What's supported
|
|
|
|
At the moment `plasma-manager` supports configuring the following:
|
|
|
|
- KDE configuration files (via the `files` module)
|
|
|
|
- Global themes, colorschemes, icons, cursortheme, wallpaper (via the `workspace` module)
|
|
|
|
- Configuration of spectacle (via the `spectacle` module)
|
|
|
|
- Shortcuts (via the `shortcuts` module)
|
|
|
|
- Hotkeys (via the `hotkeys` module)
|
|
|
|
- Panels (via the `panels` module)
|
|
|
|
- KDE apps (via the `apps` module). In particular the following kde apps have
|
|
|
|
modules in `plasma-manager`:
|
|
|
|
- kate
|
|
|
|
- konsole
|
|
|
|
|
|
|
|
Additionally there are more functionality than just listed above, and more
|
|
|
|
functionality to come in the future!
|
|
|
|
|
|
|
|
## What's not well supported (at the moment)
|
|
|
|
There also are some things which at the moment isn't very well supported, in
|
|
|
|
particular:
|
|
|
|
- Real-time updates of configuration without having to log out and back in
|
|
|
|
- Configuration of LibInput devices (see https://github.com/pjones/plasma-manager/issues/47)
|
|
|
|
- Usage of high-level modules in the configuration generated by `rc2nix`
|
|
|
|
|
|
|
|
There may also be more things we aren't aware of. If you find some other
|
|
|
|
limitations don't hesitate to open an issue or submit a pr.
|
|
|
|
|
|
|
|
## Getting started
|
|
|
|
We provide some examples to help you get started. These are located in the
|
|
|
|
[examples](./examples/) directory. Here you in particular can find:
|
|
|
|
- [An example flake.nix for usage with home-manager only](./examples/homeManagerFlake//flake.nix)
|
|
|
|
- [An example flake.nix for usage with the system configuration](./examples/systemFlake/flake.nix)
|
|
|
|
- [An example home.nix showing some of the capabilities of plasma-manager](./examples/home.nix)
|
|
|
|
|
|
|
|
With more to come! These should give you some idea how to get started with
|
|
|
|
`plasma-manager`.
|
|
|
|
|
|
|
|
## Make your configuration more declarative with overrideConfig
|
|
|
|
By default `plasma-manager` will simply write the specified configurations to
|
|
|
|
various config-files and leave all other options alone. This way settings not
|
|
|
|
specified in `plasma-manager` will be left alone, meaning that configurations
|
|
|
|
made outside `plasma-manager` will still be set. This can lead to different
|
|
|
|
settings on different machines even with the same `plasma-manager`
|
|
|
|
configuration. If you like a declarative approach better consider enabling
|
|
|
|
`overrideConfig`. This makes it so all options not set by `plasma-manager` will
|
|
|
|
be set to the default on login. In practice this then becomes a declarative
|
|
|
|
setup, much like what you would expect from most `home-manager` options/modules.
|
|
|
|
|
|
|
|
One thing to keep in mind is that enabling this option will delete all the KDE
|
|
|
|
config-files on `home-manager` activation, and replace them with config-files
|
|
|
|
generated by `plasma-manager`. Therefore make sure you backup your KDE
|
|
|
|
config-files before enabling this option if you don't want to lose them.
|
|
|
|
|
|
|
|
## Capturing Your Current Configuration with rc2nix
|
|
|
|
|
|
|
|
To make it easier to migrate to `plasma-manager`, and to help maintain your Nix
|
|
|
|
configuration when not using `overrideConfig`, this project includes a tool
|
|
|
|
called `rc2nix`.
|
|
|
|
|
|
|
|
This tool will read KDE configuration files and translate them to Nix. The
|
|
|
|
translated configuration is written to standard output. This makes it easy to:
|
|
|
|
|
|
|
|
- Generate an initial Plasma Manager configuration file.
|
|
|
|
- See what settings are changed by a GUI tool by capturing a file
|
|
|
|
before and after using the tool and then using `diff`.
|
|
|
|
|
|
|
|
Keep in mind that the `rc2nix` module isn't perfect and often will give somewhat
|
|
|
|
suboptimal configurations (it will in some cases prefer using the `files` module
|
|
|
|
when better configurations can be achieved using higher-level modules). However,
|
|
|
|
it is still a useful tool to quickly get your configuration up and running or
|
|
|
|
converting config-files generated by the gui settings app to nix expressions.
|
2022-06-25 02:04:00 +03:00
|
|
|
|
|
|
|
To run the `rc2nix` tool without having to clone this repository run
|
|
|
|
the following shell command:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
nix run github:pjones/plasma-manager
|
|
|
|
```
|
|
|
|
|
|
|
|
## Contributions and Maintenance
|
|
|
|
|
2024-04-01 00:29:18 +03:00
|
|
|
This is a community project and we welcome all contributions. If there's enough
|
|
|
|
interest we would love to move this into [nix-community] once it has matured.
|
2022-06-25 02:04:00 +03:00
|
|
|
|
|
|
|
## Special Thanks
|
|
|
|
|
2024-04-01 00:29:18 +03:00
|
|
|
This work was inspired by the suggestions on [Home Manger Issue #607][hm607] by
|
|
|
|
people such as [bew](https://github.com/bew) and
|
|
|
|
[kurnevsky](https://github.com/kurnevsky). Thank you.
|
2022-06-25 02:04:00 +03:00
|
|
|
|
|
|
|
[home-manager]: https://github.com/nix-community/home-manager
|
|
|
|
[hm607]: https://github.com/nix-community/home-manager/issues/607
|
|
|
|
[nix-community]: https://github.com/nix-community
|