mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 11:36:05 +01:00
105 lines
3.2 KiB
Nix
105 lines
3.2 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
|
|
let
|
|
cfg = config.programs.desktoppr;
|
|
in
|
|
|
|
{
|
|
options.programs.desktoppr = {
|
|
enable = lib.mkEnableOption "managing the desktop picture/wallpaper on macOS using desktoppr";
|
|
package = lib.mkPackageOption pkgs "desktoppr" { };
|
|
|
|
settings = lib.mkOption {
|
|
type = lib.types.submodule {
|
|
freeformType = with lib.types; attrsOf anything;
|
|
|
|
options = {
|
|
picture = lib.mkOption {
|
|
type = with lib.types; nullOr (either path (strMatching "^http(s)?:\/\/.*$"));
|
|
default = null;
|
|
example = "/System/Library/Desktop Pictures/Solid Colors/Stone.png";
|
|
description = ''
|
|
The path to the desktop picture/wallpaper to set. Can also be an HTTP
|
|
or HTTPS URL to retrieve the picture from a remote URL at runtime.
|
|
'';
|
|
};
|
|
|
|
sha256 = lib.mkOption {
|
|
type = with lib.types; nullOr (strMatching "^[a-f0-9]{64}$");
|
|
default = null;
|
|
example = "e1e594dec9343b721005a6bf06c48e0aac34ac9a77090e42b543bae9e1e0354a";
|
|
description = ''
|
|
An optional SHA256 checksum of the desktop picture/wallpaper. If the
|
|
specified file does not match the checksum, it will not be set.
|
|
'';
|
|
};
|
|
|
|
color = lib.mkOption {
|
|
type = lib.types.strMatching "[0-9a-fA-F]{6}";
|
|
default = "000000";
|
|
example = "2E2E2E";
|
|
description = ''
|
|
The background color that will be used behind the chosen picture when
|
|
it does not fill the screen.
|
|
'';
|
|
};
|
|
|
|
scale = lib.mkOption {
|
|
type = lib.types.enum [
|
|
"fill"
|
|
"stretch"
|
|
"center"
|
|
"fit"
|
|
];
|
|
default = "fill";
|
|
example = "fit";
|
|
description = ''
|
|
The scaling behavior to use when using an image.
|
|
'';
|
|
};
|
|
|
|
setOnlyOnce = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
example = true;
|
|
description = ''
|
|
If false (the default), the desktop picture/wallpaper will be reset
|
|
to the configured parameters on every system configuration change.
|
|
|
|
If true, the desktop picture/wallpaper will only be set when it
|
|
differs from the one previously set. This allows the user to manually
|
|
change the desktop picture/wallpaper after it has been set.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
default = { };
|
|
example = {
|
|
picture = "/System/Library/Desktop Pictures/Solid Colors/Stone.png";
|
|
};
|
|
description = ''
|
|
The settings to set for desktoppr.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
assertions = [
|
|
(lib.hm.assertions.assertPlatform "programs.desktoppr" pkgs lib.platforms.darwin)
|
|
];
|
|
|
|
targets.darwin.defaults.desktoppr = cfg.settings;
|
|
|
|
home.activation.desktoppr = lib.hm.dag.entryAfter [ "setDarwinDefaults" ] ''
|
|
verboseEcho "Setting the desktop picture/wallpaper"
|
|
run "${lib.getExe cfg.package}" manage
|
|
'';
|
|
};
|
|
|
|
meta.maintainers = with lib.maintainers; [ andre4ik3 ];
|
|
}
|