Manage KDE Plasma with Home Manager [maintainer=@HeitorAugustoLN]
See the codeThis project aims to provide Home Manager modules which allow you to configure KDE Plasma using Nix.
plasma-manager supports both plasma 5 and plasma 6. The trunk branch is the
most up-to-date branch and is mainly focused on plasma 6, but may still work on
plasma 5. If you are running plasma 5, it's recommended to use the plasma-5
branch, which is designed to have better compatibility with plasma 5. To do this
with flakes you can use "github:nix-community/plasma-manager/plasma-5" as your
flake url, or if you are using nix-channels you can set the channel url to
"https://github.com/nix-community/plasma-manager/archive/plasma-5.tar.gz". It's
worth noting that the plasma 5 branch, due to the extra work required for
maintaining, may lag behind a bit in features, but in general it should be less
broken when used with plasma 5. If you want the best experience with
plasma-manager it's recommended running plasma 6.
At the moment plasma-manager supports configuring the following:
files module)workspace module)desktop module)spectacle module)shortcuts module)hotkeys module)panels module)input module)krunner module)kscreenlocker module)fonts module)window-rules module)session module)apps module). In particular the following kde apps have
modules in plasma-manager:
Additionally there are more functionality than just listed above, and more functionality to come in the future!
There also are some things which at the moment isn't very well supported, in particular:
rc2nixCtrl+Alt+T and Print for example, see https://github.com/nix-community/plasma-manager/issues/109 and https://github.com/nix-community/plasma-manager/issues/136)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.
There are some things which are out of bounds for this project due to technical reasons. For example
home-manager module)We provide some examples to help you get started. These are located in the examples directory. Here you in particular can find:
With more to come! These should give you some idea how to get started with
plasma-manager.
Additionally, the manual section containing all the supported plasma-manager options may come in handy.
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.
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:
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.
To run the rc2nix tool without having to clone this repository run
the following shell command:
nix run github:nix-community/plasma-manager
This is a community project and we welcome all contributions. KDE plasma and its apps consists of a lot of configuration options, and if you find that some options are missing and have the skills to implement this, PRs are very welcome. Issues are also welcome for everything from feature-requests to bug-reports or just general suggestions for improving the project.
plasma-manager started off it's development under
pjones, whose contributions have laid the
foundation of the project to this day. The project was otherwise inspired by the
suggestions on Home Manager Issue
#607 by people such as bew and
kurnevsky. Thank you.
(top 24 of 44)
835 followers · starred Jan 2026
136 followers · starred Jan 2023
64 followers · starred Mar 2025
119 followers · starred Dec 2022
Nix
92.1%
Python
5.7%
Ruby
1.7%
Manage KDE Plasma with Home Manager [maintainer=@HeitorAugustoLN]
See the codeThis project aims to provide Home Manager modules which allow you to configure KDE Plasma using Nix.
plasma-manager supports both plasma 5 and plasma 6. The trunk branch is the
most up-to-date branch and is mainly focused on plasma 6, but may still work on
plasma 5. If you are running plasma 5, it's recommended to use the plasma-5
branch, which is designed to have better compatibility with plasma 5. To do this
with flakes you can use "github:nix-community/plasma-manager/plasma-5" as your
flake url, or if you are using nix-channels you can set the channel url to
"https://github.com/nix-community/plasma-manager/archive/plasma-5.tar.gz". It's
worth noting that the plasma 5 branch, due to the extra work required for
maintaining, may lag behind a bit in features, but in general it should be less
broken when used with plasma 5. If you want the best experience with
plasma-manager it's recommended running plasma 6.
At the moment plasma-manager supports configuring the following:
files module)workspace module)desktop module)spectacle module)shortcuts module)hotkeys module)panels module)input module)krunner module)kscreenlocker module)fonts module)window-rules module)session module)apps module). In particular the following kde apps have
modules in plasma-manager:
Additionally there are more functionality than just listed above, and more functionality to come in the future!
There also are some things which at the moment isn't very well supported, in particular:
rc2nixCtrl+Alt+T and Print for example, see https://github.com/nix-community/plasma-manager/issues/109 and https://github.com/nix-community/plasma-manager/issues/136)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.
There are some things which are out of bounds for this project due to technical reasons. For example
home-manager module)We provide some examples to help you get started. These are located in the examples directory. Here you in particular can find:
With more to come! These should give you some idea how to get started with
plasma-manager.
Additionally, the manual section containing all the supported plasma-manager options may come in handy.
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.
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:
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.
To run the rc2nix tool without having to clone this repository run
the following shell command:
nix run github:nix-community/plasma-manager
This is a community project and we welcome all contributions. KDE plasma and its apps consists of a lot of configuration options, and if you find that some options are missing and have the skills to implement this, PRs are very welcome. Issues are also welcome for everything from feature-requests to bug-reports or just general suggestions for improving the project.
plasma-manager started off it's development under
pjones, whose contributions have laid the
foundation of the project to this day. The project was otherwise inspired by the
suggestions on Home Manager Issue
#607 by people such as bew and
kurnevsky. Thank you.
(top 24 of 44)
835 followers · starred Jan 2026
136 followers · starred Jan 2023
64 followers · starred Mar 2025
119 followers · starred Dec 2022
Nix
92.1%
Python
5.7%
Ruby
1.7%