From ebaa4f46a15815c681d201b0407708cb65822ce3 Mon Sep 17 00:00:00 2001 From: Ivan Dimitrov Date: Wed, 16 Aug 2023 09:03:48 +0300 Subject: [PATCH] emacs with prisma and treesitter --- flake.lock | 72 ++++++++++++++++++++++++++ flake.nix | 48 ++++++++++------- home/laptop/programs/emacs/default.nix | 14 ++++- 3 files changed, 113 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index fe48623..dba527c 100644 --- a/flake.lock +++ b/flake.lock @@ -16,6 +16,28 @@ "type": "gitlab" } }, + "emacs-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1692125006, + "narHash": "sha256-D3UuE9aiKBFmNuzRfZLmNUlwujXDFeD8/ZSSaNwAuAs=", + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "ff4dba8979ddc3bfa40867d4f256cc7f0e635d75", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "emacs-overlay", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -32,6 +54,24 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -97,6 +137,22 @@ "type": "indirect" } }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1692025715, + "narHash": "sha256-tsRiiopGT7HA8d/cuk5xYBRXgdnnvD+JhUGUe3x7vmY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09a137528c3aea3780720d19f99cd706f52c3823", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1670751203, @@ -114,6 +170,7 @@ }, "root": { "inputs": { + "emacs-overlay": "emacs-overlay", "home-manager": "home-manager", "nixpkgs": "nixpkgs", "simple-nixos-mailserver": "simple-nixos-mailserver" @@ -142,6 +199,21 @@ "type": "gitlab" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "utils": { "locked": { "lastModified": 1605370193, diff --git a/flake.nix b/flake.nix index a1c1ac5..de0b990 100644 --- a/flake.nix +++ b/flake.nix @@ -7,29 +7,37 @@ }; simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver"; + emacs-overlay = { + url = "github:nix-community/emacs-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { self, nixpkgs, home-manager, simple-nixos-mailserver, ... }: { - nixosConfigurations = { - laptop = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ ./sys/laptop ]; + outputs = { self, nixpkgs, home-manager, simple-nixos-mailserver + , emacs-overlay, ... }: { + nixosConfigurations = { + laptop = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ ./sys/laptop ]; + }; + mailserver = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + (nixpkgs + + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix") + ./sys/mailserver + simple-nixos-mailserver.nixosModule + ]; + }; }; - mailserver = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - (nixpkgs - + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix") - ./sys/mailserver - simple-nixos-mailserver.nixosModule - ]; + homeConfigurations = { + ivand = home-manager.lib.homeManagerConfiguration { + modules = [ ./home/laptop ]; + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ emacs-overlay.overlay ]; + }; + }; }; }; - homeConfigurations = { - ivand = home-manager.lib.homeManagerConfiguration { - modules = [ ./home/laptop ]; - pkgs = import nixpkgs { system = "x86_64-linux"; }; - }; - }; - }; } diff --git a/home/laptop/programs/emacs/default.nix b/home/laptop/programs/emacs/default.nix index 2b61d7f..f56bf14 100644 --- a/home/laptop/programs/emacs/default.nix +++ b/home/laptop/programs/emacs/default.nix @@ -10,6 +10,18 @@ programs.emacs = { enable = true; - package = pkgs.emacs29-pgtk; + package = with pkgs; + (emacsPackagesFor emacs-unstable).emacsWithPackages (epkgs: + with epkgs; [ + treesit-grammars.with-all-grammars + treesit-auto + prisma-mode + ]); + extraConfig = '' + (use-package treesit-auto + :config + (global-treesit-auto-mode)) + (use-package prisma-mode) + ''; }; }