nixos-config/home/modules/cosmic/default.nix

53 lines
1.3 KiB
Nix

{ config, lib, ... }:
# Based on:
# https://github.com/tristanbeedell/home-manager/tree/efa4d272f6c2b14d4a3b67b0b1e4b38ae46e5588/modules/programs/cosmic
let
cfg = config.programs.cosmic;
ron = import ./ron.nix { inherit lib; };
in
{
imports = [ ./settings.nix ];
options.programs.cosmic = {
enable = lib.mkEnableOption "COSMIC Desktop";
settings = lib.mkOption {
default = { };
type = lib.types.submodule {
freeformType = lib.types.submodule {
freeformType = lib.types.attrsOf lib.types.anything;
};
};
description = ''
An attrset of explicit settings for COSMIC apps, using their full config path.
'';
example = lib.literalExpression ''
{
"com.system76.CosmicPanel.Dock".v1 = {
opacity = 0.8;
};
};
'';
};
};
config = lib.mkIf cfg.enable {
xdg.configFile = lib.concatMapAttrs (
component:
lib.concatMapAttrs (
version:
lib.concatMapAttrs (
option: value:
lib.optionalAttrs (value != null) {
"cosmic/${component}/${version}/${option}" = {
enable = true;
text = ron.serialise value;
};
}
)
)
) cfg.settings;
};
}