diff --git a/ImGuiFrontend.cc b/ImGuiFrontend.cc index 57a961f..f3019d3 100644 --- a/ImGuiFrontend.cc +++ b/ImGuiFrontend.cc @@ -565,7 +565,7 @@ GUIFrontend::Step(Editor &ed, bool &running) running = false; } - // Switch font based on current buffer's edit mode + // Switch font based on current buffer's edit mode (deferred to next frame) { Buffer *cur = wed.CurrentBuffer(); if (cur) { diff --git a/default.nix b/default.nix index 1dcc9da..687d04c 100644 --- a/default.nix +++ b/default.nix @@ -1,6 +1,5 @@ { - pkgs ? import {}, - lib ? pkgs.lib, + lib, stdenv, cmake, ncurses, @@ -10,9 +9,10 @@ kdePackages, qt6Packages ? kdePackages.qt6Packages, installShellFiles, + copyDesktopItems, + makeDesktopItem, graphical ? false, graphical-qt ? false, - ... }: let cmakeContent = builtins.readFile ./CMakeLists.txt; @@ -23,25 +23,29 @@ let version = builtins.head (builtins.match ".*set\\(KTE_VERSION \"(.+)\"\\).*" versionLine); in stdenv.mkDerivation { - pname = "kte"; + pname = if graphical then (if graphical-qt then "kge-qt" else "kge") else "kte"; inherit version; src = lib.cleanSource ./.; nativeBuildInputs = [ cmake - ncurses installShellFiles - ] - ++ lib.optionals graphical [ + ] ++ lib.optionals graphical [ + copyDesktopItems + ] ++ lib.optionals graphical-qt [ + qt6Packages.wrapQtAppsHook + ]; + + buildInputs = [ + ncurses + ] ++ lib.optionals graphical [ SDL2 libGL xorg.libX11 - ] - ++ lib.optionals graphical-qt [ + ] ++ lib.optionals graphical-qt [ kdePackages.qt6ct qt6Packages.qtbase - qt6Packages.wrapQtAppsHook ]; cmakeFlags = [ @@ -51,6 +55,30 @@ stdenv.mkDerivation { "-DKTE_STATIC_LINK=OFF" ]; + desktopItems = lib.optionals graphical [ + (makeDesktopItem { + name = "kge"; + desktopName = "kge"; + genericName = "Text Editor"; + comment = "kyle's graphical text editor"; + exec = if graphical-qt then "kge-qt %F" else "kge %F"; + icon = "kge"; + terminal = false; + categories = [ "Utility" "TextEditor" "Development" ]; + mimeTypes = [ + "text/plain" + "text/x-c" + "text/x-c++" + "text/x-python" + "text/x-go" + "text/x-rust" + "application/json" + "text/markdown" + "text/x-shellscript" + ]; + }) + ]; + installPhase = '' runHook preInstall @@ -59,14 +87,11 @@ stdenv.mkDerivation { installManPage ../docs/kte.1 ${lib.optionalString graphical '' - mkdir -p $out/bin - - ${if graphical-qt then '' + ${if graphical-qt then '' cp kge $out/bin/kge-qt '' else '' cp kge $out/bin/kge ''} - installManPage ../docs/kge.1 mkdir -p $out/share/icons/hicolor/256x256/apps @@ -75,4 +100,10 @@ stdenv.mkDerivation { runHook postInstall ''; + + meta = { + description = "kyle's text editor" + lib.optionalString graphical " (graphical)"; + platforms = lib.platforms.unix; + mainProgram = if graphical then (if graphical-qt then "kge-qt" else "kge") else "kte"; + }; } diff --git a/flake.nix b/flake.nix index 8d783ed..0290151 100644 --- a/flake.nix +++ b/flake.nix @@ -3,8 +3,7 @@ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - outputs = - inputs@{ self, nixpkgs, ... }: + outputs = { self, nixpkgs, ... }: let eachSystem = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed; pkgsFor = system: import nixpkgs { inherit system; }; @@ -17,5 +16,27 @@ kge = (pkgsFor system).callPackage ./default.nix { graphical = true; graphical-qt = false; }; qt = (pkgsFor system).callPackage ./default.nix { graphical = true; graphical-qt = true; }; }); + + devShells = eachSystem (system: + let pkgs = pkgsFor system; + in { + default = pkgs.mkShell { + inputsFrom = [ self.packages.${system}.kge ]; + packages = with pkgs; [ gdb valgrind ]; + }; + terminal = pkgs.mkShell { + inputsFrom = [ self.packages.${system}.kte ]; + }; + qt = pkgs.mkShell { + inputsFrom = [ self.packages.${system}.qt ]; + packages = with pkgs; [ gdb valgrind ]; + }; + } + ); + + overlays.default = final: prev: { + kte = self.packages.${final.system}.kte; + kge = self.packages.${final.system}.kge; + }; }; }