diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..2eafe75 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,3 @@ +[*.nix] +indent_style = space +indent_size = 2 diff --git a/.gitignore b/.gitignore index 510efca..7c7c34e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ !/.gitignore !/README.org !/media +!/.editorconfig +!/lib.nix diff --git a/flake.nix b/flake.nix index 1f6764d..c98eb7f 100644 --- a/flake.nix +++ b/flake.nix @@ -11,38 +11,41 @@ inputs.nixpkgs.follows = "nixpkgs"; }; }; - outputs = - inputs: - inputs.parts.lib.mkFlake { inherit inputs; } { + outputs = inputs: let + lib = inputs.nixpkgs.lib.extend (import ./lib.nix); + in + inputs.parts.lib.mkFlake { + inherit inputs; + specialArgs.lib = lib; + } { systems = [ "x86_64-linux" ]; - perSystem = - { - pkgs, - self', - config, - system, - ... - }: - let - inherit (import ./emacs/mkEmacs.nix pkgs) mkEmacs; - in - { - _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; + perSystem = { + pkgs, + self', + config, + system, + ... + }: { + _module.args.pkgs = import inputs.nixpkgs { + inherit system; + overlays = [ + (import inputs.emacs) + ]; }; + + packages = builtins.mapAttrs (_: v: + lib.mkEmacs { + inherit pkgs; + emacs = v; + }) { + pankomacs = pkgs.emacs30-pgtk; + pankomacs-x11 = pkgs.emacs30-gtk3; + }; + + formatter = pkgs.alejandra; + }; }; } diff --git a/emacs/mkEmacs.nix b/lib.nix similarity index 61% rename from emacs/mkEmacs.nix rename to lib.nix index 3a88cec..d2e8b8c 100644 --- a/emacs/mkEmacs.nix +++ b/lib.nix @@ -1,33 +1,32 @@ -{ pkgs, ... }: -let - mkEmacsPackage = - { +final: prev: { + mkEmacs = { + pkgs, + emacs, + }: let + mkEmacsPackage = { epkgs, pname, version, src, - deps ? [ ], + deps ? [], }: - epkgs.callPackage ( - { trivialBuild }: - trivialBuild { - inherit pname version src; - buildInputs = deps; - propagatedUserEnvPkgs = deps; - } - ) { inherit (epkgs) trivialBuild; }; -in -{ - mkEmacs = - emacs: + epkgs.callPackage ( + {trivialBuild}: + trivialBuild { + inherit pname version src; + buildInputs = deps; + propagatedUserEnvPkgs = deps; + } + ) {inherit (epkgs) trivialBuild;}; + in pkgs.emacsWithPackagesFromUsePackage { package = emacs; defaultInitFile = true; config = ./config.el; - extraEmacsPackages = - epkgs: + extraEmacsPackages = epkgs: builtins.attrValues { - inherit (epkgs) + inherit + (epkgs) spacious-padding mood-line which-key