mirror of
https://github.com/nix-community/home-manager
synced 2024-12-22 09:49:47 +01:00
xfconf: add module
This commit is contained in:
parent
04e844090e
commit
916811c8f9
4 changed files with 113 additions and 0 deletions
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
|
@ -59,6 +59,8 @@ Makefile @thiagokokada
|
||||||
/tests/modules/misc/xdg/desktop-full-expected.desktop @cwyc
|
/tests/modules/misc/xdg/desktop-full-expected.desktop @cwyc
|
||||||
/tests/modules/misc/xdg/desktop-min-expected.desktop @cwyc
|
/tests/modules/misc/xdg/desktop-min-expected.desktop @cwyc
|
||||||
|
|
||||||
|
/modules/misc/xfconf.nix @chuangzhu
|
||||||
|
|
||||||
/modules/programs/aerc.nix @lukasngl
|
/modules/programs/aerc.nix @lukasngl
|
||||||
/modules/programs/aerc-accounts.nix @lukasngl
|
/modules/programs/aerc-accounts.nix @lukasngl
|
||||||
/tests/modules/programs/aerc @lukasngl
|
/tests/modules/programs/aerc @lukasngl
|
||||||
|
|
|
@ -807,6 +807,14 @@ in
|
||||||
A new module is available: 'programs.oh-my-posh'.
|
A new module is available: 'programs.oh-my-posh'.
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
time = "2022-11-02T10:56:14+00:00";
|
||||||
|
condition = hostPlatform.isLinux;
|
||||||
|
message = ''
|
||||||
|
A new module is available: 'xfconf'.
|
||||||
|
'';
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
102
modules/misc/xfconf.nix
Normal file
102
modules/misc/xfconf.nix
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
cfg = config.xfconf;
|
||||||
|
|
||||||
|
withType = v:
|
||||||
|
if builtins.isBool v then [
|
||||||
|
"-t"
|
||||||
|
"bool"
|
||||||
|
"-s"
|
||||||
|
(if v then "true" else "false")
|
||||||
|
] else if builtins.isInt v then [
|
||||||
|
"-t"
|
||||||
|
"int"
|
||||||
|
"-s"
|
||||||
|
(toString v)
|
||||||
|
] else if builtins.isFloat v then [
|
||||||
|
"-t"
|
||||||
|
"double"
|
||||||
|
"-s"
|
||||||
|
(toString v)
|
||||||
|
] else if builtins.isString v then [
|
||||||
|
"-t"
|
||||||
|
"string"
|
||||||
|
"-s"
|
||||||
|
v
|
||||||
|
] else if builtins.isList v then
|
||||||
|
[ "-a" ] ++ concatMap withType v
|
||||||
|
else
|
||||||
|
throw "unexpected xfconf type: ${builtins.typeOf v}";
|
||||||
|
|
||||||
|
in {
|
||||||
|
meta.maintainers = [ maintainers.chuangzhu ];
|
||||||
|
|
||||||
|
options.xfconf = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
visible = false;
|
||||||
|
description = ''
|
||||||
|
Whether to enable Xfconf settings.
|
||||||
|
</para><para>
|
||||||
|
Note, if you use NixOS then you must add
|
||||||
|
<code>programs.xfconf.enable = true</code>
|
||||||
|
to your system configuration. Otherwise you will see a systemd error
|
||||||
|
message when your configuration is activated.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = mkOption {
|
||||||
|
type = with types;
|
||||||
|
attrsOf (attrsOf (oneOf [
|
||||||
|
bool
|
||||||
|
int
|
||||||
|
float
|
||||||
|
str
|
||||||
|
(listOf (oneOf [ bool int float str ]))
|
||||||
|
])) // {
|
||||||
|
description = "xfconf settings";
|
||||||
|
};
|
||||||
|
default = { };
|
||||||
|
example = literalExpression ''
|
||||||
|
{
|
||||||
|
xfce4-session = {
|
||||||
|
"startup/ssh-agent/enabled" = false;
|
||||||
|
"general/LockCommand" = "''${pkgs.lightdm}/bin/dm-tool lock";
|
||||||
|
};
|
||||||
|
xfce4-desktop = {
|
||||||
|
"backdrop/screen0/monitorLVDS-1/workspace0/last-image" =
|
||||||
|
"''${pkgs.nixos-artwork.wallpapers.stripes-logo.gnomeFilePath}";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Settings to write to the Xfconf configuration system.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (cfg.enable && cfg.settings != { }) {
|
||||||
|
assertions =
|
||||||
|
[ (hm.assertions.assertPlatform "xfconf" pkgs platforms.linux) ];
|
||||||
|
|
||||||
|
home.activation.xfconfSettings = hm.dag.entryAfter [ "installPackages" ]
|
||||||
|
(let
|
||||||
|
mkCommand = channel: property: value: ''
|
||||||
|
$DRY_RUN_CMD ${pkgs.xfce.xfconf}/bin/xfconf-query \
|
||||||
|
${
|
||||||
|
escapeShellArgs
|
||||||
|
([ "-n" "-c" channel "-p" "/${property}" ] ++ withType value)
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
commands = mapAttrsToList
|
||||||
|
(channel: properties: mapAttrsToList (mkCommand channel) properties)
|
||||||
|
cfg.settings;
|
||||||
|
in concatMapStrings concatStrings commands);
|
||||||
|
};
|
||||||
|
}
|
|
@ -43,6 +43,7 @@ let
|
||||||
./misc/xdg-system-dirs.nix
|
./misc/xdg-system-dirs.nix
|
||||||
./misc/xdg-user-dirs.nix
|
./misc/xdg-user-dirs.nix
|
||||||
./misc/xdg.nix
|
./misc/xdg.nix
|
||||||
|
./misc/xfconf.nix
|
||||||
./programs/abook.nix
|
./programs/abook.nix
|
||||||
./programs/aerc.nix
|
./programs/aerc.nix
|
||||||
./programs/afew.nix
|
./programs/afew.nix
|
||||||
|
|
Loading…
Reference in a new issue