FG42/flake.nix

94 lines
3.1 KiB
Nix

# Fg42 - Emacs Editor for advance users
#
# Copyright (c) 2010-2023 Sameer Rahmani <lxsameer@gnu.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 2.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{
description = "FG42 - Emacs Editor for advance users";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/442d407992384ed9c0e6d352de75b69079904e4e";
inputs.emacs-overlay.url = "github:nix-community/emacs-overlay/0f7f3b39157419f3035a2dad39fbaf8a4ba0448d"; inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, ... }@inputs:
inputs.flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ inputs.emacs-overlay.overlays.package ];
};
elispDepsFile = ./deps.el;
elispPkgs = pkgs.callPackage ./nix/deps.nix {
inherit elispDepsFile;
};
ourPackages = pkgs.callPackage ./nix/packages.nix {};
fg42 = pkgs.callPackage ./nix/fg42.nix {
inherit elispPkgs ourPackages;
srcDir = ./.;
};
in {
inherit pkgs;
packages.default = pkgs.writeScriptBin "fg42" ''
#!${pkgs.stdenv.shell}
export FG42_HOME=${fg42}/fg42
LIBRARY_PATH="$(cc -print-file-name=libgccjit.so):$LIBRARY_PATH" FG42_WM=false emacs \
--name FG42 \
--no-site-file --no-site-lisp \
--no-splash --title FG42 \
-l $FG42_HOME/fg42-config.el "$@"
'';
packages.wm = pkgs.writeScriptBin "fg42-wm" ''
#!${pkgs.stdenv.shell}
# Disable access control for the current user.
xhost +SI:localuser:$USER
# Make Java applications aware this is a non-reparenting window manager.
export _JAVA_AWT_WM_NONREPARENTING=1
# Set default cursor.
xsetroot -cursor_name left_ptr
# Set keyboard repeat rate.
xset r rate 400 30
# Uncomment the following block to use the exwm-xim module.
#export XMODIFIERS=@im=exwm-xim
#export GTK_IM_MODULE=xim
#export QT_IM_MODULE=xim
#export CLUTTER_IM_MODULE=xim
export FG42_HOME=${fg42}/fg42
LIBRARY_PATH=$(cc -print-file-name=libgccjit.so):$LIBRARY_PATH FG42_WM=true emacs \
--name FG42 \
--no-site-file --no-site-lisp \
--no-splash --title FG42 \
-l $FG42_HOME/fg42-config.el "$@"
'';
# devShells.default = pkgs.mkShell {
# nativeBuildInputs = deps ++ [ pkgs.fish ];
# shellHook = ''
# fish && exit
# '';
# };
}
);
}