feat: refactor emacs package declaring

this is a ton better because:

this makes the flake look cleaner

this means I can declare multiple packages in the flake

without repeating myself as much as i would have had to.
This commit is contained in:
Artur Manuel 2024-09-09 16:34:39 +01:00
commit 95ef7816f0
Failed to generate hash of commit
4 changed files with 105 additions and 84 deletions

View file

@ -11,24 +11,38 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = inputs: outputs =
inputs:
inputs.parts.lib.mkFlake { inherit inputs; } { inputs.parts.lib.mkFlake { inherit inputs; } {
systems = [ systems = [
"x86_64-linux" "x86_64-linux"
]; ];
perSystem = { pkgs, self', config, system, ... }: { perSystem =
_module.args.pkgs = import inputs.nixpkgs { {
inherit system; pkgs,
overlays = [ self',
(import inputs.emacs) config,
]; system,
...
}:
let
inherit (import ./package/mkEmacs.nix pkgs) mkEmacs;
in
{
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
(import inputs.emacs)
];
};
packages = {
pankomacs = mkEmacs pkgs.emacs29-pgtk;
pankomacs-x11 = mkEmacs pkgs.emacs-gtk;
};
formatter = pkgs.nixfmt-rfc-style;
}; };
packages.pankomacs = pkgs.callPackage ./package { };
packages.default = self'.packages.pankomacs;
formatter = pkgs.nixpkgs-fmt;
};
}; };
} }

View file

@ -285,7 +285,10 @@ Enabling Emacs-LSP to use LSPs, I am very dry on syntax highlighters right now.
#+END_SRC #+END_SRC
*** Rust *** Rust
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package rustic) (use-package rustic
:custom
(rustic-format-on-save t)
(rustic-cargo-use-last-stored-arguments t))
#+END_SRC #+END_SRC
*** Haskell *** Haskell
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp

View file

@ -1,70 +0,0 @@
{ emacsWithPackagesFromUsePackage, fetchurl, emacs29-pgtk, python3 }:
emacsWithPackagesFromUsePackage {
package = emacs29-pgtk;
config = ./config.org;
defaultInitFile = true;
alwaysEnsure = true;
alwaysTangle = true;
extraEmacsPackages = e:
let
mkEmacsPackage =
pname:
src:
deps:
e.callPackage
({ trivialBuild }: trivialBuild {
inherit pname src;
version = "0.1.0";
buildInputs = deps;
propagatedUserEnvPkgs = deps;
})
{ inherit (e) trivialBuild; };
in
(builtins.attrValues {
inherit (e)
nix-mode
vertico
orderless
marginalia
embark
consult
embark-consult
consult-dir
doom-modeline
flycheck
which-key
lsp-mode
lsp-ui
lsp-pyright
treemacs
lsp-treemacs
consult-lsp
treemacs-icons-dired
treemacs-nerd-icons
nerd-icons
all-the-icons
projectile
treemacs-projectile
magit
treemacs-magit
rustic
haskell-mode
envrc
ccls
org-roam
spacious-padding
mood-line
ement
autothemer
;
treesit-grammars = e.treesit-grammars.with-all-grammars;
inherit python3;
oxocarbon = mkEmacsPackage "oxocarbon-theme"
(fetchurl {
url = "https://raw.githubusercontent.com/konrad1977/emacs/main/themes/oxocarbon-theme.el";
hash = "sha256-jD4DYc7aePuAF3m323YAi7jzE6ZpsSWb/zdmEgjFCns=";
}) [ e.autothemer ];
});
override = _: prev: { use-package = prev.emacs; };
}

74
package/mkEmacs.nix Normal file
View file

@ -0,0 +1,74 @@
{ pkgs, ... }:
let
mkEmacsPackage =
epkgs: pname: version: src: deps:
epkgs.callPackage (
{ trivialBuild }:
trivialBuild {
inherit pname version src;
buildInputs = deps;
propagatedUserEnvPkgs = deps;
}
) { inherit (epkgs) trivialBuild; };
in
{
mkEmacs =
emacs:
pkgs.emacsWithPackagesFromUsePackage {
package = emacs;
defaultInitFile = true;
alwaysEnsure = true;
alwaysTangle = true;
config = ./config.org;
extraEmacsPackages =
e:
builtins.attrValues {
inherit (e)
nix-mode
vertico
orderless
marginalia
embark
consult
embark-consult
consult-dir
doom-modeline
flycheck
which-key
lsp-mode
lsp-ui
lsp-pyright
treemacs
lsp-treemacs
consult-lsp
treemacs-icons-dired
treemacs-nerd-icons
nerd-icons
all-the-icons
projectile
treemacs-projectile
magit
treemacs-magit
rustic
haskell-mode
envrc
ccls
org-roam
spacious-padding
mood-line
ement
autothemer
geiser-guile
;
treesit-grammars = e.treesit-grammars.with-all-grammars;
inherit (pkgs) python3;
oxocarbon-theme = mkEmacsPackage e "oxocarbon-theme" "0.1.0" (pkgs.fetchurl {
url = "https://raw.githubusercontent.com/konrad1977/emacs/main/themes/oxocarbon-theme.el";
hash = "sha256-jD4DYc7aePuAF3m323YAi7jzE6ZpsSWb/zdmEgjFCns=";
}) [ e.autothemer ];
};
override = _: prev: { use-package = prev.emacs; };
};
}