{ config, lib, pkgs, system, nix-darwin-emacs, ... }: let isDarwin = builtins.match ".*-darwin" system != null; emacsPackage = if isDarwin then nix-darwin-emacs.packages.${system}.emacs-30 else pkgs.emacs-pgtk; homeDirectory = if isDarwin then "/Users/venomade" else "/home/venomade"; in { home.username = "venomade"; home.homeDirectory = homeDirectory; home.packages = with pkgs; [ # Neovim neovim imagemagick fzf ripgrep fd # Emacs emacsPackage emacs-lsp-booster # Kakoune kakoune kakoune-lsp expect # Nix nil # Lua lua-language-server lua5_4 # Rust rustc cargo rust-analyzer clippy # C clang clang-tools bear valgrind # Lisp luaPackages.fennel fnlfmt fennel-ls # Shell zsh tmux bat bat-extras.batman bat-extras.batdiff eza jellyfin-tui lazygit starship yazi zk harper translate-shell ] ++ lib.optionals isDarwin [ lima ]; programs.git = { enable = true; settings.user = { name = "venomade"; email = "venomade@venomade.com"; }; }; home.stateVersion = "25.11"; programs.home-manager.enable = true; home.file = let configDir = "${config.home.homeDirectory}/.dotfiles/config"; dotsDir = "${config.home.homeDirectory}/.dotfiles/dots"; configEntries = lib.mapAttrs (name: _: { target = ".config/${name}"; source = config.lib.file.mkOutOfStoreSymlink "${configDir}/${name}"; recursive = true; }) (lib.filterAttrs (name: type: type == "directory") (builtins.readDir ./config)); dotsEntries = lib.mapAttrs (name: _: { target = ".${name}"; source = config.lib.file.mkOutOfStoreSymlink "${dotsDir}/${name}"; }) (lib.filterAttrs (name: type: type == "regular") (builtins.readDir ./dots)); in configEntries // dotsEntries; }