Files
dots/home/editors/godot.nix

84 lines
2.9 KiB
Nix

{
pkgs,
config,
lib,
...
}: {
home = {
packages = with pkgs; [
godot
];
shellAliases = {
godot-nvim = "nvim --listen ./.godothost";
};
activation.configureGodot = let
configDir = "${config.xdg.configHome}/godot";
execFlags = pkgs.lib.escapeShellArg ''"--server ./.godothost --remote-send \":e {file} | call cursor({line},{col})<CR>\""'';
in
lib.hm.dag.entryAfter ["writeBoundary"]
# bash
''
mkdir -p "${configDir}"
SETTINGS_FILE=$(find "${configDir}" -maxdepth 1 -type f -name 'editor_settings-4*.tres' -print0 | sort -z | tail -z -n 1 | tr -d '\0')
if [ -z "$SETTINGS_FILE" ]; then
SETTINGS_FILE="${configDir}/editor_settings-4.5.tres"
echo "No existing Godot settings file found. Creating at $SETTINGS_FILE"
echo -e '[gd_resource type="EditorSettings" format=3]\n' > "$SETTINGS_FILE"
echo '[resource]' >> "$SETTINGS_FILE"
else
echo "Found Godot settings file at $SETTINGS_FILE"
fi
update_setting() {
local key="$1"
local value="$2"
local sed_value="''${value//\\/\\\\}"
sed_value="''${sed_value//&/\\&}"
if grep -q "^$key =" "$SETTINGS_FILE"; then
sed "s#^$key =.*#$key = $sed_value#" "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp" && mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE"
else
if grep -q '\[resource\]' "$SETTINGS_FILE"; then
echo "$key = $value" >> "$SETTINGS_FILE"
fi
fi
}
# External editor (nvim)
update_setting "text_editor/external/use_external_editor" "true"
update_setting "text_editor/external/exec_path" "\"${pkgs.neovim}/bin/nvim\""
update_setting "text_editor/external/exec_flags" ${execFlags}
# Catppuccin Mocha interface theme
update_setting "interface/theme/preset" "\"Custom\""
# Base Color: #1e1e2e
update_setting "interface/theme/base_color" "Color(0.118, 0.118, 0.18, 1)"
# Accent Color: #cba6f7
update_setting "interface/theme/accent_color" "Color(0.796, 0.651, 0.969, 1)"
# Contrast: 0.2
update_setting "interface/theme/contrast" "0.2"
# Icon Saturation: 0.6
update_setting "interface/theme/icon_saturation" "0.6"
# Catppuccin Mocha syntax theme
update_setting "text_editor/theme/highlighting/syntax_theme" "\"Catppuccin Mocha\""
# https://github.com/NixOS/nixpkgs/issues/454608#issuecomment-3450986999
update_setting "network/tls/editor_tls_certificates" "\"/etc/ssl/certs/ca-certificates.crt\""
'';
};
xdg.configFile."godot/text_editor_themes/Catppuccin Mocha.tet".source =
pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "godot";
rev = "d8b72b679078f0103a5e5c1ef793c1d698a563b1";
hash = "sha256-Og69rMEsygVYpWVGvJGsCydQzRC9BXBQxyrJ4kfdUEo=";
}
+ "/themes/Catppuccin Mocha.tet";
}