# 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 ]; }; test-x = pkgs.writeShellApplication { name = "test-x"; runtimeInputs = [ pkgs.xorg.xorgserver ]; text = '' ${pkgs.xorg.xorgserver.out}/bin/Xephyr -br -ac -noreset -screen 800x600 :1 ''; }; lemacs = pkgs.emacs29.override { withTreeSitter = true; } // (pkgs.lib.optionalAttrs (pkgs.stdenv.isLinux) { # Gtk causes a flickering issue on WM mode withGTK3 = false; toolkit = "lucid"; }); elispDepsFile = ./lisp/fg42/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; }; run-test-wm = pkgs.writeShellApplication { name = "run-test-wm"; runtimeInputs = [ fg42 ]; text = '' DISPLAY=:1 ${fg42}/bin/fg42-wm ''; }; in { inherit pkgs; packages.default = fg42; packages.${system}.default = fg42; devShells.default = pkgs.mkShell { nativeBuildInputs = [ fg42 pkgs.fish test-x run-test-wm ]; buildInputs = [ fg42 ]; # shellHook = '' # fish && exit # ''; }; } ); }