# Fg42 - Emacs Editor for advance users # # Copyright (c) 2010-2024 Sameer Rahmani # # 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 . { 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 ]; }; lemacs = pkgs.emacs29.override { withGTK3 = false; toolkit = "lucid"; }; 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 = ./.; emacs = lemacs; }; in { inherit pkgs; packages.emacs = fg42.emacsInUse; packages.default = pkgs.writeScriptBin "fg42" '' #!${pkgs.stdenv.shell} export FG42_HOME=${fg42}/fg42 export FG42_USE_NIX=true; LIBRARY_PATH="$(cc -print-file-name=libgccjit.so):$LIBRARY_PATH" \ FG42_WM=false ${fg42.emacsInUse}/bin/emacs \ --name FG42 \ -q \ --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_USE_NIX=true; export FG42_HOME=${fg42}/fg42 LIBRARY_PATH=$(cc -print-file-name=libgccjit.so):$LIBRARY_PATH \ FG42_WM=true ${fg42.emacsInUse}/bin/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 # ''; # }; } ); }