nix/hm: move environment to systemd.environment + refactor (#551)

* nix/hm: environment moved to systemd.environment

* nix/hm: change systemd default target

Follow the home-manager convention for wayland systemd services

* nix/hm: refactor

* readme: refactor configuring section

* readme: fix format

* format

---------

Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
This commit is contained in:
Davi Ribeiro 2025-09-03 09:03:01 -03:00 committed by GitHub
parent 6e775a1a0e
commit fb9c6d4950
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 57 additions and 51 deletions

View file

@ -67,7 +67,7 @@ or a devshell. The shell can then be run via `caelestia-shell`.
> The default package does not have the CLI enabled by default, which is required for full funcionality. > The default package does not have the CLI enabled by default, which is required for full funcionality.
> To enable the CLI, use the `with-cli` package. > To enable the CLI, use the `with-cli` package.
For home-manager, you can also use the Caelestia's home manager module (explained in [configuring](https://github.com/caelestia-dots/shell?tab=readme-ov-file#configuring)) that installs and configures the shell and the CLI. For home-manager, you can also use the Caelestia's home manager module (explained in [configuring](https://github.com/caelestia-dots/shell?tab=readme-ov-file#home-manager-module)) that installs and configures the shell and the CLI.
### Manual installation ### Manual installation
@ -206,43 +206,14 @@ git pull
All configuration options should be put in `~/.config/caelestia/shell.json`. This file is _not_ created by All configuration options should be put in `~/.config/caelestia/shell.json`. This file is _not_ created by
default, you must create it manually. default, you must create it manually.
For NixOS users, a home manager module is also available. ### Example configuration
<details><summary><code>home.nix</code></summary>
```nix
programs.caelestia = {
enable = true;
systemd = {
enable = false; # if you prefer starting from your compositor
target = "graphical-session.target";
};
settings = {
bar.status = {
showBattery = false;
};
paths.wallpaperDir = "~/Images";
};
environment = [];
cli = {
enable = true; # Also add caelestia-cli to path
settings = {
theme.enableGtk = false;
};
};
};
```
The module automatically adds Caelestia shell to the path with **full functionality**. The CLI is not required, however you have the option to enable and configure it.
</details>
> [!NOTE] > [!NOTE]
> The example configuration only includes recommended configuration options. For more advanced customisation > The example configuration only includes recommended configuration options. For more advanced customisation
> such as modifying the size of individual items or changing constants in the code, there are some other > such as modifying the size of individual items or changing constants in the code, there are some other
> options which can be found in the source files in the `config` directory. > options which can be found in the source files in the `config` directory.
<details><summary>Example configuration</summary> <details><summary>Example</summary>
```json ```json
{ {
@ -420,9 +391,7 @@ The module automatically adds Caelestia shell to the path with **full functional
"audioIncrement": 0.1, "audioIncrement": 0.1,
"defaultPlayer": "Spotify", "defaultPlayer": "Spotify",
"gpuType": "", "gpuType": "",
"playerAliases": [ "playerAliases": [{ "from": "com.github.th_ch.youtube_music", "to": "YT Music" }],
{ "from": "com.github.th_ch.youtube_music", "to": "YT Music" }
],
"weatherLocation": "", "weatherLocation": "",
"useFahrenheit": false, "useFahrenheit": false,
"useTwelveHourClock": false, "useTwelveHourClock": false,
@ -444,6 +413,39 @@ The module automatically adds Caelestia shell to the path with **full functional
</details> </details>
### Home Manager Module
For NixOS users, a home manager module is also available.
<details><summary><code>home.nix</code></summary>
```nix
programs.caelestia = {
enable = true;
systemd = {
enable = false; # if you prefer starting from your compositor
target = "graphical-session.target";
environment = [];
};
settings = {
bar.status = {
showBattery = false;
};
paths.wallpaperDir = "~/Images";
};
cli = {
enable = true; # Also add caelestia-cli to path
settings = {
theme.enableGtk = false;
};
};
};
```
The module automatically adds Caelestia shell to the path with **full functionality**. The CLI is not required, however you have the option to enable and configure it.
</details>
## FAQ ## FAQ
### My screen is flickering, help pls! ### My screen is flickering, help pls!
@ -499,7 +501,7 @@ which helped me a lot with learning how to use Quickshell.
Finally another thank you to all the configs I took inspiration from (only one for now): Finally another thank you to all the configs I took inspiration from (only one for now):
- [Axenide/Ax-Shell](https://github.com/Axenide/Ax-Shell) - [Axenide/Ax-Shell](https://github.com/Axenide/Ax-Shell)
## Stonks 📈 ## Stonks 📈

View file

@ -11,6 +11,9 @@ self: {
cfg = config.programs.caelestia; cfg = config.programs.caelestia;
in { in {
imports = [
(lib.mkRenamedOptionModule ["programs" "caelestia" "environment"] ["programs" "caelestia" "systemd" "environment"])
];
options = with lib; { options = with lib; {
programs.caelestia = { programs.caelestia = {
enable = mkEnableOption "Enable Caelestia shell"; enable = mkEnableOption "Enable Caelestia shell";
@ -30,7 +33,15 @@ in {
description = '' description = ''
The systemd target that will automatically start the Caelestia shell. The systemd target that will automatically start the Caelestia shell.
''; '';
default = "graphical-session.target"; default = config.wayland.systemd.target;
};
environment = mkOption {
type = types.listOf types.str;
description = "Extra Environment variables to pass to the Caelestia shell systemd service.";
default = [];
example = [
"QT_QPA_PLATFORMTHEME=gtk3"
];
}; };
}; };
settings = mkOption { settings = mkOption {
@ -43,14 +54,6 @@ in {
default = ""; default = "";
description = "Caelestia shell extra configs written to shell.json"; description = "Caelestia shell extra configs written to shell.json";
}; };
environment = mkOption {
type = types.listOf types.str;
description = "Extra Environment variables to pass to the Caelestia shell systemd service.";
default = [ ];
example = [
"QT_QPA_PLATFORMTHEME=gtk3"
];
};
cli = { cli = {
enable = mkEnableOption "Enable Caelestia CLI"; enable = mkEnableOption "Enable Caelestia CLI";
package = mkOption { package = mkOption {
@ -73,8 +76,8 @@ in {
}; };
config = let config = let
cli = cfg.cli.package or cli-default; cli = cfg.cli.package;
shell = cfg.package or shell-default; shell = cfg.package;
in in
lib.mkIf cfg.enable { lib.mkIf cfg.enable {
systemd.user.services.caelestia = lib.mkIf cfg.systemd.enable { systemd.user.services.caelestia = lib.mkIf cfg.systemd.enable {
@ -93,10 +96,11 @@ in {
Restart = "on-failure"; Restart = "on-failure";
RestartSec = "5s"; RestartSec = "5s";
TimeoutStopSec = "5s"; TimeoutStopSec = "5s";
Environment = [ Environment =
"QT_QPA_PLATFORM=wayland" [
] "QT_QPA_PLATFORM=wayland"
++ cfg.environment; ]
++ cfg.systemd.environment;
Slice = "session.slice"; Slice = "session.slice";
}; };