forked from FG42/FG42
Compare commits
6 Commits
Author | SHA1 | Date |
---|---|---|
Sameer Rahmani | d0ee179dc9 | |
Sameer Rahmani | 9453925e34 | |
Sameer Rahmani | 5ebb68c2ef | |
Sameer Rahmani | b4162580da | |
Sameer Rahmani | 5587149c09 | |
Sameer Rahmani | 3f39847600 |
36
flake.lock
36
flake.lock
|
@ -47,11 +47,11 @@
|
|||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712014858,
|
||||
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
|
||||
"lastModified": 1714641030,
|
||||
"narHash": "sha256-yzcRNDoyVP7+SCNX0wmuDju1NUCt8Dz9+lyUXEI0dbI=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
|
||||
"rev": "e5d10a24b66c3ea8f150e47dfdb0416ab7c3390e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -132,20 +132,14 @@
|
|||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"dir": "lib",
|
||||
"lastModified": 1711703276,
|
||||
"narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d8fe5e6c92d0d190646fb9f1056741a229980089",
|
||||
"type": "github"
|
||||
"lastModified": 1714640452,
|
||||
"narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"dir": "lib",
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib_2": {
|
||||
|
@ -253,16 +247,16 @@
|
|||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1713553841,
|
||||
"narHash": "sha256-k0p6s7cbN3cAeOBeTpIaFWbHhma+yNisC7HwAo4aDuA=",
|
||||
"ref": "refs/tags/v0.1.10",
|
||||
"rev": "8164261df59f6a31cbbd72b19777b1023aa38448",
|
||||
"revCount": 52,
|
||||
"lastModified": 1714648678,
|
||||
"narHash": "sha256-CxLSUYRk2quey0skgxa+v8mVE+pGSSPcxtK0uFq6YkQ=",
|
||||
"ref": "refs/tags/v0.1.11",
|
||||
"rev": "b4e667a73a0de7d83f78910d6fa3acc3b3044675",
|
||||
"revCount": 53,
|
||||
"type": "git",
|
||||
"url": "https://devheroes.codes/lxsameer/noether"
|
||||
},
|
||||
"original": {
|
||||
"ref": "refs/tags/v0.1.10",
|
||||
"ref": "refs/tags/v0.1.11",
|
||||
"type": "git",
|
||||
"url": "https://devheroes.codes/lxsameer/noether"
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
description = "FG42 - Emacs Editor for advance users";
|
||||
|
||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs/442d407992384ed9c0e6d352de75b69079904e4e";
|
||||
inputs.noether.url = "git+https://devheroes.codes/lxsameer/noether?ref=refs/tags/v0.1.10";
|
||||
inputs.noether.url = "git+https://devheroes.codes/lxsameer/noether?ref=refs/tags/v0.1.11";
|
||||
|
||||
inputs.emacs-overlay.url = "github:nix-community/emacs-overlay/0f7f3b39157419f3035a2dad39fbaf8a4ba0448d";
|
||||
inputs.flake-parts.url = "github:hercules-ci/flake-parts";
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
(require 'noether)
|
||||
(require 'noether-units)
|
||||
(require 'projectile)
|
||||
(require 'project)
|
||||
(require 'nerd-icons)
|
||||
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
(buffer-name-unit
|
||||
:label (format "%s " (nerd-icons-codicon "nf-cod-layers"))
|
||||
:len 20)
|
||||
(projectile-project-unit
|
||||
(project-unit
|
||||
:label (format "%s " (nerd-icons-octicon "nf-oct-project"))
|
||||
:len 20)
|
||||
(git-branch-unit
|
||||
|
@ -94,7 +94,7 @@ Appears on the center of the current window."
|
|||
(buffer-name-unit
|
||||
:label (format "%s " (nerd-icons-codicon "nf-cod-layers"))
|
||||
:len 30)
|
||||
|
||||
|
||||
(time-unit :label (format "%s " (nerd-icons-mdicon "nf-md-clock_time_three")))))
|
||||
|
||||
|
||||
|
|
|
@ -118,14 +118,14 @@ in combination with Corfu, Company or the default completion UI."
|
|||
;; first function returning a result wins. Note that the list of buffer-local
|
||||
;; completion functions takes precedence over the global list.
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-history)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-keyword)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-tex)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-sgml)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-rfc1345)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-abbrev)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-dict)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-elisp-symbol)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-line)
|
||||
;;(add-to-list 'completion-at-point-functions #'cape-keyword)
|
||||
(add-to-list 'completion-at-point-functions #'cape-elisp-symbol)
|
||||
(add-to-list 'completion-at-point-functions #'cape-dabbrev)
|
||||
(add-to-list 'completion-at-point-functions #'cape-file)
|
||||
(add-to-list 'completion-at-point-functions #'cape-elisp-block))
|
||||
|
|
|
@ -35,6 +35,9 @@ let
|
|||
./python
|
||||
./wm
|
||||
./verilog
|
||||
./workspace
|
||||
./rss
|
||||
./organize
|
||||
];
|
||||
in
|
||||
modules
|
||||
|
|
|
@ -26,9 +26,6 @@ let
|
|||
deps =
|
||||
(with pkgs.emacsPackages; [
|
||||
origami
|
||||
which-key
|
||||
projectile
|
||||
projectile-ripgrep
|
||||
pkg-info
|
||||
expand-region
|
||||
direnv
|
||||
|
@ -40,14 +37,13 @@ let
|
|||
avy
|
||||
ace-window
|
||||
flycheck
|
||||
org
|
||||
org-super-agenda
|
||||
rainbow-delimiters
|
||||
org-ql
|
||||
org-modern
|
||||
base16-theme
|
||||
tempel
|
||||
tempel-collection
|
||||
beacon
|
||||
hydra
|
||||
rg
|
||||
]);
|
||||
|
||||
drv = makeFG42Drv {
|
||||
|
|
|
@ -25,12 +25,12 @@
|
|||
(require 'fpkg)
|
||||
;; We build this file via the main FG42's Nix derivation. It
|
||||
;; contains the final Nix configuration of FG42.
|
||||
(require 'fg42/config)
|
||||
(require 'fg42/organize))
|
||||
(require 'fg42/config))
|
||||
|
||||
(require 'server)
|
||||
(require 'fg42/utils)
|
||||
|
||||
|
||||
(defun fg42/setup-font ()
|
||||
"Set the default font of `FG42' to FONT-NAME and FONT-SIZE."
|
||||
(let ((name (config-get font-name))
|
||||
|
@ -50,36 +50,12 @@
|
|||
(global-origami-mode t))
|
||||
|
||||
|
||||
(use! which-key
|
||||
"which-key is a minor mode for Emacs that displays the key bindings following
|
||||
your currently entered incomplete command (a prefix) in a popup. For example,
|
||||
after enabling the minor mode if you enter ~C-x~ and wait for the default of
|
||||
1 second the minibuffer will expand with all of the available key bindings
|
||||
that follow ~C-x~ (or as many as space allows given your settings).
|
||||
This includes prefixes like ~C-x 8~ which are shown in a different face."
|
||||
:config
|
||||
(which-key-setup-side-window-bottom)
|
||||
(which-key-mode))
|
||||
|
||||
|
||||
(use! projectile
|
||||
"Projectile is a project interaction library for Emacs. Its goal is to provide
|
||||
a nice set of features operating on a project level without introducing
|
||||
external dependencies."
|
||||
:hook (emacs-startup . projectile-mode)
|
||||
:config
|
||||
;; We don't want the auto discovery on startup
|
||||
(setq projectile-auto-discover nil)
|
||||
(setq projectile-enable-caching t)
|
||||
|
||||
:bind (:map projectile-mode-map
|
||||
("s-p" . projectile-command-map)
|
||||
("C-c p" . projectile-command-map)))
|
||||
|
||||
|
||||
(use! projectile-ripgrep
|
||||
"Use ripgrep with projectile"
|
||||
:after projectile)
|
||||
(use! rg
|
||||
"A ripgrep based search utility."
|
||||
:commands rg-menu
|
||||
:bind
|
||||
("C-c s" . rg-menu)
|
||||
("C-c p s" . rg-dwim-project-dir))
|
||||
|
||||
|
||||
(use! pkg-info
|
||||
|
@ -141,7 +117,7 @@ contextual information."
|
|||
|
||||
(use! avy
|
||||
"This cube controls the different aspect of buffer navigation"
|
||||
:bind ("M-1" . avy-goto-word-1))
|
||||
:bind ("C-c g" . avy-goto-word-1))
|
||||
|
||||
|
||||
(use! ace-window
|
||||
|
@ -220,6 +196,24 @@ of the Emacs Tempo library."
|
|||
"A collection of tempel templates.")
|
||||
|
||||
|
||||
(use! hydra
|
||||
"Once you summon the Hydra through the prefixed binding (the
|
||||
body+ any one head), all heads can be called in succession with only a
|
||||
short extension."
|
||||
:init
|
||||
(require 'hydra)
|
||||
:hook (emacs-startup . hydra-add-imenu)
|
||||
:config
|
||||
(defhydra hydra-zoom (global-map "<f2>")
|
||||
"zoom"
|
||||
("g" text-scale-increase "in")
|
||||
("l" text-scale-decrease "out")))
|
||||
|
||||
(use! beacon
|
||||
"Never lose sight of your curser."
|
||||
:hook (emacs-startup . beacon-mode))
|
||||
|
||||
|
||||
(defun fg42/setup-editor ()
|
||||
"Setup the overall functionality of FG42."
|
||||
|
||||
|
@ -295,8 +289,7 @@ of the Emacs Tempo library."
|
|||
(when (not (server-running-p))
|
||||
(when-wm
|
||||
(setq server-name "fg42-wm"))
|
||||
(server-start)
|
||||
(require 'org-protocol))
|
||||
(server-start))
|
||||
|
||||
(when-wm
|
||||
;; Activating the WM mode
|
||||
|
|
|
@ -181,8 +181,8 @@ match all of the components in any order."
|
|||
;; Configure the narrowing key.
|
||||
;; Both < and C-+ work reasonably well.
|
||||
(setq consult-narrow-key "<") ;; "C-+"
|
||||
(autoload 'projectile-project-root "projectile")
|
||||
(setq consult-project-function (lambda (_) (projectile-project-root)))
|
||||
(setq consult-project-function (lambda (_) (when (project-current)
|
||||
(project-root (project-current)))))
|
||||
|
||||
;; Optionally make narrowing help available in the minibuffer.
|
||||
;; You may want to use `embark-prefix-help-command' or which-key instead.
|
||||
|
|
|
@ -27,13 +27,13 @@
|
|||
|
||||
(require 'noether)
|
||||
(require 'noether-units)
|
||||
(require 'projectile)
|
||||
(require 'project)
|
||||
|
||||
(with-config "graphics"
|
||||
(require 'nerd-icons)
|
||||
|
||||
|
||||
(defvar fg42/-mode-icon)
|
||||
|
||||
|
||||
(defun fg42/-update-mode-icon ()
|
||||
"Set the current buffer name to the watched var."
|
||||
(setq fg42/-mode-icon major-mode))
|
||||
|
|
|
@ -67,7 +67,7 @@
|
|||
(buffer-name-unit
|
||||
:label (format "%s " (nerd-icons-codicon "nf-cod-layers"))
|
||||
:len 20)
|
||||
(projectile-project-unit
|
||||
(project-unit
|
||||
:label (format "%s " (nerd-icons-octicon "nf-oct-project"))
|
||||
:len 20)
|
||||
(git-branch-unit
|
||||
|
@ -81,7 +81,7 @@
|
|||
(buffer-name-unit
|
||||
:label "B: "
|
||||
:len 20)
|
||||
(projectile-project-unit
|
||||
(project-unit
|
||||
:label "P: "
|
||||
:len 20)
|
||||
(git-branch-unit
|
||||
|
|
|
@ -53,7 +53,6 @@
|
|||
"Smart mode line is a pretty simple yet fantastic alternative
|
||||
to Emacs modeline."
|
||||
:if (display-graphic-p)
|
||||
;;:after projectile
|
||||
:commands noether-global-mode
|
||||
:hook (emacs-startup . noether-global-mode)
|
||||
:config
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
# Fg42 - Emacs Editor for advance users
|
||||
#
|
||||
# Copyright (c) 2010-2024 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/>.
|
||||
|
||||
# This is the home manager module that exposes FG42. It differs
|
||||
# from FG42 modules that are structurally the same but used in
|
||||
# different context
|
||||
|
||||
# A list of default FG42 modules to build FG42 with.
|
||||
{ lib, config, pkgs, makeFG42Drv, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.fg42.organize;
|
||||
|
||||
deps =
|
||||
(with pkgs.emacsPackages; [
|
||||
org
|
||||
org-super-agenda
|
||||
org-ql
|
||||
org-modern
|
||||
] ++ optionals (cfg.org-roam) [
|
||||
org-roam
|
||||
org-roam-ui
|
||||
websocket
|
||||
simple-httpd
|
||||
f
|
||||
]);
|
||||
|
||||
drv = makeFG42Drv {
|
||||
pname = "organize";
|
||||
version = config.fg42.version;
|
||||
buildInputs = deps;
|
||||
src = ./.;
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
../editor
|
||||
];
|
||||
|
||||
options.fg42.organize = {
|
||||
enable = mkAndEnableOption "organize";
|
||||
org-roam = mkAndEnableOption "organize";
|
||||
org-dir = mkOption {
|
||||
type = types.str;
|
||||
default = "~/.orgs";
|
||||
example = literalExpression ''"~/.orgs"'';
|
||||
description = mdDoc ''
|
||||
A non-nix `path` (string `path`) of the location your want org-mode
|
||||
to store you org files.
|
||||
'';
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
fg42.elispPackages = [ drv ] ++ deps;
|
||||
|
||||
fg42.requires = [ drv.pname ];
|
||||
|
||||
fg42.vars = [
|
||||
(defVar "org-home" cfg.org-dir "Where to store org files.")
|
||||
(defVar "org-roam" cfg.org-roam "Enable org-roam?")
|
||||
];
|
||||
|
||||
meta = {
|
||||
maintainers = [ maintainers.lxsameer ];
|
||||
doc = ./README.md;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}
|
|
@ -22,28 +22,43 @@
|
|||
;;; Commentary:
|
||||
;;; Code:
|
||||
(eval-when-compile
|
||||
(require 'fpkg))
|
||||
(require 'fpkg)
|
||||
(require 'fg42/utils)
|
||||
(require 'fg42/config)
|
||||
(require 'hydra))
|
||||
|
||||
|
||||
(defvar fg42/org-super-agenda-groups nil)
|
||||
|
||||
(defvar fg42/org-home "~/.orgs"
|
||||
;;=============================================================================
|
||||
;; Vars that user meant to set
|
||||
;;=============================================================================
|
||||
(defvar org-home "~/.orgs"
|
||||
"The location to the org file repository.")
|
||||
|
||||
(defvar fg42/default-org-journal-heder
|
||||
"
|
||||
#+TITLE: Yearly Journal
|
||||
#+STARTUP: folded logdrawer logdone logreschedule indent content align constSI entitiespretty
|
||||
"
|
||||
"Org journal header.")
|
||||
|
||||
(defvar fg42/notes-file "notes.org")
|
||||
(defvar fg42/org-main-file "main.org")
|
||||
(defvar fg42/org-notes-file "notes.org")
|
||||
(defvar fg42/org-agenda-files "main.org")
|
||||
|
||||
(defvar fg42/global-tags nil)
|
||||
|
||||
(defvar fg42/agenda-files "main.org")
|
||||
;;=============================================================================
|
||||
;; Helper functions
|
||||
;;=============================================================================
|
||||
(defun fg42/org-home ()
|
||||
"Return the directory path to store everthing org related."
|
||||
(config-get-or "org-dir" org-home))
|
||||
|
||||
|
||||
(defun fg42/create-org-home ()
|
||||
"Create the org-files directory directory."
|
||||
(make-directory (fg42/org-home) t))
|
||||
|
||||
|
||||
(defun fg42/organize-setup ()
|
||||
"Setup all the necessary files and directories to use `org' and `org-roam'."
|
||||
(fg42/create-org-home))
|
||||
|
||||
;;=============================================================================
|
||||
;; Package defs
|
||||
;;=============================================================================
|
||||
(use! org-ql
|
||||
"This package provides a query language for Org files. It offers two
|
||||
syntax styles: Lisp-like sexps and search engine-like keywords.
|
||||
|
@ -63,7 +78,6 @@ Now you can sort-of do this already with custom agenda commands, but when you
|
|||
do that, you lose the daily/weekly aspect of the agenda: items are no longer
|
||||
shown based on deadline/scheduled timestamps, but are shown no-matter-what.
|
||||
|
||||
h
|
||||
For more information checkout `https://github.com/alphapapa/org-super-agenda'"
|
||||
:after org-agenda
|
||||
:config
|
||||
|
@ -72,8 +86,7 @@ For more information checkout `https://github.com/alphapapa/org-super-agenda'"
|
|||
org-agenda-include-deadlines t
|
||||
org-agenda-compact-blocks t
|
||||
org-agenda-start-day nil ;; Today
|
||||
org-agenda-span 1
|
||||
org-super-agenda-groups fg42/org-super-agenda-groups)
|
||||
org-agenda-span 1)
|
||||
(org-super-agenda-mode))
|
||||
|
||||
|
||||
|
@ -86,24 +99,27 @@ For more information checkout `https://github.com/alphapapa/org-super-agenda'"
|
|||
org-capture-templates
|
||||
(eval
|
||||
`(list
|
||||
'("t" "Todo" entry (file+headline ,(expand-file-name "main.org" fg42/org-home) "New Tasks")
|
||||
(file ,(expand-file-name "templates/todo" fg42/org-home))
|
||||
'("t" "Todo" entry (file+headline ,(expand-file-name fg42/org-main-file (fg42/org-home)) "New Tasks")
|
||||
(file ,(expand-file-name "templates/todo" (fg42/org-home)))
|
||||
:prepend t)
|
||||
'("l" "Link" entry (file+headline ,(expand-file-name "bookmarks.org" fg42/org-home) "Links")
|
||||
(file ,(expand-file-name "templates/links" fg42/org-home))
|
||||
'("l" "Link" entry (file+headline ,(expand-file-name "bookmarks.org" (fg42/org-home)) "Links")
|
||||
(file ,(expand-file-name "templates/links" (fg42/org-home)))
|
||||
:prepend t
|
||||
:immediate-finish t
|
||||
:empty-lines 1)
|
||||
|
||||
'("h" "Thoughts" entry (file+datetree ,(expand-file-name "journal.org" fg42/org-home))
|
||||
(file ,(expand-file-name "templates/thoughts" fg42/org-home)))))))
|
||||
'("h" "Thoughts" entry (file+datetree ,(expand-file-name "journal.org" (fg42/org-home)))
|
||||
(file ,(expand-file-name "templates/thoughts" (fg42/org-home))))))))
|
||||
|
||||
|
||||
(use! org-protocol
|
||||
"`org-protocol' intercepts calls from emacsclient to trigger custom actions without external
|
||||
dependencies. Only one protocol has to be configured with your external applications or
|
||||
the operating system, to trigger an arbitrary number of custom actions. Just register
|
||||
your custom sub-protocol and handler with the variable `org-protocol-protocol-alist'.")
|
||||
your custom sub-protocol and handler with the variable `org-protocol-protocol-alist'."
|
||||
:init
|
||||
(require 'org-protocol))
|
||||
|
||||
|
||||
(use! org
|
||||
"A GNU Emacs major mode for keeping notes, authoring documents, computational notebooks,
|
||||
|
@ -111,7 +127,9 @@ literate programming, maintaining to-do lists, planning projects, and more — i
|
|||
and effective plain text system.
|
||||
|
||||
For more info on ~org-mode~ check out `https://orgmode.org/'"
|
||||
:hook (org-mod . flyspell-mode)
|
||||
:hook
|
||||
(org-mod . flyspell-mode)
|
||||
(org-mode . fg42/organize-setup)
|
||||
:init
|
||||
(setq
|
||||
org-auto-align-tags nil
|
||||
|
@ -133,12 +151,12 @@ For more info on ~org-mode~ check out `https://orgmode.org/'"
|
|||
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄")
|
||||
org-agenda-current-time-string
|
||||
"<── now ─────────────────────────────────────────────────"
|
||||
org-agenda-files (concat (file-name-as-directory fg42/org-home)
|
||||
fg42/agenda-files)
|
||||
org-agenda-files (concat (file-name-as-directory (fg42/org-home))
|
||||
fg42/org-agenda-files)
|
||||
|
||||
org-directory fg42/org-home
|
||||
org-default-notes-file (concat (file-name-as-directory fg42/org-home)
|
||||
fg42/notes-file)
|
||||
org-directory (fg42/org-home)
|
||||
org-default-notes-file (concat (file-name-as-directory (fg42/org-home))
|
||||
fg42/org-notes-file)
|
||||
|
||||
org-refile-targets '((org-agenda-files :maxlevel . 3))
|
||||
|
||||
|
@ -154,5 +172,40 @@ For more info on ~org-mode~ check out `https://orgmode.org/'"
|
|||
(org-agenda-finalize . org-modern-mode)))
|
||||
|
||||
|
||||
(with-config "org-roam"
|
||||
(use! org-roam
|
||||
"Create a second brain for yourself with this great knowledge base tool."
|
||||
:after org
|
||||
:commands (org-roam-node-find org-roam-node-insert
|
||||
org-roam-capture org-roam-ui-mode)
|
||||
:config
|
||||
(setq-default org-roam-directory (file-truename (path-join (fg42/org-home) "roam"))
|
||||
org-roam-db-update-on-save t)
|
||||
(make-directory org-roam-directory t)
|
||||
(org-roam-db-autosync-mode))
|
||||
|
||||
(use! websocket
|
||||
"Websocket support for Elisp."
|
||||
:after org-roam)
|
||||
|
||||
(use! org-roam-ui
|
||||
"A nice web UI for `org-roam'"
|
||||
:after org-roam
|
||||
:config
|
||||
(setq org-roam-ui-sync-theme t
|
||||
org-roam-ui-follow t
|
||||
org-roam-ui-update-on-save t
|
||||
org-roam-ui-open-on-start t))
|
||||
|
||||
(defhydra hydra-org-roam (:exit t)
|
||||
"Org Roam"
|
||||
("i" org-roam-node-insert "Insert")
|
||||
("f" org-roam-node-find "Find")
|
||||
("c" org-roam-capture "Capture")
|
||||
("u" org-roam-ui-mode "Web UI"))
|
||||
|
||||
(global-set-key (kbd "C-c o") 'hydra-org-roam/body))
|
||||
|
||||
|
||||
(provide 'fg42/organize)
|
||||
;;; organize.el ends here
|
|
@ -0,0 +1,59 @@
|
|||
# Fg42 - Emacs Editor for advance users
|
||||
#
|
||||
# Copyright (c) 2010-2024 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/>.
|
||||
|
||||
# This is the home manager module that exposes FG42. It differs
|
||||
# from FG42 modules that are structurally the same but used in
|
||||
# different context
|
||||
|
||||
# A list of default FG42 modules to build FG42 with.
|
||||
{ lib, config, pkgs, makeFG42Drv, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.fg42.rss;
|
||||
|
||||
deps =
|
||||
(with pkgs.emacsPackages; [
|
||||
elfeed
|
||||
elfeed-goodies
|
||||
]);
|
||||
|
||||
drv = makeFG42Drv {
|
||||
pname = "rss";
|
||||
version = config.fg42.version;
|
||||
buildInputs = deps;
|
||||
src = ./.;
|
||||
};
|
||||
in
|
||||
{
|
||||
options.fg42.rss.enable = mkAndEnableOption "rss";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
fg42.elispPackages = [ drv ] ++ deps;
|
||||
|
||||
fg42.requires = [ drv.pname ];
|
||||
|
||||
fg42.paths = (with pkgs;[
|
||||
curl
|
||||
]);
|
||||
|
||||
meta = {
|
||||
maintainers = [ maintainers.lxsameer ];
|
||||
doc = ./README.md;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*-
|
||||
;;
|
||||
;; Copyright (c) 2010-2024 Sameer Rahmani & Contributors
|
||||
;;
|
||||
;; Author: Sameer Rahmani <lxsameer@gnu.org>
|
||||
;; URL: https://devheroes.codes/FG42/FG42
|
||||
;; Version: 4.0.0
|
||||
;;
|
||||
;; 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, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; 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/>.
|
||||
;;
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
(eval-when-compile
|
||||
(require 'fpkg))
|
||||
|
||||
|
||||
(use! elfeed
|
||||
"The best rss reader you can ask for."
|
||||
:commands elfeed
|
||||
:bind
|
||||
("C-x w" . elfeed))
|
||||
|
||||
|
||||
(provide 'fg42/rss)
|
||||
;;; rss.el ends here
|
|
@ -0,0 +1,54 @@
|
|||
# Fg42 - Emacs Editor for advance users
|
||||
#
|
||||
# Copyright (c) 2010-2024 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/>.
|
||||
|
||||
# This is the home manager module that exposes FG42. It differs
|
||||
# from FG42 modules that are structurally the same but used in
|
||||
# different context
|
||||
|
||||
# A list of default FG42 modules to build FG42 with.
|
||||
{ lib, config, pkgs, makeFG42Drv, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.fg42.workspace;
|
||||
|
||||
deps =
|
||||
(with pkgs.emacsPackages; [
|
||||
perspective
|
||||
]);
|
||||
|
||||
drv = makeFG42Drv {
|
||||
pname = "workspace";
|
||||
version = config.fg42.version;
|
||||
buildInputs = deps;
|
||||
src = ./.;
|
||||
};
|
||||
in
|
||||
{
|
||||
options.fg42.workspace.enable = mkAndEnableOption "workspace";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
fg42.elispPackages = [ drv ] ++ deps;
|
||||
|
||||
fg42.requires = [ drv.pname ];
|
||||
|
||||
meta = {
|
||||
maintainers = [ maintainers.lxsameer ];
|
||||
doc = ./README.md;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*-
|
||||
;;
|
||||
;; Copyright (c) 2010-2024 Sameer Rahmani & Contributors
|
||||
;;
|
||||
;; Author: Sameer Rahmani <lxsameer@gnu.org>
|
||||
;; URL: https://devheroes.codes/FG42/FG42
|
||||
;; Version: 4.0.0
|
||||
;;
|
||||
;; 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, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; 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/>.
|
||||
;;
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
(eval-when-compile
|
||||
(require 'fpkg))
|
||||
|
||||
|
||||
(use! perspective
|
||||
"The Perspective package provides multiple named workspaces (or perspectives)
|
||||
in Emacs"
|
||||
:commands persp-mode
|
||||
:hook (emacs-startup . persp-mode)
|
||||
:bind
|
||||
("C-x C-b" . persp-list-buffers)
|
||||
:custom
|
||||
(persp-mode-prefix-key (kbd "C-c w")))
|
||||
|
||||
|
||||
(provide 'fg42/workspace)
|
||||
;;; workspace.el ends here
|
Loading…
Reference in New Issue