Nix configuration options generated directly from Niri
Add ciri to your flake inputs:
ciri.url = "github:myume/ciri";Make sure to import the home manager modules in your config:
imports = [ inputs.ciri.homeManagerModules.default ];and set up your Niri config in the settings
{
programs.ciri = {
enable = true;
settings = {
...
}
}
}You can view the documentation here. For more information on each option, you can visit the niri wiki. The name of the options should generally mirror the niri ones 1:1.
To look up options types directly, see the types file.
The config type contains all options that you can pass to the settings option.
You can also see the example-config for more info on how configure the options.
The niri configuration options are generated by the complementing rust program. It parses the options from upstream niri repo automatically. The types are automatically updated weekly by a github actions workflow.
To regenerate the types you can run
ciriThis will clone the repo under /tmp/niri by default.
Note: that the program doesn't clean up the repo by default. To cleanup, make
sure to pass the --cleanup flag.
You can reclone the repo with the clean flag.
ciri --cleanTo use a specific version/branch of niri you can pass in the -b or --branch
flag. This will clone the repo at that version, and generate types accordingly.
ciri --branch 'v25.11'The main branch of this repo will target niri/main.
For more options see ciri --help
This flake uses a best effort approach to translate Nix options to KDL. There are bound to be edge cases that aren't handled since Nix attrsets doesn't map to KDL nicely.
We use overrides to fix and adjust options that aren't quite right. I'm fixing these issues as I run into them, so whatever options I use in my config probably work, but outside of that, there might be issues.
If you notice that the kdl config generation is wrong, feel free to file an issue or open a PR with an override.