diff --git a/flake.lock b/flake.lock index a8a6615..f65a282 100644 --- a/flake.lock +++ b/flake.lock @@ -359,6 +359,24 @@ "inputs": { "systems": "systems_2" }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_3" + }, "locked": { "lastModified": 1694529238, "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", @@ -373,6 +391,21 @@ "type": "github" } }, + "flakey-profile": { + "locked": { + "lastModified": 1712898590, + "narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=", + "owner": "lf-", + "repo": "flakey-profile", + "rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d", + "type": "github" + }, + "original": { + "owner": "lf-", + "repo": "flakey-profile", + "type": "github" + } + }, "format-all": { "flake": false, "locked": { @@ -747,6 +780,41 @@ "type": "indirect" } }, + "lix": { + "flake": false, + "locked": { + "lastModified": 1720626042, + "narHash": "sha256-f8k+BezKdJfmE+k7zgBJiohtS3VkkriycdXYsKOm3sc=", + "rev": "2a4376be20d70feaa2b0e640c5041fb66ddc67ed", + "type": "tarball", + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/2a4376be20d70feaa2b0e640c5041fb66ddc67ed.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://git.lix.systems/lix-project/lix/archive/2.90.0.tar.gz" + } + }, + "lix-module": { + "inputs": { + "flake-utils": "flake-utils", + "flakey-profile": "flakey-profile", + "lix": "lix", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1720641669, + "narHash": "sha256-yEO2cGNgzm9x/XxiDQI+WckSWnZX63R8aJLBRSXtYNE=", + "rev": "5c48c833c15bb80d127a398a8c2484d42fdd8257", + "type": "tarball", + "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/5c48c833c15bb80d127a398a8c2484d42fdd8257.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz" + } + }, "magit-file-icons": { "flake": false, "locked": { @@ -792,7 +860,7 @@ "evil-quick-diff": "evil-quick-diff", "explain-pause-mode": "explain-pause-mode", "flake-compat": "flake-compat", - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "format-all": "format-all", "nix-straight": [ "nix-straight" @@ -1297,6 +1365,7 @@ "hyprland": "hyprland", "hyprland-plugins": "hyprland-plugins", "kdenlive-pin-nixpkgs": "kdenlive-pin-nixpkgs", + "lix-module": "lix-module", "magit-file-icons": "magit-file-icons", "mini-frame": "mini-frame", "nix-doom-emacs": "nix-doom-emacs", @@ -1441,6 +1510,21 @@ "type": "github" } }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "ts-fold": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 494ab68..5c4319a 100644 --- a/flake.nix +++ b/flake.nix @@ -151,6 +151,7 @@ system = systemSettings.system; modules = [ (./. + "/profiles" + ("/" + systemSettings.profile) + "/configuration.nix") + inputs.lix-module.nixosModules.default ./system/bin/phoenix.nix ]; # load configuration.nix from selected PROFILE specialArgs = { @@ -200,6 +201,10 @@ }; inputs = { + lix-module = { + url = "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz"; + inputs.nixpkgs.follows = "nixpkgs"; + }; nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs-stable.url = "nixpkgs/nixos-24.05"; emacs-pin-nixpkgs.url = "nixpkgs/f72123158996b8d4449de481897d855bc47c7bf6"; diff --git a/profiles/work/configuration.nix b/profiles/work/configuration.nix index d6b61eb..0cba690 100644 --- a/profiles/work/configuration.nix +++ b/profiles/work/configuration.nix @@ -39,6 +39,9 @@ experimental-features = nix-command flakes ''; + # wheel group gets trusted access to nix daemon + nix.settings.trusted-users = [ "@wheel" ]; + # I'm sorry Stallman-taichou nixpkgs.config.allowUnfree = true; diff --git a/sync-user.sh b/sync-user.sh index 83c71d3..803e8c5 100755 --- a/sync-user.sh +++ b/sync-user.sh @@ -6,6 +6,9 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +# Fix root-owned sqlite errors +sudo chown -R 1000:users ~/.cache/nix; + # Install and build home-manager configuration home-manager switch --flake $SCRIPT_DIR#user; diff --git a/user/app/doom-emacs/config.el b/user/app/doom-emacs/config.el index b7fa639..19af93c 100644 --- a/user/app/doom-emacs/config.el +++ b/user/app/doom-emacs/config.el @@ -247,6 +247,7 @@ (setq org-attach-directory "~/Org/.attach") (setq org-attach-id-dir "~/Org/.attach") (setq org-id-locations-file "~/Org/.orgids") +(setq org-cycle-include-plain-lists 'integrate) (remove-hook 'after-save-hook #'+literate|recompile-maybe) (set-company-backend! 'org-mode nil) @@ -276,7 +277,6 @@ `(org-agenda-date-weekend-today :inherit 'unspecified :foreground ,(nth 1 (nth 15 doom-themes--colors)) :weight bold :height 1.1) ) - (after! org (org-eldoc-load)) (with-eval-after-load 'org (global-org-modern-mode)) @@ -691,6 +691,44 @@ If the path from LINK does not exist, nil is returned." "u" #'crdt-list-users ) +(require 'org-analyzer) +(setq org-analyzer-wrapper-command "org-analyzer") +(setq org-analyzer-jar-file-name "~/.nix-profile/bin/org-analyzer.jar") +(setq org-analyzer-java-program "~/.nix-profile/bin/org-analyzer") ;; Is not actually java, buta wrapper shell script + +(defun org-analyzer-start-process (org-dir) + "Start the org analyzer process . +Argument ORG-DIR is where the org-files are located." + (org-analyzer-cleanup-process-state) + (unless (file-exists-p org-dir) + (warn "org-analyzer was started with org-directory set to + \"%s\"\nbut this directory does not exist. +Please set the variable `org-directory' to the location where you keep your org files." + org-directory)) + (let* ((name (format " *org-analyzer [org-dir:%s]*" org-dir)) + (proc-buffer (generate-new-buffer name)) + (proc nil)) + (setq org-analyzer-process-buffer proc-buffer) + (with-current-buffer proc-buffer + (setq default-directory (if (file-exists-p org-dir) + org-dir default-directory) + proc (condition-case err + (let ((process-connection-type nil) + (process-environment process-environment)) + (start-process name + (current-buffer) + org-analyzer-wrapper-command + "--port" + (format "%d" org-analyzer-http-port) + "--started-from-emacs" + (if (file-exists-p org-dir) org-dir ""))) + (error + (concat "Can't start org-analyzer (%s: %s)" + (car err) (cadr err))))) + (set-process-query-on-exit-flag proc nil) + (set-process-filter proc #'org-analyzer-process-filter)) + proc-buffer)) + ;;;------ Org roam configuration ------;;; (require 'org-roam) (require 'org-roam-dailies) diff --git a/user/app/doom-emacs/doom.nix b/user/app/doom-emacs/doom.nix index 41840f7..c516fbe 100644 --- a/user/app/doom-emacs/doom.nix +++ b/user/app/doom-emacs/doom.nix @@ -58,6 +58,7 @@ in hledger hunspell hunspellDicts.en_US-large (pkgs-emacs.mu.override { emacs = emacs29-pgtk; }) + (pkgs.callPackage ./pkgs/org-analyzer.nix {}) emacsPackages.mu4e isync msmtp diff --git a/user/app/doom-emacs/doom.org b/user/app/doom-emacs/doom.org index b9308fe..e68a049 100644 --- a/user/app/doom-emacs/doom.org +++ b/user/app/doom-emacs/doom.org @@ -317,6 +317,7 @@ Doom Emacs is traditionally installed by cloning the repository ([[https://githu (setq org-attach-directory "~/Org/.attach") (setq org-attach-id-dir "~/Org/.attach") (setq org-id-locations-file "~/Org/.orgids") +(setq org-cycle-include-plain-lists 'integrate) (remove-hook 'after-save-hook #'+literate|recompile-maybe) (set-company-backend! 'org-mode nil) @@ -346,7 +347,6 @@ Doom Emacs is traditionally installed by cloning the repository ([[https://githu `(org-agenda-date-weekend-today :inherit 'unspecified :foreground ,(nth 1 (nth 15 doom-themes--colors)) :weight bold :height 1.1) ) - (after! org (org-eldoc-load)) (with-eval-after-load 'org (global-org-modern-mode)) @@ -824,6 +824,47 @@ exit "u" #'crdt-list-users ) +#+end_src +*** Org Analyzer +#+begin_src emacs-lisp :tangle config.el +(require 'org-analyzer) +(setq org-analyzer-wrapper-command "org-analyzer") +(setq org-analyzer-jar-file-name "~/.nix-profile/bin/org-analyzer.jar") +(setq org-analyzer-java-program "~/.nix-profile/bin/org-analyzer") ;; Is not actually java, buta wrapper shell script + +(defun org-analyzer-start-process (org-dir) + "Start the org analyzer process . +Argument ORG-DIR is where the org-files are located." + (org-analyzer-cleanup-process-state) + (unless (file-exists-p org-dir) + (warn "org-analyzer was started with org-directory set to + \"%s\"\nbut this directory does not exist. +Please set the variable `org-directory' to the location where you keep your org files." + org-directory)) + (let* ((name (format " *org-analyzer [org-dir:%s]*" org-dir)) + (proc-buffer (generate-new-buffer name)) + (proc nil)) + (setq org-analyzer-process-buffer proc-buffer) + (with-current-buffer proc-buffer + (setq default-directory (if (file-exists-p org-dir) + org-dir default-directory) + proc (condition-case err + (let ((process-connection-type nil) + (process-environment process-environment)) + (start-process name + (current-buffer) + org-analyzer-wrapper-command + "--port" + (format "%d" org-analyzer-http-port) + "--started-from-emacs" + (if (file-exists-p org-dir) org-dir ""))) + (error + (concat "Can't start org-analyzer (%s: %s)" + (car err) (cadr err))))) + (set-process-query-on-exit-flag proc nil) + (set-process-filter proc #'org-analyzer-process-filter)) + proc-buffer)) + #+end_src ** Org Roam Configuration *** Standard Org Roam Configuration @@ -2083,6 +2124,7 @@ Any git package can be configured for a particular commit or branch: - =(unpin! pinned-package another-pinned-package)= to get bleeding edge instead of Doom's stability #+BEGIN_SRC emacs-lisp :tangle packages.el +(package! org-analyzer :pin "0908eea") (package! embark :pin "0908eea") (package! dashboard) (package! direnv) @@ -2183,6 +2225,7 @@ in hledger hunspell hunspellDicts.en_US-large (pkgs-emacs.mu.override { emacs = emacs29-pgtk; }) + (pkgs.callPackage ./pkgs/org-analyzer.nix {}) emacsPackages.mu4e isync msmtp diff --git a/user/app/doom-emacs/packages.el b/user/app/doom-emacs/packages.el index e1297da..ecaccb8 100644 --- a/user/app/doom-emacs/packages.el +++ b/user/app/doom-emacs/packages.el @@ -1,3 +1,4 @@ +(package! org-analyzer :pin "0908eea") (package! embark :pin "0908eea") (package! dashboard) (package! direnv) diff --git a/user/app/doom-emacs/pkgs/org-analyzer.nix b/user/app/doom-emacs/pkgs/org-analyzer.nix new file mode 100644 index 0000000..d3c3974 --- /dev/null +++ b/user/app/doom-emacs/pkgs/org-analyzer.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchFromGitHub, pkgs, ... }: +let name = "clj-org-analyzer"; + version = "1.0.2"; +in stdenv.mkDerivation +{ + inherit name version; + + src = builtins.fetchurl { + url = "https://github.com/rksm/clj-org-analyzer/releases/download/1.0.2/org-analyzer-1.0.2.jar"; + sha256 = "sha256:1j5c688yg6f5y6n86rf6vkwd1csn1y4dc716d5bczmyr2sgi9c67"; + }; + + dontUnpack = true; + + installPhase = '' + mkdir $out $out/bin; + cp $src $out/bin/org-analyzer.jar; + echo "#!/bin/sh + ${pkgs.jdk}/bin/java -jar $out/bin/org-analyzer.jar $@" > $out/bin/org-analyzer + chmod +x $out/bin/org-analyzer.jar + chmod +x $out/bin/org-analyzer + ''; + +}