refactor(modules): declare swayDesktop feature flag in a base module
lyrathorpe/user.nix reads features.swayDesktop.enable on every host, but the option was declared inside lyrathorpe/swaywm.nix -- so a host that does not import swaywm.nix (a headless server) would fail evaluation. Move the option declaration to a new always-imported system/modules/features.nix and wire it into baseModules; swaywm.nix keeps only its implementation (config) block. Headless hosts can now omit swaywm.nix and the flag defaults to false.
This commit is contained in:
@@ -114,6 +114,7 @@
|
|||||||
baseModules = [
|
baseModules = [
|
||||||
./lyrathorpe/user.nix
|
./lyrathorpe/user.nix
|
||||||
./system/modules/common-nixos.nix
|
./system/modules/common-nixos.nix
|
||||||
|
./system/modules/features.nix
|
||||||
commonModule
|
commonModule
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ let
|
|||||||
ctp = import ./catppuccin-mocha.nix;
|
ctp = import ./catppuccin-mocha.nix;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
# The features.swayDesktop.enable option is declared in
|
||||||
features.swayDesktop.enable = lib.mkEnableOption "Enable Sway Desktop";
|
# system/modules/features.nix (so headless hosts can read/set it without
|
||||||
};
|
# importing this module). This module only provides its implementation.
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
programs.sway = {
|
programs.sway = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Feature-flag option declarations shared by every NixOS host (imported via
|
||||||
|
# baseModules in flake.nix). Declaring the flags here -- rather than inside the
|
||||||
|
# module that implements them -- means a host can read or set a flag without
|
||||||
|
# importing the (often large) implementation module. In particular,
|
||||||
|
# features.swayDesktop.enable is read by lyrathorpe/user.nix on every host, but a
|
||||||
|
# headless host (e.g. the Pi) must be able to leave it at its default without
|
||||||
|
# pulling in lyrathorpe/swaywm.nix. The implementation lives in swaywm.nix,
|
||||||
|
# gated on this flag.
|
||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
options.features.swayDesktop.enable = lib.mkEnableOption "the Sway desktop";
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user