plasma-manager/README.md

107 lines
4.9 KiB
Markdown
Raw Normal View History

2022-06-25 02:04:00 +03:00
# Manage KDE Plasma with Home Manager
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.
## 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
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
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