2023-07-13 08:45:39 +02:00
|
|
|
{
|
|
|
|
config,
|
2023-11-28 12:21:17 +01:00
|
|
|
lib,
|
2023-07-13 08:45:39 +02:00
|
|
|
pkgs,
|
|
|
|
...
|
2024-05-07 18:20:52 +02:00
|
|
|
}:
|
|
|
|
let
|
2023-11-28 12:21:17 +01:00
|
|
|
inherit (pkgs.stdenv) isDarwin isLinux;
|
2024-03-14 22:12:11 +01:00
|
|
|
|
2024-05-19 17:55:11 +02:00
|
|
|
vividCatppuccin = pkgs.runCommand "vivid-catppuccin" { nativeBuildInputs = [ pkgs.vivid ]; } ''
|
|
|
|
mkdir -p $out
|
|
|
|
for flavor in mocha macchiato frappe latte; do
|
|
|
|
vivid generate "catppuccin-''${flavor}" > "$out/''${flavor}"
|
|
|
|
done
|
|
|
|
'';
|
2024-05-07 18:20:52 +02:00
|
|
|
in
|
|
|
|
{
|
2023-11-28 12:21:17 +01:00
|
|
|
config = lib.mkIf config.isGraphical {
|
|
|
|
home.packages = [
|
|
|
|
(pkgs.writeShellApplication {
|
|
|
|
name = "dark-mode-ternary";
|
2024-05-03 04:56:26 +02:00
|
|
|
runtimeInputs = lib.optionals isLinux [
|
|
|
|
pkgs.dbus
|
|
|
|
pkgs.gnugrep
|
|
|
|
];
|
2024-05-07 18:20:52 +02:00
|
|
|
text =
|
|
|
|
let
|
|
|
|
queryCommand =
|
|
|
|
if isLinux then
|
|
|
|
"dbus-send --session --print-reply=literal --reply-timeout=5 --dest=org.freedesktop.portal.Desktop /org/freedesktop/portal/desktop org.freedesktop.portal.Settings.Read string:'org.freedesktop.appearance' string:'color-scheme' | grep -q 'uint32 1'"
|
|
|
|
else if isDarwin then
|
|
|
|
"defaults read -g AppleInterfaceStyle &>/dev/null"
|
|
|
|
else
|
|
|
|
throw "Unsupported platform";
|
|
|
|
in
|
|
|
|
''
|
|
|
|
[[ -z "''${1-}" ]] && [[ -z "''${2-}" ]] && echo "Usage: $0 <dark> <light>" && exit 1
|
2023-07-13 08:45:39 +02:00
|
|
|
|
2024-05-07 18:20:52 +02:00
|
|
|
if ${queryCommand}; then
|
|
|
|
echo "$1"
|
|
|
|
else
|
|
|
|
echo "$2"
|
|
|
|
fi
|
|
|
|
'';
|
2023-11-28 12:21:17 +01:00
|
|
|
})
|
|
|
|
];
|
2023-07-13 08:45:39 +02:00
|
|
|
|
2024-02-15 18:49:22 +01:00
|
|
|
services.darkman = {
|
2023-11-28 12:21:17 +01:00
|
|
|
enable = isLinux;
|
|
|
|
settings = {
|
2024-02-15 18:49:22 +01:00
|
|
|
lat = config.location.latitude;
|
2024-05-03 04:56:26 +02:00
|
|
|
lng = config.location.longitude;
|
2023-11-28 12:21:17 +01:00
|
|
|
useGeoclue = false;
|
|
|
|
};
|
2024-05-03 04:56:26 +02:00
|
|
|
lightModeScripts = {
|
|
|
|
gtk-theme = ''
|
2024-05-19 18:13:42 +02:00
|
|
|
${pkgs.dconf}/bin/dconf write /org/gnome/desktop/interface/color-scheme "'prefer-light'"
|
2024-05-03 04:56:26 +02:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
darkModeScripts = {
|
|
|
|
gtk-theme = ''
|
2024-05-19 18:13:42 +02:00
|
|
|
${pkgs.dconf}/bin/dconf write /org/gnome/desktop/interface/color-scheme "'prefer-dark'"
|
2024-05-03 04:56:26 +02:00
|
|
|
'';
|
|
|
|
};
|
2023-07-13 08:45:39 +02:00
|
|
|
};
|
|
|
|
|
2024-05-16 01:26:47 +02:00
|
|
|
programs.zsh.initExtra = ''
|
|
|
|
zadm_sync() {
|
2024-05-19 17:55:11 +02:00
|
|
|
local flavor="$(dark-mode-ternary mocha latte)"
|
|
|
|
|
2024-05-19 18:13:42 +02:00
|
|
|
export BAT_THEME="Catppuccin ''${(C)flavor}"
|
|
|
|
export LS_COLORS="$(cat "${vividCatppuccin}/''${flavor}")"
|
|
|
|
export STARSHIP_CONFIG__PALETTE="catppuccin_''${flavor}"
|
2024-03-14 22:12:11 +01:00
|
|
|
|
2024-05-19 17:55:11 +02:00
|
|
|
fast-theme "XDG:catppuccin-''${flavor}" >/dev/null
|
2024-05-16 01:26:47 +02:00
|
|
|
}
|
|
|
|
add-zsh-hook precmd zadm_sync
|
|
|
|
'';
|
|
|
|
programs.nushell.extraConfig = ''
|
|
|
|
$env.config = ($env.config? | default {})
|
|
|
|
$env.config.hooks = ($env.config.hooks? | default {})
|
|
|
|
$env.config.hooks.pre_prompt = (
|
2024-05-19 17:55:11 +02:00
|
|
|
$env.config.hooks.pre_prompt?
|
|
|
|
| default []
|
|
|
|
| append {||
|
|
|
|
let flavor = dark-mode-ternary "mocha" "latte"
|
|
|
|
|
|
|
|
$env.config.color_config = (catppuccin $flavor)
|
|
|
|
$env.BAT_THEME = "Catppuccin " + ($flavor | str capitalize)
|
|
|
|
$env.STARSHIP_CONFIG__PALETTE = "catppuccin_" + $flavor
|
|
|
|
$env.LS_COLORS = (cat $"${vividCatppuccin}/($flavor)")
|
|
|
|
}
|
2024-05-16 01:26:47 +02:00
|
|
|
)
|
|
|
|
'';
|
2023-11-28 12:21:17 +01:00
|
|
|
};
|
2023-07-13 08:45:39 +02:00
|
|
|
}
|