2016-12-14 13:05:23 +01:00
|
|
|
{ config, lib, ... }:
|
|
|
|
|
2024-10-25 13:21:56 -07:00
|
|
|
let
|
|
|
|
inherit (lib) mkOption types;
|
2016-12-14 13:05:23 +01:00
|
|
|
|
2024-10-25 13:21:56 -07:00
|
|
|
cfg = config.system.defaults.finder;
|
|
|
|
in
|
2016-12-14 13:05:23 +01:00
|
|
|
{
|
|
|
|
options = {
|
|
|
|
|
2022-03-10 00:12:30 -08:00
|
|
|
system.defaults.finder.AppleShowAllFiles = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
2024-04-14 23:02:32 +02:00
|
|
|
description = ''
|
2022-03-10 00:12:30 -08:00
|
|
|
Whether to always show hidden files. The default is false.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2022-03-10 00:43:27 -08:00
|
|
|
system.defaults.finder.ShowStatusBar = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
2024-04-14 23:02:32 +02:00
|
|
|
description = ''
|
2022-03-10 00:43:27 -08:00
|
|
|
Show status bar at bottom of finder windows with item/disk space stats. The default is false.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
system.defaults.finder.ShowPathbar = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
2024-04-14 23:02:32 +02:00
|
|
|
description = ''
|
2022-03-10 00:43:27 -08:00
|
|
|
Show path breadcrumbs in finder windows. The default is false.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
system.defaults.finder.FXDefaultSearchScope = mkOption {
|
2023-08-10 13:46:47 +10:00
|
|
|
type = types.nullOr types.str;
|
2022-03-10 00:43:27 -08:00
|
|
|
default = null;
|
2024-04-14 23:02:32 +02:00
|
|
|
description = ''
|
2022-03-10 00:43:27 -08:00
|
|
|
Change the default search scope. Use "SCcf" to default to current folder.
|
|
|
|
The default is unset ("This Mac").
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2024-11-12 01:24:22 +00:00
|
|
|
system.defaults.finder.FXRemoveOldTrashItems = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
|
|
|
description = ''
|
|
|
|
Remove items in the trash after 30 days.
|
|
|
|
The default is false.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2022-03-10 00:43:27 -08:00
|
|
|
system.defaults.finder.FXPreferredViewStyle = mkOption {
|
2023-08-10 13:46:47 +10:00
|
|
|
type = types.nullOr types.str;
|
2022-03-25 00:37:17 +09:00
|
|
|
default = null;
|
2024-04-14 23:02:32 +02:00
|
|
|
description = ''
|
2022-03-10 00:43:27 -08:00
|
|
|
Change the default finder view.
|
|
|
|
"icnv" = Icon view, "Nlsv" = List view, "clmv" = Column View, "Flwv" = Gallery View
|
|
|
|
The default is icnv.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2016-12-14 13:05:23 +01:00
|
|
|
system.defaults.finder.AppleShowAllExtensions = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
2024-04-14 23:02:32 +02:00
|
|
|
description = ''
|
2024-11-12 01:24:22 +00:00
|
|
|
Whether to always show file extensions. The default is false.
|
2016-12-14 16:30:55 +01:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2020-06-03 17:39:58 +08:00
|
|
|
system.defaults.finder.CreateDesktop = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
2024-04-14 23:02:32 +02:00
|
|
|
description = ''
|
2020-06-03 17:39:58 +08:00
|
|
|
Whether to show icons on the desktop or not. The default is true.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2016-12-14 16:30:55 +01:00
|
|
|
system.defaults.finder.QuitMenuItem = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
2024-04-14 23:02:32 +02:00
|
|
|
description = ''
|
2024-11-12 01:24:22 +00:00
|
|
|
Whether to allow quitting of the Finder. The default is false.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
system.defaults.finder.ShowExternalHardDrivesOnDesktop = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
|
|
|
description = ''
|
|
|
|
Whether to show external disks on desktop. The default is true.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
system.defaults.finder.ShowHardDrivesOnDesktop = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
|
|
|
description = ''
|
|
|
|
Whether to show hard disks on desktop. The default is false.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
system.defaults.finder.ShowMountedServersOnDesktop = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
|
|
|
description = ''
|
|
|
|
Whether to show connected servers on desktop. The default is false.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
system.defaults.finder.ShowRemovableMediaOnDesktop = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
|
|
|
description = ''
|
|
|
|
Whether to show removable media (CDs, DVDs and iPods) on desktop. The default is true.
|
2016-12-14 16:30:55 +01:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
system.defaults.finder._FXShowPosixPathInTitle = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
2024-04-14 23:02:32 +02:00
|
|
|
description = ''
|
2024-11-12 01:24:22 +00:00
|
|
|
Whether to show the full POSIX filepath in the window title. The default is false.
|
2016-12-14 16:30:55 +01:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2024-09-04 23:04:29 +02:00
|
|
|
system.defaults.finder._FXSortFoldersFirst = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
|
|
|
description = ''
|
|
|
|
Keep folders on top when sorting by name. The default is false.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2024-11-12 01:24:22 +00:00
|
|
|
system.defaults.finder._FXSortFoldersFirstOnDesktop = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
|
|
|
description = ''
|
|
|
|
Keep folders on top when sorting by name on the desktop. The default is false.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2016-12-14 16:30:55 +01:00
|
|
|
system.defaults.finder.FXEnableExtensionChangeWarning = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
default = null;
|
2024-04-14 23:02:32 +02:00
|
|
|
description = ''
|
2024-11-12 01:24:22 +00:00
|
|
|
Whether to show warnings when change the file extension of files. The default is true.
|
2016-12-14 16:30:55 +01:00
|
|
|
'';
|
2016-12-14 13:05:23 +01:00
|
|
|
};
|
|
|
|
|
2024-10-25 13:21:56 -07:00
|
|
|
system.defaults.finder.NewWindowTarget = mkOption {
|
|
|
|
type = types.nullOr (types.enum [
|
|
|
|
"Computer"
|
|
|
|
"OS volume"
|
|
|
|
"Home"
|
|
|
|
"Desktop"
|
|
|
|
"Documents"
|
|
|
|
"Recents"
|
|
|
|
"iCloud Drive"
|
|
|
|
"Other"
|
|
|
|
]);
|
|
|
|
apply = key: if key == null then null else {
|
|
|
|
"Computer" = "PfCm";
|
|
|
|
"OS volume" = "PfVo";
|
|
|
|
"Home" = "PfHm";
|
|
|
|
"Desktop" = "PfDe";
|
|
|
|
"Documents" = "PfDo";
|
|
|
|
"Recents" = "PfAF";
|
|
|
|
"iCloud Drive" = "PfID";
|
|
|
|
"Other" = "PfLo";
|
|
|
|
}.${key};
|
|
|
|
default = null;
|
|
|
|
description = ''
|
|
|
|
Change the default folder shown in Finder windows. "Other" corresponds to the value of
|
|
|
|
NewWindowTargetPath. The default is unset ("Recents").
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
system.defaults.finder.NewWindowTargetPath = mkOption {
|
|
|
|
type = types.nullOr types.str;
|
|
|
|
default = null;
|
|
|
|
description = ''
|
|
|
|
Sets the URI to open when NewWindowTarget is "Other". Spaces and similar characters must be
|
|
|
|
escaped. If the value is invalid, Finder will open your home directory.
|
|
|
|
Example: "file:///Users/foo/long%20cat%20pics".
|
|
|
|
The default is unset.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
config = {
|
|
|
|
assertions = [{
|
|
|
|
assertion = cfg.NewWindowTargetPath != null -> cfg.NewWindowTarget == "PfLo";
|
|
|
|
message = "`system.defaults.finder.NewWindowTarget` should be set to `Other` when `NewWindowTargetPath` is non-null.";
|
|
|
|
}
|
|
|
|
{
|
|
|
|
assertion = cfg.NewWindowTarget == "PfLo" -> cfg.NewWindowTargetPath != null;
|
|
|
|
message = "`system.defaults.finder.NewWindowTargetPath` should be non-null when `NewWindowTarget` is set to `Other`.";
|
|
|
|
}];
|
2016-12-14 13:05:23 +01:00
|
|
|
};
|
|
|
|
}
|