From 1f9c5f89801c227285327a2c2dfa44a4f86956fe Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Sat, 14 Jan 2023 02:26:58 -0800 Subject: [PATCH] Replace straight.el with nix --- early-init.el | 6 ++- flake.lock | 80 ++++++++++++++++++++++++++++++++++++ flake.nix | 102 ++++++++++++++++++++++++++++++++++++++++++++++ init.el | 25 ++---------- my-theme-theme.el | 0 5 files changed, 190 insertions(+), 23 deletions(-) mode change 100644 => 100755 early-init.el create mode 100755 flake.lock create mode 100755 flake.nix mode change 100644 => 100755 init.el mode change 100644 => 100755 my-theme-theme.el diff --git a/early-init.el b/early-init.el old mode 100644 new mode 100755 index 4ba7493..104e424 --- a/early-init.el +++ b/early-init.el @@ -1,8 +1,12 @@ (setq native-comp-speed -1) -(setq package-enable-at-startup nil) ;; Anti-flashbang (custom-set-faces '(default ((t (:foreground "#b7c9ee" :background "#0d1017"))))) (menu-bar-mode -1) (tool-bar-mode -1) + +;; This defaults to XDG_CONFIG_HOME, which is bad because lots of +;; state gets written to it. +(setq user-emacs-directory + (concat (file-name-as-directory (getenv "XDG_DATA_HOME")) "emacs")) diff --git a/flake.lock b/flake.lock new file mode 100755 index 0000000..e33754a --- /dev/null +++ b/flake.lock @@ -0,0 +1,80 @@ +{ + "nodes": { + "emacs-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1673667358, + "narHash": "sha256-29xEYwKyYQQzpmN7bdCGRTNiSazkpFF6UWYx2RYaKJo=", + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "1114c22aeb13c1c2344f237ec57bf155c9fc1a8f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "emacs-overlay", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1673612960, + "narHash": "sha256-DWR7hrbecJKmUJCswk9MXZta710mq+3jZwTvHU/UfyY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e285dd0ca97c264003867c7329f0d1f4f028739c", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-22.11", + "type": "indirect" + } + }, + "root": { + "inputs": { + "emacs-overlay": "emacs-overlay", + "nixpkgs": "nixpkgs", + "ts-fold": "ts-fold" + } + }, + "ts-fold": { + "flake": false, + "locked": { + "lastModified": 1673328482, + "narHash": "sha256-6yQ35uJDAK531QNQZgloQaOQayRa8azOlOMbO8lXsHE=", + "owner": "emacs-tree-sitter", + "repo": "ts-fold", + "rev": "75d6f9ed317b042b5bc7cb21503596d1c7a1b8c0", + "type": "github" + }, + "original": { + "owner": "emacs-tree-sitter", + "repo": "ts-fold", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100755 index 0000000..f083656 --- /dev/null +++ b/flake.nix @@ -0,0 +1,102 @@ +{ + inputs = { + nixpkgs.url = "nixpkgs/nixos-22.11"; + + emacs-overlay = { + url = "github:nix-community/emacs-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + ts-fold = { + url = "github:emacs-tree-sitter/ts-fold"; + flake = false; + }; + }; + + outputs = { ts-fold, nixpkgs, emacs-overlay, ... }: let + system = "x86_64-linux"; + nix = import nixpkgs (let + inherit (emacs-overlay.overlays) emacs package; + grammers = (self: super: { + tree-sitter-grammars = super.tree-sitter-grammars // { + tree-sitter-rust = super.tree-sitter-grammars.tree-sitter-rust.overrideAttrs(_: { + nativeBuildInputs = [ self.nodejs self.tree-sitter ]; + configurePhase = '' + tree-sitter generate --abi 13 src/grammar.json + ''; + }); + }; + }); + in { + inherit system; + overlays = [ + emacs + package + grammers + ]; + }); + in { + packages.${system} = let + custom-emacs = + with nix; with pkgs; + ((emacsPackagesFor emacs).emacsWithPackages (epkgs: with epkgs; [ + avy + company + editorconfig + evil + evil-collection + evil-goggles + evil-textobj-tree-sitter + flycheck + lsp-mode + lsp-treemacs + lsp-ui + magit + markdown-mode + nix-mode reformatter # required by nix mode + projectile + rainbow-mode + rustic + tree-sitter + tree-sitter-langs + (trivialBuild { + pname = "ts-fold"; + version = "0.1.0"; + src = ts-fold; + + buildInputs = [ + tree-sitter + s + fringe-helper + ]; + }) + treemacs + treemacs-evil + treemacs-projectile + treemacs-magit + use-package + vertico + which-key + ws-butler + ])); + in { + emacs = custom-emacs; + + module = + with nix; { + home.packages = [ custom-emacs ]; + + xdg.configFile."emacs".source = with pkgs; + runCommandNoCC ".emacs.d" { + nativeBuildInputs = [ emacs ]; + } '' + cp ${./early-init.el} early-init.el + cp ${./init.el} init.el + cp ${./my-theme-theme.el} my-theme-theme.el + install -d $out + install *.el *.elc $out + ''; + }; + }; + }; +} diff --git a/init.el b/init.el old mode 100644 new mode 100755 index 76d130c..177daae --- a/init.el +++ b/init.el @@ -47,26 +47,8 @@ (add-hook 'lisp-mode-hook 'disable-tabs) (add-hook 'emacs-lisp-mode-hook 'disable-tabs) -;;;; Packages (straight.el) - -(defvar bootstrap-version) -(let ((bootstrap-file - (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) - (bootstrap-version 6)) - (unless (file-exists-p bootstrap-file) - (with-current-buffer - (url-retrieve-synchronously - "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" - 'silent 'inhibit-cookies) - (goto-char (point-max)) - (eval-print-last-sexp))) - (load bootstrap-file nil 'nomessage)) - -(setq straight-disable-native-compile t) - -;; Use-Package -(straight-use-package 'use-package) -(setq straight-use-package-by-default t) +;; Packages +(require 'use-package) ;; Evil (Vim Emulation) (use-package evil @@ -118,8 +100,7 @@ (add-hook 'prog-mode-hook #'ws-butler-mode)) ;; Code folding -(use-package ts-fold - :straight (ts-fold :type git :host github :repo "emacs-tree-sitter/ts-fold")) +(use-package ts-fold) ;; Markdown (use-package markdown-mode diff --git a/my-theme-theme.el b/my-theme-theme.el old mode 100644 new mode 100755