79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { pkgs, ... }:
 | ||
| 
 | ||
| let
 | ||
|   doom-icon = pkgs.fetchurl {
 | ||
|     url = "https://raw.githubusercontent.com/jeetelongname/doom-banners/master/splashes/doom/doom-emacs-color2.svg";
 | ||
|     sha256 = "1xxi5ra1z8njsqaqiaq96wyn1sc967l42kvjzbji1zrjj8za6bgq";
 | ||
|   };
 | ||
| in
 | ||
| {
 | ||
|   # 1. Create a script to install Doom Emacs
 | ||
|   home.packages = [
 | ||
|     (pkgs.writeShellScriptBin "get-doom" ''
 | ||
|       #!/usr/bin/env bash
 | ||
|       set -e
 | ||
| 
 | ||
|       # --- Icons ---
 | ||
|       ICON_CHECK="✔"
 | ||
|       ICON_INFO="ℹ"
 | ||
|       ICON_ROCKET="🚀"
 | ||
| 
 | ||
|       # --- Helper Functions ---
 | ||
|       print_status() {
 | ||
|         echo
 | ||
|         echo "--- $ICON_INFO $1 ---"
 | ||
|       }
 | ||
| 
 | ||
|       print_success() {
 | ||
|         echo "--- $ICON_CHECK $1 ---"
 | ||
|       }
 | ||
| 
 | ||
|       print_banner() {
 | ||
|         echo "==============================="
 | ||
|         echo " Doom Emacs Installer $ICON_ROCKET"
 | ||
|         echo "==============================="
 | ||
|       }
 | ||
| 
 | ||
|       # --- Main Script ---
 | ||
|       print_banner
 | ||
|       EMACSDIR="$HOME/.emacs.d"
 | ||
| 
 | ||
|       if [ -d "$EMACSDIR" ]; then
 | ||
|         print_success "Doom Emacs is already installed."
 | ||
|         exit 0
 | ||
|       fi
 | ||
| 
 | ||
|       print_status "Cloning Doom Emacs..."
 | ||
|       git clone --depth 1 https://github.com/doomemacs/doomemacs "$EMACSDIR"
 | ||
|       print_success "Doom Emacs cloned."
 | ||
| 
 | ||
|       print_status "Running Doom install..."
 | ||
|       "$EMACSDIR/bin/doom" install
 | ||
|       print_success "Doom install complete."
 | ||
| 
 | ||
|       print_status "Running doom sync..."
 | ||
|       "$EMACSDIR/bin/doom" sync
 | ||
|       print_success "Doom sync complete."
 | ||
| 
 | ||
|       echo
 | ||
|       print_success "All done! Doom Emacs is ready to use."
 | ||
|     '')
 | ||
|   ];
 | ||
| 
 | ||
|   # 2. Add the bin directory to the PATH
 | ||
|   home.sessionPath = [
 | ||
|     "$HOME/.emacs.d/bin"
 | ||
|   ];
 | ||
| 
 | ||
|   # 3. Create a desktop file
 | ||
|   xdg.desktopEntries.doom-emacs = {
 | ||
|     name = "Doom Emacs";
 | ||
|     comment = "A configuration framework for GNU Emacs";
 | ||
|     exec = "emacs";
 | ||
|     icon = doom-icon;
 | ||
|     terminal = false;
 | ||
|     type = "Application";
 | ||
|     categories = [ "Development" "TextEditor" ];
 | ||
|   };
 | ||
| }
 |