Created
May 11, 2026 09:48
-
-
Save andir/1bda736dcfc3853d2e402e82b127ddd6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { lib, pkgs, ... }: | |
| let | |
| mkFallback = binaryName: pkg: pkgs.writeShellScriptBin binaryName '' | |
| set -e | |
| self="$0" | |
| self_path=''${self%/${binaryName}} | |
| stripped_path=$(echo "$PATH" | ${pkgs.gnused}/bin/sed -e "s;$self_path:*;;g") | |
| PATH="$stripped_path" ${pkgs.which}/bin/which ${binaryName} > /dev/null 2>&1 && PATH=$stripped_path exec ${binaryName} "$@" | |
| export PATH="$PATH:${lib.getBin pkg}/bin/" | |
| exec ${binaryName} "$@" | |
| ''; | |
| in | |
| { | |
| home.file.".emacs" = { | |
| text = "(require 'andir)"; | |
| }; | |
| home.packages = with pkgs; [ | |
| nil | |
| #terraform-lsp | |
| terraform | |
| #rnix-lsp | |
| ispell # for spell checking | |
| languagetool # for more spelling stuff | |
| openjdk_headless # for languagetool :| | |
| nixpkgs-fmt | |
| #dotnet-sdk_6 # for dotnet/C# development | |
| (mkFallback "rust-analyzer" pkgs.rust-analyzer) | |
| (mkFallback "cargo" pkgs.cargo) | |
| (mkFallback "rustc" pkgs.rustc) | |
| (mkFallback "nixfmt" pkgs.nixfmt) | |
| (mkFallback "rustfmt" pkgs.rustfmt) | |
| (mkFallback "yaml-language-server" pkgs.yaml-language-server) | |
| (mkFallback "markdown" pkgs.multimarkdown) | |
| (mkFallback "claude" (pkgs.writeScriptBin "claude" '' | |
| export AWS_PROFILE=ClaudeCode | |
| ${if !stdenv.isLinux then "export CLAUDE_CODE_USE_BEDROCK=1" else ""} | |
| exec ${pkgs.claude-code}/bin/claude | |
| '')) | |
| ]; | |
| services.emacs = { | |
| enable = pkgs.system != "aarch64-darwin"; | |
| startWithUserSession = true; | |
| defaultEditor = true; | |
| }; | |
| programs.emacs = { | |
| enable = true; | |
| package = pkgs.my-emacs; | |
| extraConfig = | |
| let | |
| remoteNotmuch = user: address: pkgs.writeShellScript "remote-notmuch" '' | |
| exec ${pkgs.openssh}/bin/ssh ${user}@${address} "notmuch" "$@" | |
| ''; | |
| remoteMbsync = user: address: pkgs.writeShellScript "mbsync" '' | |
| exec ${pkgs.openssh}/bin/ssh ${user}@${address} "mbsync" "$@" | |
| ''; | |
| in | |
| '' | |
| (setq languagetool-java-bin "${pkgs.openjdk_headless}/bin/java" | |
| languagetool-java-arguments '("-cp" "${pkgs.languagetool}/share") | |
| languagetool-console-command "${pkgs.languagetool}/share/languagetool-commandline.jar" | |
| languagetool-server-command "${pkgs.languagetool}/share/languagetool-server.jar") | |
| ;; C# support for DoL | |
| (setq lsp-csharp-server-path "${"" /*pkgs.omnisharp-roslyn*/}/bin/OmniSharp") | |
| (defvar andir-remote-notmuch-command "${remoteNotmuch "andi" "172.20.24.174"}") | |
| (defvar andir-remote-mbsync-command "${remoteMbsync "andi" "172.20.24.174"}") | |
| (with-eval-after-load 'counsel | |
| (setq counsel-fzf-cmd "${pkgs.fzf}/bin/fzf -f \"%s\"" | |
| )) | |
| (with-eval-after-load 'rg | |
| (setq rg-executable "${pkgs.ripgrep}/bin/rg")) | |
| ;; load config | |
| ;;(require 'andir) | |
| ''; | |
| extraPackages = epkgs: with epkgs; let | |
| config = epkgs.trivialBuild { | |
| pname = "andir"; | |
| src = pkgs.writeText "andir.el" (builtins.readFile ./emacs.el); | |
| nativeBuildInputs = [ pkgs.gitMinimal ]; | |
| version = "0.0"; | |
| packageRequires = dependencies; | |
| preBuild = '' | |
| export HOME=$(mktemp -d) | |
| ''; | |
| }; | |
| dependencies = [ | |
| ace-window | |
| eat | |
| evil | |
| evil-collection | |
| undo-tree | |
| nix-mode | |
| nixpkgs-fmt | |
| rust-mode | |
| rustic | |
| yaml-mode | |
| json-mode | |
| php-mode | |
| python-mode | |
| python-black | |
| lsp-mode | |
| #lsp-java | |
| lsp-ui | |
| lsp-treemacs | |
| helm-lsp | |
| #dap-mode | |
| lua-mode | |
| #gdb | |
| cmake-mode | |
| dts-mode | |
| k8s-mode | |
| nyan-mode | |
| # alternative completion stuff to company | |
| corfu | |
| cape | |
| vertico | |
| # vertico-directory | |
| orderless | |
| consult | |
| # terraform-mode is a bit weird with issues around highlighting nested stuff | |
| terraform-mode | |
| go-mode | |
| # theme | |
| (dracula-theme.overrideAttrs (_: { | |
| src = pkgs.sources.dracula-theme; | |
| })) | |
| srcery-theme | |
| doom-themes | |
| doom-modeline | |
| material-theme | |
| all-the-icons | |
| # faster terminal | |
| vterm | |
| ghostel | |
| evil-ghostel | |
| # the well known git plugin | |
| magit | |
| (pkgs.mk-majutsu epkgs) | |
| forge # git forge supprt | |
| # completion at point | |
| #company | |
| # compat, see emacs.el | |
| #flymake-proc | |
| # fix space vs tabs wars | |
| dtrt-indent | |
| # show syntax checking errors | |
| flycheck | |
| consult-notmuch | |
| # telescope like completion | |
| counsel | |
| counsel-projectile # search within the current dir | |
| helm | |
| # searching for files | |
| rg | |
| #direnv | |
| envrc | |
| inheritenv | |
| which-key | |
| tree-sitter | |
| tree-sitter-indent | |
| tree-sitter-langs | |
| notmuch | |
| rainbow-delimiters | |
| # source of ol-notmuch | |
| #org-contrib | |
| # RSS reader | |
| elfeed | |
| # no-littering | |
| no-littering | |
| # org-neomutt-hello, an org plugin to show notmuch counts | |
| #(epkgs.trivialBuild { | |
| # pname = "org-notmuch-hello"; | |
| # version = "git${pkgs.sources.org-notmuch-hello.revision}"; | |
| # src = pkgs.sources.org-notmuch-hello; | |
| # packageRequires = with epkgs; [ | |
| # notmuch | |
| # ]; | |
| #}) | |
| #piem | |
| my-repo-pins | |
| editorconfig | |
| highlight-indentation | |
| clang-format | |
| typescript-mode | |
| dockerfile-mode | |
| languagetool | |
| mpdel # mpd client | |
| platformio-mode | |
| # github code review | |
| ghub | |
| code-review | |
| haskell-mode | |
| lsp-haskell | |
| ement | |
| textsize | |
| realgud | |
| scala-mode | |
| lsp-metals | |
| #prettier-emacs | |
| # bitwarden integration | |
| (epkgs.trivialBuild { | |
| pname = "emacs-bitwarden"; | |
| version = "git${pkgs.sources."emacs-bitwarden".revision}"; | |
| src = pkgs.sources."emacs-bitwarden"; | |
| packageRequires = [ ]; | |
| }) | |
| ] ++ (if pkgs.stdenv.isLinux then [ | |
| (epkgs.trivialBuild { | |
| pname = "gnome-night-light.el"; | |
| version = "git${pkgs.sources."gnome-night-light".revision}"; | |
| src = pkgs.sources."gnome-night-light"; | |
| packageRequires = [ ]; | |
| }) | |
| ] else [ ]); | |
| in | |
| [ | |
| config | |
| ]; | |
| }; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment