refactor(packages): expose mkEmacs function

This commit is contained in:
Artur Manuel 2025-01-28 16:27:51 +00:00
commit 0c281f506d
4 changed files with 55 additions and 48 deletions

3
.editorconfig Normal file
View file

@ -0,0 +1,3 @@
[*.nix]
indent_style = space
indent_size = 2

2
.gitignore vendored
View file

@ -7,3 +7,5 @@
!/.gitignore !/.gitignore
!/README.org !/README.org
!/media !/media
!/.editorconfig
!/lib.nix

View file

@ -11,38 +11,41 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = outputs = inputs: let
inputs: lib = inputs.nixpkgs.lib.extend (import ./lib.nix);
inputs.parts.lib.mkFlake { inherit inputs; } { in
inputs.parts.lib.mkFlake {
inherit inputs;
specialArgs.lib = lib;
} {
systems = [ systems = [
"x86_64-linux" "x86_64-linux"
]; ];
perSystem = perSystem = {
{ pkgs,
pkgs, self',
self', config,
config, system,
system, ...
... }: {
}: _module.args.pkgs = import inputs.nixpkgs {
let inherit system;
inherit (import ./emacs/mkEmacs.nix pkgs) mkEmacs; overlays = [
in (import inputs.emacs)
{ ];
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
(import inputs.emacs)
];
};
packages = {
pankomacs = mkEmacs pkgs.emacs30-pgtk;
pankomacs-x11 = mkEmacs pkgs.emacs30-gtk3;
};
formatter = pkgs.nixfmt-rfc-style;
}; };
packages = builtins.mapAttrs (_: v:
lib.mkEmacs {
inherit pkgs;
emacs = v;
}) {
pankomacs = pkgs.emacs30-pgtk;
pankomacs-x11 = pkgs.emacs30-gtk3;
};
formatter = pkgs.alejandra;
};
}; };
} }

View file

@ -1,33 +1,32 @@
{ pkgs, ... }: final: prev: {
let mkEmacs = {
mkEmacsPackage = pkgs,
{ emacs,
}: let
mkEmacsPackage = {
epkgs, epkgs,
pname, pname,
version, version,
src, src,
deps ? [ ], deps ? [],
}: }:
epkgs.callPackage ( epkgs.callPackage (
{ trivialBuild }: {trivialBuild}:
trivialBuild { trivialBuild {
inherit pname version src; inherit pname version src;
buildInputs = deps; buildInputs = deps;
propagatedUserEnvPkgs = deps; propagatedUserEnvPkgs = deps;
} }
) { inherit (epkgs) trivialBuild; }; ) {inherit (epkgs) trivialBuild;};
in in
{
mkEmacs =
emacs:
pkgs.emacsWithPackagesFromUsePackage { pkgs.emacsWithPackagesFromUsePackage {
package = emacs; package = emacs;
defaultInitFile = true; defaultInitFile = true;
config = ./config.el; config = ./config.el;
extraEmacsPackages = extraEmacsPackages = epkgs:
epkgs:
builtins.attrValues { builtins.attrValues {
inherit (epkgs) inherit
(epkgs)
spacious-padding spacious-padding
mood-line mood-line
which-key which-key