This commit is contained in:
Mateusz Słodkowicz 2025-05-23 18:07:26 +02:00
parent fd229ecd76
commit 371b1b1432
Signed by: materus
GPG Key ID: 28D140BCA60B4FD1
13 changed files with 740 additions and 460 deletions

View File

@ -1,6 +1,6 @@
{ pkgs, lib, ... }: { pkgs, lib, ... }:
{ {
#REGION test
#sound.enable = true; #sound.enable = true;
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {
@ -9,20 +9,20 @@
alsa.enable = true; alsa.enable = true;
alsa.support32Bit = true; alsa.support32Bit = true;
pulse.enable = true; pulse.enable = true;
systemWide = false; systemWide = true;
jack.enable = true; jack.enable = true;
}; };
hardware.pulseaudio.enable = false; hardware.pulseaudio.enable = false;
environment.sessionVariables = environment.sessionVariables =
let let
makePluginPath = format: makePluginPath =
(lib.makeSearchPath format [ format:
"$HOME/.${format}:"
+ (lib.makeSearchPath format [
"$HOME/.nix-profile/lib" "$HOME/.nix-profile/lib"
"/run/current-system/sw/lib" "/run/current-system/sw/lib"
"/etc/profiles/per-user/$USER/lib" "/etc/profiles/per-user/$USER/lib"
]) ]);
+ ":$HOME/.${format}";
in in
{ {
ALSOFT_DRIVERS = "pulse"; ALSOFT_DRIVERS = "pulse";
@ -36,11 +36,37 @@
}; };
services.udev = { services.udev = let
script = pkgs.writeShellScript "arch-mknod" ''
ACTION=$1
KERNEL=$(basename $2)
MAJOR=$3
MINOR=$4
if (systemctl is-active --quiet systemd-nspawn@archlinux); then
if [[ $ACTION == "add" || "$ACTION" == "change" ]]; then
machinectl shell root@archlinux /bin/bash -c "
if ! [ -f /dev/$KERNEL ]; then
mknod /dev/$KERNEL c $MAJOR $MINOR
chmod 660 /dev/$KERNEL
chown root:input /dev/$KERNEL
fi
"
elif [[ $ACTION == "remove" ]]; then
machinectl shell root@archlinux /bin/rm /dev/$KERNEL
fi
fi
'';
in {
extraRules = '' extraRules = ''
KERNEL=="rtc0", GROUP="audio" KERNEL=="rtc0", GROUP="audio"
KERNEL=="hpet", GROUP="audio" KERNEL=="hpet", GROUP="audio"
DEVPATH=="/devices/virtual/misc/cpu_dma_latency", OWNER="root", GROUP="audio", MODE="0660" DEVPATH=="/devices/virtual/misc/cpu_dma_latency", OWNER="root", GROUP="audio", MODE="0660"
SUBSYSTEM=="hidraw", KERNEL=="hidraw*", RUN+="${script} ''$env{ACTION} ''$env{DEVNAME} ''$env{MAJOR} ''$env{MINOR}"
''; '';
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [

View File

@ -102,10 +102,15 @@ in
"/:/run/host-root" "/:/run/host-root"
"/run/udev" "/run/udev"
"/run/pipewire"
"/sys/class"
"/sys/devices"
"/dev/fuse" "/dev/fuse"
"/dev/snd" "/dev/snd"
"/dev/input" "/dev/input"
"/dev/uinput"
"/dev/shm" "/dev/shm"
"/dev/kfd" "/dev/kfd"
"/dev/dri" "/dev/dri"
@ -131,9 +136,10 @@ in
overrideStrategy = "asDropin"; overrideStrategy = "asDropin";
serviceConfig = { serviceConfig = {
DeviceAllow = [ DeviceAllow = [
"char-tty rwm" "char-* rwm"
"char-input rwm" "block-* rwm"
"char-drm rwm" "/dev/shm rwm"
]; ];
}; };
}; };

View File

@ -24,7 +24,8 @@ in
"rcu_nocbs=${materusArg.materusPC.vmCores}" "rcu_nocbs=${materusArg.materusPC.vmCores}"
"nohz_full=${materusArg.materusPC.vmCores}" "nohz_full=${materusArg.materusPC.vmCores}"
"vfio_iommu_type1.allow_unsafe_interrupts=1" "vfio_iommu_type1.allow_unsafe_interrupts=1"
"pcie_acs_override=downstream,multifunction" /*"pci-stub.ids=1002:744c"*/ "pcie_acs_override=downstream,multifunction"
#''vfio-pci.ids="1002:744c"''
"nox2apic" "nox2apic"
"nvme_core.default_ps_max_latency_us=0" "nvme_core.default_ps_max_latency_us=0"
"nvme_core.io_timeout=255" "nvme_core.io_timeout=255"
@ -32,10 +33,13 @@ in
"nvme_core.shutdown_timeout=10" "nvme_core.shutdown_timeout=10"
"amd_iommu=on" "amd_iommu=on"
"amdgpu.ppfeaturemask=0xffffffff" "amdgpu.ppfeaturemask=0xffffffff"
"amdgpu.runpm=0"
"iommu=pt" "iommu=pt"
"psi=1" "psi=1"
"i915.force_probe=!56a6"
"xe.force_probe=56a6"
] ++ video; ] ++ video;
boot.kernelModules = [ "pci-stub" "amdgpu" "i2c_dev" "kvm_amd" "vfio" "vfio_iommu_type1" "vfio-pci" "kvmfr" ]; boot.kernelModules = [ "pci-stub" "amdgpu" "i2c_dev" "kvm_amd" "vfio" "vfio_iommu_type1" "vfio-pci" "kvmfr" "xe" ];
boot.extraModprobeConfig = '' boot.extraModprobeConfig = ''
options kvm_amd nested=1 avic=1 npt=1 sev=0 options kvm_amd nested=1 avic=1 npt=1 sev=0
options vfio_iommu_type1 allow_unsafe_interrupts=1 options vfio_iommu_type1 allow_unsafe_interrupts=1
@ -49,8 +53,8 @@ in
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ]; boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ "amdgpu" ]; boot.initrd.kernelModules = [ "vfio-pci" "amdgpu" ];
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback kvmfr ]; boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback kvmfr ];

View File

@ -31,6 +31,8 @@
hardware.opengl.driSupport32Bit = true; hardware.opengl.driSupport32Bit = true;
hardware.opengl.extraPackages = with pkgs; [ hardware.opengl.extraPackages = with pkgs; [
vaapiVdpau vaapiVdpau
vpl-gpu-rt
intel-media-driver
libvdpau-va-gl libvdpau-va-gl
amdvlk amdvlk
vkbasalt vkbasalt

View File

@ -1,16 +1,21 @@
{ pkgs, materusArg, lib, ... }: {
pkgs,
materusArg,
lib,
...
}:
{ {
imports = [ imports = [
./plasma.nix ./plasma.nix
]; ];
home.stateVersion = "23.05"; home.stateVersion = "23.05";
home.homeDirectory = "/home/materus"; home.homeDirectory = "/home/materus";
programs.git.signing.signByDefault = true; programs.git.signing.signByDefault = true;
xdg.userDirs.enable = true; xdg.userDirs.enable = true;
materus.profile = { materus.profile = {
fonts.enable = lib.mkDefault true; fonts.enable = lib.mkDefault true;
nixpkgs.enable = lib.mkDefault false; nixpkgs.enable = lib.mkDefault false;
enableDesktop = lib.mkDefault true; enableDesktop = lib.mkDefault true;
@ -19,78 +24,86 @@
enableNixDevel = lib.mkDefault true; enableNixDevel = lib.mkDefault true;
editor.emacs.enable = true; editor.emacs.enable = true;
editor.code.fhs.enable = true; editor.code.fhs.enable = true;
editor.code.fhs.packages = (ps: with ps; let llvmpkgs = llvmPackages_18; in [ editor.code.fhs.packages = (
llvmpkgs.clang ps:
llvmpkgs.llvm with ps;
llvmpkgs.bintools let
llvmpkgs.lld llvmpkgs = llvmPackages_18;
llvmpkgs.lldb in
llvmpkgs.libllvm [
llvmpkgs.mlir llvmpkgs.clang
llvmpkgs.libllvm.dev llvmpkgs.llvm
llvmpkgs.bintools
llvmpkgs.lld
llvmpkgs.lldb
llvmpkgs.libllvm
llvmpkgs.mlir
llvmpkgs.libllvm.dev
fpc fpc
xmake xmake
raylib raylib
gcc gcc
gdb gdb
materusArg.unstable.nixd materusArg.unstable.nixd
nixfmt-rfc-style nixfmt-rfc-style
nixpkgs-fmt nixpkgs-fmt
cmake cmake
gnumake gnumake
ninja ninja
binutils binutils
coreutils coreutils
util-linux util-linux
openssl openssl
openssl.dev openssl.dev
pkg-config pkg-config
dotnet-sdk_8 dotnet-sdk_8
mono mono
mold mold
python3 python3
lua lua
gtk4.dev gtk4.dev
gtk4 gtk4
glib glib
glib.dev glib.dev
miniaudio miniaudio
SDL2.dev SDL2.dev
SDL2 SDL2
freeglut.dev freeglut.dev
freeglut freeglut
boost.dev boost.dev
boost boost
glew.dev glew.dev
libGL.dev libGL.dev
libGLU.dev libGLU.dev
vulkan-loader.dev vulkan-loader.dev
vulkan-headers vulkan-headers
xorg.xorgproto xorg.xorgproto
xorg.libX11.dev xorg.libX11.dev
xorg.libXrandr.dev xorg.libXrandr.dev
xorg.libXrender.dev xorg.libXrender.dev
rustup rustup
freetype.dev freetype.dev
fpc fpc
gradle gradle
bison bison
flex flex
ldc ldc
dmd dmd
dub dub
]); ]
);
}; };
home.packages = [ home.packages = [
materusArg.pkgs.ffmpeg_7-amf-full materusArg.pkgs.ffmpeg_7-amf-full
(materusArg.pkgs.polymc-qt5.wrap { extraJDKs = [ pkgs.graalvm-ce ]; extraLibs = [ ]; }) (materusArg.pkgs.polymc.wrap {
extraJDKs = [ pkgs.graalvm-ce ];
extraLibs = [ ];
})
pkgs.git-crypt pkgs.git-crypt
pkgs.obsidian pkgs.obsidian
]; ];
@ -133,7 +146,11 @@
exec = "${script} %U"; exec = "${script} %U";
icon = "brave-browser"; icon = "brave-browser";
terminal = false; terminal = false;
categories = [ "Application" "Network" "WebBrowser" ]; categories = [
"Application"
"Network"
"WebBrowser"
];
mimeType = [ mimeType = [
"application/pdf" "application/pdf"
"application/rdf+xml" "application/rdf+xml"

View File

@ -1,6 +1,5 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
{ {
services.displayManager.defaultSession = "plasma";
xdg.portal.enable = true; xdg.portal.enable = true;
xdg.portal.wlr.enable = true; xdg.portal.wlr.enable = true;

View File

@ -1,5 +1,10 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
let let
plasma-materus = pkgs.writeScript "plasma-materus" ''
export KWIN_DRM_DEVICES="/dev/dri/by-path/pci-0000\:53\:00.0-card"
${pkgs.kdePackages.plasma-workspace}/libexec/plasma-dbus-run-session-if-needed ${pkgs.kdePackages.plasma-workspace}/bin/startplasma-wayland
'';
westonSddm = let xcfg = config.services.xserver; in pkgs.writeText "weston.ini" westonSddm = let xcfg = config.services.xserver; in pkgs.writeText "weston.ini"
'' ''
[core] [core]
@ -21,7 +26,7 @@ let
mode=1920x1080@240 mode=1920x1080@240
[output] [output]
name=DP-2 name=DP-4
mode=off mode=off
[output] [output]
@ -31,6 +36,8 @@ let
''; '';
in in
{ {
services.displayManager.defaultSession = "plasma-materus";
services.displayManager.sddm.enable = true; services.displayManager.sddm.enable = true;
services.displayManager.sddm.wayland.enable = true; services.displayManager.sddm.wayland.enable = true;
services.displayManager.sddm.wayland.compositor = lib.mkForce "weston"; services.displayManager.sddm.wayland.compositor = lib.mkForce "weston";
@ -39,6 +46,17 @@ in
"--shell=kiosk" "--shell=kiosk"
"-c ${westonSddm}" "-c ${westonSddm}"
]; ];
services.displayManager.sessionPackages = [
((pkgs.writeTextDir "share/wayland-sessions/plasma-materus.desktop" ''
[Desktop Entry]
Name=Plasma (Wayland Materus)
Comment=Plasma Desktop with KWIN_DRM_DEVICES env
Exec=${plasma-materus}
DesktopNames=KDE
Type=Application
'')
.overrideAttrs (_: {passthru.providedSessions = ["plasma-materus"];}))
];
services.displayManager.sddm.settings = { services.displayManager.sddm.settings = {
General = { General = {
@ -49,4 +67,4 @@ in
CursorSize = "24"; CursorSize = "24";
}; };
}; };
} }

View File

@ -6,7 +6,7 @@
}: }:
{ {
programs.gamemode.enable = true; programs.gamemode.enable = true;
programs.corectrl.enable = true; programs.corectrl.enable = true;
@ -14,13 +14,29 @@
systemd.tmpfiles.rules = [ "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}" ]; systemd.tmpfiles.rules = [ "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}" ];
# Gamepad
services.udev = {
packages = with pkgs; [
game-devices-udev-rules
];
};
hardware.uinput.enable = true;
hardware.steam-hardware.enable = true;
nix.package = pkgs.nixVersions.nix_2_28;
programs.steam = {
enable = false;
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
};
services.flatpak.enable = true; services.flatpak.enable = true;
services.gvfs.enable = true; services.gvfs.enable = true;
services.xserver.xkb.layout = "pl"; services.xserver.xkb.layout = "pl";
services.xserver.enable = true; services.xserver.enable = true;
services.xserver.videoDrivers = [ "amdgpu" ]; #services.xserver.videoDrivers = [ "amdgpu" "intel" ];
services.dbus.enable = true; services.dbus.enable = true;
services.dbus.packages = [ pkgs.gcr ]; services.dbus.packages = [ pkgs.gcr ];
@ -128,9 +144,6 @@
autoStart = false; autoStart = false;
}; };
hardware.sane.enable = true;
hardware.sane.extraBackends = [ pkgs.hplipWithPlugin ];
environment.enableAllTerminfo = true; environment.enableAllTerminfo = true;
environment.pathsToLink = [ environment.pathsToLink = [
"/share/zsh" "/share/zsh"

View File

@ -7,9 +7,9 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
programs.neovim = { programs.neovim = {
enable = true; enable = true;
package = materusArg.unstable.neovim-unwrapped; package = pkgs.neovim-unwrapped;
coc.enable = true; coc.enable = true;
coc.package = materusArg.unstable.vimPlugins.coc-nvim; coc.package = pkgs.vimPlugins.coc-nvim;
viAlias = true; viAlias = true;
vimAlias = true; vimAlias = true;
vimdiffAlias = true; vimdiffAlias = true;
@ -25,7 +25,7 @@ in
extraPackages = with pkgs;[ extraPackages = with pkgs;[
]; ];
plugins = with materusArg.unstable.vimPlugins;[ plugins = with pkgs.vimPlugins;[
syntastic syntastic
vim-fugitive vim-fugitive
vim-airline vim-airline

View File

@ -5,6 +5,7 @@
#+PROPERTY: header-args :tangle no :noweb yes #+PROPERTY: header-args :tangle no :noweb yes
#+OPTIONS: \n:t #+OPTIONS: \n:t
#+auto_tangle: t #+auto_tangle: t
* Table of Contents :noexport:TOC_3: * Table of Contents :noexport:TOC_3:
- [[#early-init][Early Init]] - [[#early-init][Early Init]]
- [[#init-core][Init Core]] - [[#init-core][Init Core]]
@ -23,12 +24,14 @@
- [[#modeline][Modeline]] - [[#modeline][Modeline]]
- [[#dashboard][Dashboard]] - [[#dashboard][Dashboard]]
- [[#highlight-indent-guides][Highlight Indent Guides]] - [[#highlight-indent-guides][Highlight Indent Guides]]
- [[#outli][Outli]]
- [[#visual-replace][Visual Replace]]
- [[#terminal][Terminal]] - [[#terminal][Terminal]]
- [[#eat][Eat]] - [[#eat][Eat]]
- [[#vterm][Vterm]] - [[#vterm][Vterm]]
- [[#navigation-and-completion][Navigation and Completion]] - [[#navigation-and-completion][Navigation and Completion]]
- [[#helm][HELM]] - [[#minibuffer-orderless-vertico-marginalia-consult][minibuffer (orderless, vertico, marginalia, consult)]]
- [[#comapny][Comapny]] - [[#code-completion-cape-corfu][Code completion (Cape, corfu)]]
- [[#dirvish][Dirvish]] - [[#dirvish][Dirvish]]
- [[#treemacs][Treemacs]] - [[#treemacs][Treemacs]]
- [[#programming][Programming]] - [[#programming][Programming]]
@ -66,9 +69,11 @@
- [[#keybindings][Keybindings]] - [[#keybindings][Keybindings]]
- [[#final-code][Final Code]] - [[#final-code][Final Code]]
- [[#links][Links]] - [[#links][Links]]
- [[#tests][Tests]]
- [[#archive][Archive]] - [[#archive][Archive]]
- [[#minibuffer-orderless-vertico-marginalia-consult][minibuffer (orderless, vertico, marginalia, consult)]] - [[#navigation-and-completion-1][Navigation and completion]]
- [[#code-completion-cape-corfu][Code completion (Cape, corfu)]] - [[#helm][HELM]]
- [[#comapny][Comapny]]
* Early Init * Early Init
#+begin_src emacs-lisp :tangle (expand-file-name "early-init.el" user-emacs-directory) :noweb-ref early-init #+begin_src emacs-lisp :tangle (expand-file-name "early-init.el" user-emacs-directory) :noweb-ref early-init
@ -81,7 +86,9 @@
(setq c-default-style nil) ; Clear default styles for languages, will set them up later (setq c-default-style nil) ; Clear default styles for languages, will set them up later
(setq default-input-method nil) ; Disable default input method, I'm not using them anyway so far (setq default-input-method nil) ; Disable default input method, I'm not using them anyway so far
(setq initial-major-mode 'fundamental-mode) ; Use fundamental mode in scratch buffer, speed up loading, not really important when emacs used as daemon
(setq initial-major-mode 'emacs-lisp-mode)
(setq auto-save-default nil) ; TODO: configure auto saves, disable for now (setq auto-save-default nil) ; TODO: configure auto saves, disable for now
(setq backup-directory-alist (setq backup-directory-alist
`((".*" . ,(concat user-emacs-directory "var/backups/")))) ; Set backup location `((".*" . ,(concat user-emacs-directory "var/backups/")))) ; Set backup location
@ -95,7 +102,7 @@
(setq package-quickstart nil) ; Disable package quickstart (setq package-quickstart nil) ; Disable package quickstart
(setq inhibit-startup-screen t) (setq inhibit-startup-screen t)
(setq inhibit-compacting-font-caches t) ; Don't compact fonts (setq inhibit-compacting-font-caches t) ; Don't compact fonts
(set-language-environment "UTF-8") ; Use UTF-8 (set-language-environment "UTF-8") ; Use UTF-8
@ -146,21 +153,17 @@
;;; NATIVE COMPILATION ;;; NATIVE COMPILATION
(setq native-comp-async-report-warnings-errors nil) ; Silence warnings (setq native-comp-async-report-warnings-errors nil) ; Silence warnings
(setq native-comp-speed 3) ; Set native-comp speed (setq native-comp-speed 2) ; Set native-comp speed
(setq native-comp-jit-compilation t (setq native-comp-jit-compilation t
;;native-comp-deferred-compilation t native-comp-deferred-compilation t
package-native-compile t) package-native-compile t)
;; Setting up native-comp cache location ;; Setting up native-comp cache location
(when (and (fboundp 'startup-redirect-eln-cache) (when (boundp 'native-comp-eln-load-path)
(fboundp 'native-comp-available-p) (startup-redirect-eln-cache (expand-file-name "var/eln-cache/" user-emacs-directory)))
(native-comp-available-p))
(startup-redirect-eln-cache
(convert-standard-filename
(concat user-emacs-directory "var/eln-cache/"))))
#+end_src #+end_src
* Init Core * Init Core
@ -176,7 +179,7 @@
(print "WARN: emacs-build-time not set up, using current time") (print "WARN: emacs-build-time not set up, using current time")
(setq emacs-build-time (decode-time (current-time)))) (setq emacs-build-time (decode-time (current-time))))
(add-to-list 'load-path (concat user-emacs-directory "etc/pkgs/")) ; Extra load path for packages (add-to-list 'load-path (concat user-emacs-directory "etc/pkgs/")) ; Extra load path for packages
(defvar materus/nixos-config (getenv "MATERUS_CONFIG_DIR"))
(setq read-process-output-max (* 1024 1024 3)) (setq read-process-output-max (* 1024 1024 3))
#+END_src #+END_src
@ -237,6 +240,33 @@
(use-package ,package :ensure nil ,@body)) (use-package ,package :ensure nil ,@body))
`(use-package ,package ,@body))) `(use-package ,package ,@body)))
(defun materus/--outli-modes ()
"Check if supported mode"
(or (eq major-mode 'nix-mode)
(eq major-mode 'nix-ts-mode)
(eq major-mode 'c-mode)
(eq major-mode 'c-ts-mode)
(eq major-mode 'c++-mode)
(eq major-mode 'c++-ts-mode)))
(defun materus/--fix-outli-formatting (FORMATTER STATUS)
"Remove whitespaces before outli headers"
(when (and (materus/--outli-modes)
(eq STATUS :reformatted))
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(while (re-search-forward (concat "^[ ]+\\(" comment-start "\\*+ +[^ ].*\\)[ ]*") nil t)
(replace-match "\\1"))))))
(defun materus/--electric-indent-ignore-outli (char)
"Don't indent outli headers"
(when (materus/--outli-modes)
(save-excursion
(backward-char)
(beginning-of-line)
(if (not (looking-at-p (concat "^\\(" comment-start "\\*+ +[^ ].*\\)[ ]*"))) nil 'no-indent))))
#+END_src #+END_src
** Custom File ** Custom File
@ -269,6 +299,8 @@
(set-frame-parameter frame 'fullscreen 'maximized)) (set-frame-parameter frame 'fullscreen 'maximized))
(select-frame-set-input-focus frame) ))) (select-frame-set-input-focus frame) )))
(global-tab-line-mode 1) (global-tab-line-mode 1)
(setq tab-line-close-tab-function 'kill-buffer)
(setq window-divider-default-bottom-width 1) (setq window-divider-default-bottom-width 1)
(setq window-divider-default-right-width 1) (setq window-divider-default-right-width 1)
(window-divider-mode 1) (window-divider-mode 1)
@ -329,19 +361,19 @@ Setting up mouse
#+end_src #+end_src
*** Modeline *** Modeline
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; (use-package doom-modeline (use-package doom-modeline
;; :init (setq doom-modeline-support-imenu t) :init (setq doom-modeline-support-imenu t)
;; :hook (elpaca-after-init . doom-modeline-mode) :hook (elpaca-after-init . doom-modeline-mode)
;; :config :config
;; (setq doom-modeline-icon t) (setq doom-modeline-icon t)
;; (setq doom-modeline-project-detection 'auto) (setq doom-modeline-project-detection 'auto)
;; (setq doom-modeline-height 20) (setq doom-modeline-height 20)
;; (setq doom-modeline-enable-word-count t) (setq doom-modeline-enable-word-count t)
;; (setq doom-modeline-minor-modes t) (setq doom-modeline-minor-modes t)
;; (setq display-time-24hr-format t) (setq display-time-24hr-format t)
;; (display-time-mode 1) (display-time-mode 1)
;; (column-number-mode 1) (column-number-mode 1)
;; (line-number-mode 1)) (line-number-mode 1))
(use-package minions (use-package minions
:hook (elpaca-after-init . minions-mode)) :hook (elpaca-after-init . minions-mode))
@ -377,6 +409,20 @@ Setting up mouse
(use-package highlight-indent-guides (use-package highlight-indent-guides
:hook ((prog-mode . highlight-indent-guides-mode))) :hook ((prog-mode . highlight-indent-guides-mode)))
#+end_src #+end_src
*** Outli
#+begin_src emacs-lisp
(use-package outli
:ensure (:host github :repo "jdtsmith/outli")
:hook ((prog-mode . outli-mode)))
#+end_src
*** Visual Replace
#+begin_src emacs-lisp
(use-package visual-replace
:defer t
:bind (("C-r" . visual-replace)
:map isearch-mode-map
("C-r" . visual-replace-from-isearch)))
#+end_src
** Terminal ** Terminal
*** Eat *** Eat
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -414,40 +460,109 @@ Setting up mouse
(materus/use-package vterm) (materus/use-package vterm)
#+end_src #+end_src
** Navigation and Completion ** Navigation and Completion
*** HELM *** minibuffer (orderless, vertico, marginalia, consult)
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package helm (use-package orderless
:config :init
(setq helm-x-icons-provider 'nerd-icons) ;; Tune the global completion style settings to your liking!
(setq helm-move-to-line-cycle-in-source nil) ;; This affects the minibuffer and non-lsp completion at point.
(helm-mode 1) (setq completion-styles '(basic partial-completion orderless)
) completion-category-defaults nil
(use-package helm-projectile completion-category-overrides nil))
:after (helm projectile)) (use-package consult)
(use-package helm-ag (use-package marginalia)
:after (helm)) (use-package embark)
(use-package helm-rg (use-package embark-consult
:after (helm)) :after (embark consult))
(use-package helm-ls-git
:after (helm))
#+end_src
#+begin_src emacs-lisp :tangle no :noweb-ref keybindings
;; Helm
(global-set-key (kbd "M-x") 'helm-M-x)
(global-set-key (kbd "C-x r b") #'helm-filtered-bookmarks)
(global-set-key (kbd "C-x C-f") #'helm-find-files)
(global-set-key (kbd "C-x b") #'helm-mini)
#+end_src
*** Comapny
#+begin_src emacs-lisp
(use-package company
:hook
((prog-mode . company-mode)))
(use-package slime-company
:if (executable-find "sbcl")
:after (company slime))
(use-package vertico
:ensure t
:after (consult marginalia embark)
:config
(setq completion-in-region-function
(lambda (&rest args)
(apply (if vertico-mode
#'consult-completion-in-region
#'completion--in-region)
args)))
(vertico-mode 1)
(marginalia-mode 1))
(use-package vertico-mouse
:config
(vertico-mouse-mode 1)
:ensure nil
:after (vertico))
#+end_src #+end_src
*** Code completion (Cape, corfu)
#+begin_src emacs-lisp
(use-package cape)
(use-package corfu
:ensure t
:after (lsp-mode cape)
;; Optional customizations
:custom
(corfu-cycle nil) ;; Enable cycling for `corfu-next/previous'
(corfu-auto t) ;; Enable auto completion
(global-corfu-minibuffer nil)
;; (corfu-quit-at-boundary nil) ;; Never quit at completion boundary
;; (corfu-quit-no-match nil) ;; Never quit, even if there is no match
(corfu-preview-current nil) ;; Disable current candidate preview
;; (corfu-preselect 'prompt) ;; Preselect the prompt
;; (corfu-on-exact-match nil) ;; Configure handling of exact matches
;; Enable Corfu only for certain modes. See also `global-corfu-modes'.
;; :hook ((prog-mode . corfu-mode)
;; (shell-mode . corfu-mode)
;; (eshell-mode . corfu-mode))
;; Recommended: Enable Corfu globally. This is recommended since Dabbrev can
;; be used globally (M-/). See also the customization variable
;; `global-corfu-modes' to exclude certain modes.
:init
(global-corfu-mode 1)
(corfu-popupinfo-mode 1)
(corfu-history-mode 1)
(defun materus/orderless-dispatch-flex-first (_pattern index _total)
(and (eq index 0) 'orderless-flex))
(defun materus/lsp-mode-setup-completion ()
(setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults))
'(orderless))
;; Optionally configure the first word as flex filtered.
(add-hook 'orderless-style-dispatchers #'materus/orderless-dispatch-flex-first nil 'local)
;; Optionally configure the cape-capf-buster.
(setq-local completion-at-point-functions (list (cape-capf-buster #'lsp-completion-at-point))))
:hook
(lsp-completion-mode . materus/lsp-mode-setup-completion))
(use-package corfu-terminal
:after (corfu)
:config
(when (or (daemonp) (not (display-graphic-p)))
(corfu-terminal-mode)))
(use-package corfu-mouse
:after (corfu)
:ensure (:type git :repo "https://codeberg.org/materus/emacs-corfu-mouse.git")
:config
(corfu-mouse-mode)
(keymap-set corfu--mouse-ignore-map "<mouse-movement>" 'ignore)
(keymap-set corfu-map "<mouse-movement>" 'ignore))
(use-package kind-icon
:after (corfu)
:config
(add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter))
#+end_src
*** Dirvish *** Dirvish
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package dirvish (use-package dirvish
@ -503,6 +618,7 @@ Setting up mouse
(add-hook 'prog-mode-hook 'display-line-numbers-mode) (add-hook 'prog-mode-hook 'display-line-numbers-mode)
(add-hook 'prog-mode-hook 'electric-indent-local-mode) (add-hook 'prog-mode-hook 'electric-indent-local-mode)
(add-hook 'electric-indent-functions 'materus/--electric-indent-ignore-outli)
#+end_src #+end_src
**** LSP **** LSP
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -513,7 +629,7 @@ Setting up mouse
;; (lsp-completion-provider :none) ;; we use Corfu! ;; (lsp-completion-provider :none) ;; we use Corfu!
:config :config
(setq lsp-keep-workspace-alive nil) (setq lsp-keep-workspace-alive nil)
(setq lsp-enable-on-type-formatting nil)
(defun lsp-booster--advice-json-parse (old-fn &rest args) (defun lsp-booster--advice-json-parse (old-fn &rest args)
"Try to parse bytecode instead of json." "Try to parse bytecode instead of json."
@ -564,6 +680,18 @@ Setting up mouse
(dap-auto-configure-mode 1)) (dap-auto-configure-mode 1))
#+end_src #+end_src
**** Formatting
#+begin_src emacs-lisp
(use-package format-all
:hook ((prog-mode . format-all-mode))
:config
(defun format-all--buffer-from-hook () nil) ; I don't want formatting on save
(add-hook 'format-all-after-format-functions 'materus/--fix-outli-formatting)
(setq-default format-all-formatters
'(("Nix" (nixfmt))
("C++" (clang-format "--fallback-style=microsoft"))
("C" (clang-format "--fallback-style=microsoft")))))
#+end_src
*** Snippets *** Snippets
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package yasnippet (use-package yasnippet
@ -588,8 +716,8 @@ Setting up mouse
(add-hook 'c++-mode-hook 'display-line-numbers-mode) (add-hook 'c++-mode-hook 'display-line-numbers-mode)
(add-hook 'c++-ts-mode-hook 'lsp-deferred) (add-hook 'c++-ts-mode-hook 'lsp-deferred)
(add-hook 'c++-ts-mode-hook 'display-line-numbers-mode) (add-hook 'c++-ts-mode-hook 'display-line-numbers-mode)
;(when (treesit-language-available-p 'c) (push '(c-mode . c-ts-mode) major-mode-remap-alist)) (when (treesit-language-available-p 'c) (push '(c-mode . c-ts-mode) major-mode-remap-alist))
;(when (treesit-language-available-p 'cpp) (push '(c++-mode . c++-ts-mode) major-mode-remap-alist)) (when (treesit-language-available-p 'cpp) (push '(c++-mode . c++-ts-mode) major-mode-remap-alist))
(add-to-list 'c-default-style '(c-mode . "bsd")) (add-to-list 'c-default-style '(c-mode . "bsd"))
(add-to-list 'c-default-style '(c++-mode . "bsd")) (add-to-list 'c-default-style '(c++-mode . "bsd"))
@ -632,15 +760,14 @@ Setting up mouse
(use-package nix-mode) (use-package nix-mode)
(use-package nix-ts-mode) (use-package nix-ts-mode)
(use-package lsp-nix (use-package lsp-nix
:after (lsp-mode nix-mode nix-ts-mode) :after (lsp-mode nix-mode nix-ts-mode format-all)
:ensure nil :ensure nil
:config :config
(add-to-list 'lsp-disabled-clients '(nix-mode . nix-nil)) (add-to-list 'lsp-disabled-clients '(nix-mode . nix-nil))
(setq lsp-nix-nixd-server-path "nixd") (setq lsp-nix-nixd-server-path "nixd")
(when (executable-find "nixfmt") (when (executable-find "nixfmt")
(setq lsp-nix-nixd-formatting-command [ "nixfmt" ]) ) (setq lsp-nix-nixd-formatting-command [ "nixfmt" ]))
(unless lsp-nix-nixd-nixos-options-expr (unless lsp-nix-nixd-nixos-options-expr
(setq lsp-nix-nixd-nixos-options-expr (concat "(builtins.getFlake \"/etc/nixos\").nixosConfigurations." (system-name) ".options"))) (setq lsp-nix-nixd-nixos-options-expr (concat "(builtins.getFlake \"/etc/nixos\").nixosConfigurations." (system-name) ".options")))
(unless lsp-nix-nixd-nixpkgs-expr (unless lsp-nix-nixd-nixpkgs-expr
@ -666,8 +793,7 @@ Setting up mouse
(use-package slime (use-package slime
:if (executable-find "sbcl") :if (executable-find "sbcl")
:config :config
(setq inferior-lisp-program "sbcl") (setq inferior-lisp-program "sbcl"))
(slime-setup '(slime-fancy slime-company)))
#+end_src #+end_src
*** Shell *** Shell
**** Bash **** Bash
@ -704,7 +830,7 @@ Setting up mouse
** Notes & Organization ** Notes & Organization
*** Org Mode *** Org Mode
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package org (use-package org
:mode (("\\.org$" . org-mode)) :mode (("\\.org$" . org-mode))
:hook :hook
((org-mode . org-indent-mode) ((org-mode . org-indent-mode)
@ -885,10 +1011,6 @@ Setting up mouse
;; CUA-like global ;; CUA-like global
(define-key global-map (kbd "C-s") 'save-buffer) (define-key global-map (kbd "C-s") 'save-buffer)
(define-key global-map (kbd "C-r") 'query-replace)
(define-key global-map (kbd "C-S-r") 'replace-string)
(define-key global-map (kbd "M-r") 'query-replace-regexp)
(define-key global-map (kbd "M-S-r") 'replace-regexp)
(define-key global-map (kbd "C-a") 'mark-whole-buffer) (define-key global-map (kbd "C-a") 'mark-whole-buffer)
(define-key global-map (kbd "C-f") 'isearch-forward) (define-key global-map (kbd "C-f") 'isearch-forward)
(define-key global-map (kbd "C-S-f") 'isearch-backward) (define-key global-map (kbd "C-S-f") 'isearch-backward)
@ -922,7 +1044,6 @@ Setting up mouse
(add-hook 'elpaca-after-init-hook #'materus/keybind-set ) (add-hook 'elpaca-after-init-hook #'materus/keybind-set )
#+end_src #+end_src
* Final Code * Final Code
#+begin_src emacs-lisp :tangle (expand-file-name "init.el" user-emacs-directory) :noweb-ref final #+begin_src emacs-lisp :tangle (expand-file-name "init.el" user-emacs-directory) :noweb-ref final
;;; -*- lexical-binding: t; -*- ;;; -*- lexical-binding: t; -*-
@ -936,115 +1057,80 @@ Setting up mouse
<<init-custom-file>> <<init-custom-file>>
#+end_src #+end_src
Make copy in this repository Make copy in this repository
#+begin_src emacs-lisp :tangle ./early-init.el #+begin_src emacs-lisp :tangle (if (not (string= default-directory user-emacs-directory)) "./early-init.el" "no")
<<early-init>> <<early-init>>
#+end_src #+end_src
#+begin_src emacs-lisp :tangle ./init.el #+begin_src emacs-lisp :tangle (if (not (string= default-directory user-emacs-directory)) "./init.el" "no")
<<final>> <<final>>
#+end_src #+end_src
* Links * Links
[[https://github.com/emacs-tw/awesome-emacs][awesome-emacs]] [[https://github.com/emacs-tw/awesome-emacs][awesome-emacs]] - Nice list of Emacs Packages
[[https://codeberg.org/ashton314/emacs-bedrock][Emacs Bedrock]] - Initial Config to base on
[[https://github.com/benide/emacs-config][benide Config]] - Took use-package macro for NixOS from there
[[https://gitlab.com/dwt1/dotfiles/-/blob/master/.config/emacs/config.org][DT's Config]] - Some inspiration
* Tests
:PROPERTIES:
:header-args: :tangle no
:END:
#+begin_src emacs-lisp :tangle no
(let* ((current-pos (point))
(start (re-search-backward "^[ \t]*\\(#\\|//\\|;;\\)-NARROW_START[ \t]+\\[\\(.*\\)\\]" nil t))
(match (match-string-no-properties 2))
(end (re-search-forward (concat "^[ \t]*\\(#\\|//\\|;;\\)-NARROW_END[ \t]+\\[\\" (regexp-quote match) "\\]") nil t)))
(if (buffer-narrowed-p)
(progn (widen) (goto-char current-pos))
(progn
(if start
(if end
(if ( >= end current-pos) (narrow-to-region start end)
(message "Not between narrow tags"))
(message "Not between narrow tags"))
(message "Not between narrow tags"))
(goto-char current-pos))))
#+end_src
* Archive * Archive
:PROPERTIES: :PROPERTIES:
:header-args: :tangle no :header-args: :tangle no
:END: :END:
** minibuffer (orderless, vertico, marginalia, consult) ** Navigation and completion
*** HELM
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package orderless (use-package helm
:init
;; Tune the global completion style settings to your liking!
;; This affects the minibuffer and non-lsp completion at point.
(setq completion-styles '(basic partial-completion orderless)
completion-category-defaults nil
completion-category-overrides nil))
(use-package consult)
(use-package marginalia)
(use-package vertico
:after (consult marginalia)
:config :config
(setq completion-in-region-function (setq helm-x-icons-provider 'nerd-icons)
(lambda (&rest args) (setq helm-move-to-line-cycle-in-source nil)
(apply (if vertico-mode (helm-mode 1)
#'consult-completion-in-region )
#'completion--in-region) (use-package helm-projectile
args))) :after (helm projectile))
(vertico-mode 1) (use-package helm-ag
(marginalia-mode 1)) :after (helm))
(use-package vertico-mouse (use-package helm-rg
:config :after (helm))
(vertico-mouse-mode 1) (use-package helm-ls-git
:ensure nil :after (helm))
:after (vertico))
#+end_src #+end_src
#+begin_src emacs-lisp :tangle no
;; Helm
(global-set-key (kbd "M-x") 'helm-M-x)
(global-set-key (kbd "C-x r b") #'helm-filtered-bookmarks)
(global-set-key (kbd "C-x C-f") #'helm-find-files)
(global-set-key (kbd "C-x b") #'helm-mini)
** Code completion (Cape, corfu) (define-key helm-map (kbd "<right>") #'right-char)
(define-key helm-map (kbd "<left>") #'left-char)
#+end_src
*** Comapny
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package cape) (use-package company
:hook
((prog-mode . company-mode)))
(use-package slime-company
:if (executable-find "sbcl")
:after (company slime))
(use-package corfu #+end_src
:after (lsp-mode cape)
;; Optional customizations
:custom
(corfu-cycle nil) ;; Enable cycling for `corfu-next/previous'
(corfu-auto t) ;; Enable auto completion
(global-corfu-minibuffer nil)
;; (corfu-quit-at-boundary nil) ;; Never quit at completion boundary
;; (corfu-quit-no-match nil) ;; Never quit, even if there is no match
(corfu-preview-current nil) ;; Disable current candidate preview
;; (corfu-preselect 'prompt) ;; Preselect the prompt
;; (corfu-on-exact-match nil) ;; Configure handling of exact matches
;; Enable Corfu only for certain modes. See also `global-corfu-modes'.
;; :hook ((prog-mode . corfu-mode)
;; (shell-mode . corfu-mode)
;; (eshell-mode . corfu-mode))
;; Recommended: Enable Corfu globally. This is recommended since Dabbrev can
;; be used globally (M-/). See also the customization variable
;; `global-corfu-modes' to exclude certain modes.
:init
(global-corfu-mode 1)
(corfu-popupinfo-mode 1)
(corfu-history-mode 1)
(defun materus/orderless-dispatch-flex-first (_pattern index _total)
(and (eq index 0) 'orderless-flex))
(defun materus/lsp-mode-setup-completion ()
(setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults))
'(orderless))
;; Optionally configure the first word as flex filtered.
(add-hook 'orderless-style-dispatchers #'materus/orderless-dispatch-flex-first nil 'local)
;; Optionally configure the cape-capf-buster.
(setq-local completion-at-point-functions (list (cape-capf-buster #'lsp-completion-at-point))))
:hook
(lsp-completion-mode . materus/lsp-mode-setup-completion))
(use-package corfu-terminal
:after (corfu)
:config
(when (or (daemonp) (not (display-graphic-p)))
(corfu-terminal-mode)))
;; (use-package corfu-mouse
;; :after (corfu)
;; :config
;; :ensure nil
;; (corfu-mouse-mode)
;; (keymap-set corfu--mouse-ignore-map "<mouse-movement>" 'ignore)
;; (keymap-set corfu-map "<mouse-movement>" 'ignore))
(use-package kind-icon
:after (corfu)
:config
(add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter))
#+end_src

View File

@ -1,89 +1,87 @@
;;; -*- lexical-binding: t; -*- ;;; -*- lexical-binding: t; -*-
;;; VARIABLES ;;; VARIABLES
(setenv "LSP_USE_PLISTS" "true") ; Make lsp-mode use plists (setenv "LSP_USE_PLISTS" "true") ; Make lsp-mode use plists
(setq c-default-style nil) ; Clear default styles for languages, will set them up later (setq c-default-style nil) ; Clear default styles for languages, will set them up later
(setq default-input-method nil) ; Disable default input method, I'm not using them anyway so far (setq default-input-method nil) ; Disable default input method, I'm not using them anyway so far
(setq initial-major-mode 'fundamental-mode) ; Use fundamental mode in scratch buffer, speed up loading, not really important when emacs used as daemon
(setq auto-save-default nil) ; TODO: configure auto saves, disable for now (setq initial-major-mode 'emacs-lisp-mode)
(setq backup-directory-alist
`((".*" . ,(concat user-emacs-directory "var/backups/")))) ; Set backup location (setq auto-save-default nil) ; TODO: configure auto saves, disable for now
(setq auto-save-file-name-transforms (setq backup-directory-alist
`((".*" ,(concat user-emacs-directory "var/recovery/") t))) ; Set auto-save location `((".*" . ,(concat user-emacs-directory "var/backups/")))) ; Set backup location
(setq auto-save-list-file-prefix (concat user-emacs-directory "var/auto-save/sessions/")) ; Set auto-save-list location (setq auto-save-file-name-transforms
(setq load-prefer-newer t) ; Prefer newer files to load `((".*" ,(concat user-emacs-directory "var/recovery/") t))) ; Set auto-save location
(setq auto-save-list-file-prefix (concat user-emacs-directory "var/auto-save/sessions/")) ; Set auto-save-list location
(setq load-prefer-newer t) ; Prefer newer files to load
(setq package-enable-at-startup nil) (setq package-enable-at-startup nil)
(setq package-quickstart nil) ; Disable package quickstart (setq package-quickstart nil) ; Disable package quickstart
(setq inhibit-startup-screen t) (setq inhibit-startup-screen t)
(setq inhibit-compacting-font-caches t) ; Don't compact fonts (setq inhibit-compacting-font-caches t) ; Don't compact fonts
(set-language-environment "UTF-8") ; Use UTF-8 (set-language-environment "UTF-8") ; Use UTF-8
(setq-default buffer-file-coding-system 'utf-8-unix) (setq-default buffer-file-coding-system 'utf-8-unix)
(setq custom-file (concat user-emacs-directory "etc/custom.el")) ; Set custom file location, don't want clutter in main directory (setq custom-file (concat user-emacs-directory "etc/custom.el")) ; Set custom file location, don't want clutter in main directory
(setq custom-theme-directory (setq custom-theme-directory
(concat user-emacs-directory "/etc/materus/themes" )) ; Set custom themes location (concat user-emacs-directory "/etc/materus/themes" )) ; Set custom themes location
(setq ring-bell-function 'ignore) ; Disable bell (setq ring-bell-function 'ignore) ; Disable bell
(defvar materus/emacs-gc-cons-threshold (* 64 1024 1024) (defvar materus/emacs-gc-cons-threshold (* 64 1024 1024)
"The value of `gc-cons-threshold' after Emacs startup.") ; Define after init garbage collector threshold "The value of `gc-cons-threshold' after Emacs startup.") ; Define after init garbage collector threshold
;;; GARBAGE COLLECTOR ;;; GARBAGE COLLECTOR
(setq gc-cons-threshold most-positive-fixnum) ; Set `gc-cons-threshold' so it won't collectect during initialization (setq gc-cons-threshold most-positive-fixnum) ; Set `gc-cons-threshold' so it won't collectect during initialization
(add-hook 'emacs-startup-hook (add-hook 'emacs-startup-hook
(lambda () (lambda ()
(setq gc-cons-threshold materus/emacs-gc-cons-threshold))) ; Set `gc-cons-threshold' to desired value after startup (setq gc-cons-threshold materus/emacs-gc-cons-threshold))) ; Set `gc-cons-threshold' to desired value after startup
;;; FRAMES ;;; FRAMES
(setq frame-inhibit-implied-resize t) (setq frame-inhibit-implied-resize t)
(setq frame-resize-pixelwise t) (setq frame-resize-pixelwise t)
(setq window-resize-pixelwise t) ; Allow pixelwise resizing of window and frame (setq window-resize-pixelwise t) ; Allow pixelwise resizing of window and frame
(unless (daemonp) (unless (daemonp)
(add-to-list 'initial-frame-alist '(fullscreen . maximized))) ; Start first frame maximized if not running as daemon, daemon frame are set up later in config (add-to-list 'initial-frame-alist '(fullscreen . maximized))) ; Start first frame maximized if not running as daemon, daemon frame are set up later in config
(setq default-frame-alist ; Set default size for frames (setq default-frame-alist ; Set default size for frames
'((width . 130) '((width . 130)
(height . 40))) (height . 40)))
(advice-add #'tty-run-terminal-initialization :override #'ignore) (advice-add #'tty-run-terminal-initialization :override #'ignore)
(add-hook 'window-setup-hook (add-hook 'window-setup-hook
(lambda () (lambda ()
(unless (display-graphic-p) (unless (display-graphic-p)
(advice-remove #'tty-run-terminal-initialization #'ignore) (advice-remove #'tty-run-terminal-initialization #'ignore)
(tty-run-terminal-initialization (selected-frame) nil t) (tty-run-terminal-initialization (selected-frame) nil t)
))) )))
;;; NATIVE COMPILATION ;;; NATIVE COMPILATION
(setq native-comp-async-report-warnings-errors nil) ; Silence warnings (setq native-comp-async-report-warnings-errors nil) ; Silence warnings
(setq native-comp-speed 3) ; Set native-comp speed (setq native-comp-speed 2) ; Set native-comp speed
(setq native-comp-jit-compilation t (setq native-comp-jit-compilation t
;;native-comp-deferred-compilation t native-comp-deferred-compilation t
package-native-compile t) package-native-compile t)
;; Setting up native-comp cache location ;; Setting up native-comp cache location
(when (and (fboundp 'startup-redirect-eln-cache) (when (boundp 'native-comp-eln-load-path)
(fboundp 'native-comp-available-p) (startup-redirect-eln-cache (expand-file-name "var/eln-cache/" user-emacs-directory)))
(native-comp-available-p))
(startup-redirect-eln-cache
(convert-standard-filename
(concat user-emacs-directory "var/eln-cache/"))))

View File

@ -6,7 +6,7 @@
(print "WARN: emacs-build-time not set up, using current time") (print "WARN: emacs-build-time not set up, using current time")
(setq emacs-build-time (decode-time (current-time)))) (setq emacs-build-time (decode-time (current-time))))
(add-to-list 'load-path (concat user-emacs-directory "etc/pkgs/")) ; Extra load path for packages (add-to-list 'load-path (concat user-emacs-directory "etc/pkgs/")) ; Extra load path for packages
(defvar materus/nixos-config (getenv "MATERUS_CONFIG_DIR"))
(setq read-process-output-max (* 1024 1024 3)) (setq read-process-output-max (* 1024 1024 3))
;; Elpaca Init ;; Elpaca Init
@ -61,6 +61,33 @@
(use-package ,package :ensure nil ,@body)) (use-package ,package :ensure nil ,@body))
`(use-package ,package ,@body))) `(use-package ,package ,@body)))
(defun materus/--outli-modes ()
"Check if supported mode"
(or (eq major-mode 'nix-mode)
(eq major-mode 'nix-ts-mode)
(eq major-mode 'c-mode)
(eq major-mode 'c-ts-mode)
(eq major-mode 'c++-mode)
(eq major-mode 'c++-ts-mode)))
(defun materus/--fix-outli-formatting (FORMATTER STATUS)
"Remove whitespaces before outli headers"
(when (and (materus/--outli-modes)
(eq STATUS :reformatted))
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(while (re-search-forward (concat "^[ ]+\\(" comment-start "\\*+ +[^ ].*\\)[ ]*") nil t)
(replace-match "\\1"))))))
(defun materus/--electric-indent-ignore-outli (char)
"Don't indent outli headers"
(when (materus/--outli-modes)
(save-excursion
(backward-char)
(beginning-of-line)
(if (not (looking-at-p (concat "^\\(" comment-start "\\*+ +[^ ].*\\)[ ]*"))) nil 'no-indent))))
(use-package no-littering (use-package no-littering
:ensure (:wait t) :ensure (:wait t)
:config :config
@ -90,6 +117,8 @@
(set-frame-parameter frame 'fullscreen 'maximized)) (set-frame-parameter frame 'fullscreen 'maximized))
(select-frame-set-input-focus frame) ))) (select-frame-set-input-focus frame) )))
(global-tab-line-mode 1) (global-tab-line-mode 1)
(setq tab-line-close-tab-function 'kill-buffer)
(setq window-divider-default-bottom-width 1) (setq window-divider-default-bottom-width 1)
(setq window-divider-default-right-width 1) (setq window-divider-default-right-width 1)
(window-divider-mode 1) (window-divider-mode 1)
@ -126,6 +155,7 @@
(add-hook 'prog-mode-hook 'display-line-numbers-mode) (add-hook 'prog-mode-hook 'display-line-numbers-mode)
(add-hook 'prog-mode-hook 'electric-indent-local-mode) (add-hook 'prog-mode-hook 'electric-indent-local-mode)
(add-hook 'electric-indent-functions 'materus/--electric-indent-ignore-outli)
(use-package dracula-theme :config (use-package dracula-theme :config
(if (daemonp) (if (daemonp)
(add-hook 'after-make-frame-functions (add-hook 'after-make-frame-functions
@ -146,19 +176,19 @@
(set-face-attribute 'rainbow-delimiters-depth-5-face nil :foreground "#6A5ACD") (set-face-attribute 'rainbow-delimiters-depth-5-face nil :foreground "#6A5ACD")
(set-face-attribute 'rainbow-delimiters-unmatched-face nil :foreground "#FF0000")) (set-face-attribute 'rainbow-delimiters-unmatched-face nil :foreground "#FF0000"))
;; (use-package doom-modeline (use-package doom-modeline
;; :init (setq doom-modeline-support-imenu t) :init (setq doom-modeline-support-imenu t)
;; :hook (elpaca-after-init . doom-modeline-mode) :hook (elpaca-after-init . doom-modeline-mode)
;; :config :config
;; (setq doom-modeline-icon t) (setq doom-modeline-icon t)
;; (setq doom-modeline-project-detection 'auto) (setq doom-modeline-project-detection 'auto)
;; (setq doom-modeline-height 20) (setq doom-modeline-height 20)
;; (setq doom-modeline-enable-word-count t) (setq doom-modeline-enable-word-count t)
;; (setq doom-modeline-minor-modes t) (setq doom-modeline-minor-modes t)
;; (setq display-time-24hr-format t) (setq display-time-24hr-format t)
;; (display-time-mode 1) (display-time-mode 1)
;; (column-number-mode 1) (column-number-mode 1)
;; (line-number-mode 1)) (line-number-mode 1))
(use-package minions (use-package minions
:hook (elpaca-after-init . minions-mode)) :hook (elpaca-after-init . minions-mode))
@ -182,29 +212,112 @@
(setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))) ; Show dashboard when emacs is running as daemon) (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))) ; Show dashboard when emacs is running as daemon)
(use-package highlight-indent-guides (use-package highlight-indent-guides
:hook ((prog-mode . highlight-indent-guides-mode))) :hook ((prog-mode . highlight-indent-guides-mode)))
(use-package outli
:ensure (:host github :repo "jdtsmith/outli")
:hook ((prog-mode . outli-mode)))
(use-package visual-replace
:defer t
:bind (("C-r" . visual-replace)
:map isearch-mode-map
("C-r" . visual-replace-from-isearch)))
(use-package eat) (use-package eat)
(materus/use-package vterm) (materus/use-package vterm)
(use-package helm (use-package orderless
:init
;; Tune the global completion style settings to your liking!
;; This affects the minibuffer and non-lsp completion at point.
(setq completion-styles '(basic partial-completion orderless)
completion-category-defaults nil
completion-category-overrides nil))
(use-package consult)
(use-package marginalia)
(use-package embark)
(use-package embark-consult
:after (embark consult))
(use-package vertico
:ensure t
:after (consult marginalia embark)
:config :config
(setq helm-x-icons-provider 'nerd-icons) (setq completion-in-region-function
(setq helm-move-to-line-cycle-in-source nil) (lambda (&rest args)
(helm-mode 1) (apply (if vertico-mode
) #'consult-completion-in-region
(use-package helm-projectile #'completion--in-region)
:after (helm projectile)) args)))
(use-package helm-ag (vertico-mode 1)
:after (helm)) (marginalia-mode 1))
(use-package helm-rg (use-package vertico-mouse
:after (helm)) :config
(use-package helm-ls-git (vertico-mouse-mode 1)
:after (helm)) :ensure nil
(use-package company :after (vertico))
(use-package cape)
(use-package corfu
:ensure t
:after (lsp-mode cape)
;; Optional customizations
:custom
(corfu-cycle nil) ;; Enable cycling for `corfu-next/previous'
(corfu-auto t) ;; Enable auto completion
(global-corfu-minibuffer nil)
;; (corfu-quit-at-boundary nil) ;; Never quit at completion boundary
;; (corfu-quit-no-match nil) ;; Never quit, even if there is no match
(corfu-preview-current nil) ;; Disable current candidate preview
;; (corfu-preselect 'prompt) ;; Preselect the prompt
;; (corfu-on-exact-match nil) ;; Configure handling of exact matches
;; Enable Corfu only for certain modes. See also `global-corfu-modes'.
;; :hook ((prog-mode . corfu-mode)
;; (shell-mode . corfu-mode)
;; (eshell-mode . corfu-mode))
;; Recommended: Enable Corfu globally. This is recommended since Dabbrev can
;; be used globally (M-/). See also the customization variable
;; `global-corfu-modes' to exclude certain modes.
:init
(global-corfu-mode 1)
(corfu-popupinfo-mode 1)
(corfu-history-mode 1)
(defun materus/orderless-dispatch-flex-first (_pattern index _total)
(and (eq index 0) 'orderless-flex))
(defun materus/lsp-mode-setup-completion ()
(setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults))
'(orderless))
;; Optionally configure the first word as flex filtered.
(add-hook 'orderless-style-dispatchers #'materus/orderless-dispatch-flex-first nil 'local)
;; Optionally configure the cape-capf-buster.
(setq-local completion-at-point-functions (list (cape-capf-buster #'lsp-completion-at-point))))
:hook :hook
((prog-mode . company-mode))) (lsp-completion-mode . materus/lsp-mode-setup-completion))
(use-package slime-company
:if (executable-find "sbcl")
:after (company slime))
(use-package corfu-terminal
:after (corfu)
:config
(when (or (daemonp) (not (display-graphic-p)))
(corfu-terminal-mode)))
(use-package corfu-mouse
:after (corfu)
:ensure (:type git :repo "https://codeberg.org/materus/emacs-corfu-mouse.git")
:config
(corfu-mouse-mode)
(keymap-set corfu--mouse-ignore-map "<mouse-movement>" 'ignore)
(keymap-set corfu-map "<mouse-movement>" 'ignore))
(use-package kind-icon
:after (corfu)
:config
(add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter))
(use-package dirvish (use-package dirvish
:after (nerd-icons) :after (nerd-icons)
@ -237,7 +350,7 @@
;; (lsp-completion-provider :none) ;; we use Corfu! ;; (lsp-completion-provider :none) ;; we use Corfu!
:config :config
(setq lsp-keep-workspace-alive nil) (setq lsp-keep-workspace-alive nil)
(setq lsp-enable-on-type-formatting nil)
(defun lsp-booster--advice-json-parse (old-fn &rest args) (defun lsp-booster--advice-json-parse (old-fn &rest args)
"Try to parse bytecode instead of json." "Try to parse bytecode instead of json."
@ -284,6 +397,15 @@
(setq dap-gdb-lldb-extension-version "0.27.0") (setq dap-gdb-lldb-extension-version "0.27.0")
(dap-auto-configure-mode 1)) (dap-auto-configure-mode 1))
(use-package format-all
:hook ((prog-mode . format-all-mode))
:config
(defun format-all--buffer-from-hook () nil) ; I don't want formatting on save
(add-hook 'format-all-after-format-functions 'materus/--fix-outli-formatting)
(setq-default format-all-formatters
'(("Nix" (nixfmt))
("C++" (clang-format "--fallback-style=microsoft"))
("C" (clang-format "--fallback-style=microsoft")))))
(use-package yasnippet (use-package yasnippet
:config :config
(yas-global-mode 1)) (yas-global-mode 1))
@ -302,8 +424,8 @@
(add-hook 'c++-mode-hook 'display-line-numbers-mode) (add-hook 'c++-mode-hook 'display-line-numbers-mode)
(add-hook 'c++-ts-mode-hook 'lsp-deferred) (add-hook 'c++-ts-mode-hook 'lsp-deferred)
(add-hook 'c++-ts-mode-hook 'display-line-numbers-mode) (add-hook 'c++-ts-mode-hook 'display-line-numbers-mode)
;(when (treesit-language-available-p 'c) (push '(c-mode . c-ts-mode) major-mode-remap-alist)) (when (treesit-language-available-p 'c) (push '(c-mode . c-ts-mode) major-mode-remap-alist))
;(when (treesit-language-available-p 'cpp) (push '(c++-mode . c++-ts-mode) major-mode-remap-alist)) (when (treesit-language-available-p 'cpp) (push '(c++-mode . c++-ts-mode) major-mode-remap-alist))
(add-to-list 'c-default-style '(c-mode . "bsd")) (add-to-list 'c-default-style '(c-mode . "bsd"))
(add-to-list 'c-default-style '(c++-mode . "bsd")) (add-to-list 'c-default-style '(c++-mode . "bsd"))
@ -337,15 +459,14 @@
(use-package nix-mode) (use-package nix-mode)
(use-package nix-ts-mode) (use-package nix-ts-mode)
(use-package lsp-nix (use-package lsp-nix
:after (lsp-mode nix-mode nix-ts-mode) :after (lsp-mode nix-mode nix-ts-mode format-all)
:ensure nil :ensure nil
:config :config
(add-to-list 'lsp-disabled-clients '(nix-mode . nix-nil)) (add-to-list 'lsp-disabled-clients '(nix-mode . nix-nil))
(setq lsp-nix-nixd-server-path "nixd") (setq lsp-nix-nixd-server-path "nixd")
(when (executable-find "nixfmt") (when (executable-find "nixfmt")
(setq lsp-nix-nixd-formatting-command [ "nixfmt" ]) ) (setq lsp-nix-nixd-formatting-command [ "nixfmt" ]))
(unless lsp-nix-nixd-nixos-options-expr (unless lsp-nix-nixd-nixos-options-expr
(setq lsp-nix-nixd-nixos-options-expr (concat "(builtins.getFlake \"/etc/nixos\").nixosConfigurations." (system-name) ".options"))) (setq lsp-nix-nixd-nixos-options-expr (concat "(builtins.getFlake \"/etc/nixos\").nixosConfigurations." (system-name) ".options")))
(unless lsp-nix-nixd-nixpkgs-expr (unless lsp-nix-nixd-nixpkgs-expr
@ -362,8 +483,7 @@
(use-package slime (use-package slime
:if (executable-find "sbcl") :if (executable-find "sbcl")
:config :config
(setq inferior-lisp-program "sbcl") (setq inferior-lisp-program "sbcl"))
(slime-setup '(slime-fancy slime-company)))
(use-package bash-completion) (use-package bash-completion)
(use-package diff-hl (use-package diff-hl
:config :config
@ -379,33 +499,33 @@
(use-package git-timemachine (use-package git-timemachine
:defer t) :defer t)
(use-package org (use-package org
:mode (("\\.org$" . org-mode)) :mode (("\\.org$" . org-mode))
:hook :hook
((org-mode . org-indent-mode) ((org-mode . org-indent-mode)
(org-mode . display-line-numbers-mode) (org-mode . display-line-numbers-mode)
) )
:config :config
(require 'org-mouse) (require 'org-mouse)
(require 'org-tempo) (require 'org-tempo)
(setq org-src-window-setup 'current-window) (setq org-src-window-setup 'current-window)
(setq org-latex-pdf-process '("latexmk -xelatex -quiet -shell-escape -f -output-directory=%o %f")) (setq org-latex-pdf-process '("latexmk -xelatex -quiet -shell-escape -f -output-directory=%o %f"))
(org-babel-do-load-languages (org-babel-do-load-languages
'org-babel-load-languages 'org-babel-load-languages
'((latex . t) '((latex . t)
(emacs-lisp . t) (emacs-lisp . t)
(shell . t) (shell . t)
(css . t) (css . t)
(C . t) (C . t)
(calc . t) (calc . t)
(awk . t) (awk . t)
(sql . t) (sql . t)
(sqlite . t))) (sqlite . t)))
(add-hook 'org-mode-hook (lambda () (add-hook 'org-mode-hook (lambda ()
(setq-local (setq-local
electric-pair-inhibit-predicate electric-pair-inhibit-predicate
`(lambda (c) `(lambda (c)
(if (if
(char-equal c ?<) t (,electric-pair-inhibit-predicate c))))))) (char-equal c ?<) t (,electric-pair-inhibit-predicate c)))))))
(use-package org-modern (use-package org-modern
:after (org) :after (org)
:hook :hook
@ -477,10 +597,6 @@
;; CUA-like global ;; CUA-like global
(define-key global-map (kbd "C-s") 'save-buffer) (define-key global-map (kbd "C-s") 'save-buffer)
(define-key global-map (kbd "C-r") 'query-replace)
(define-key global-map (kbd "C-S-r") 'replace-string)
(define-key global-map (kbd "M-r") 'query-replace-regexp)
(define-key global-map (kbd "M-S-r") 'replace-regexp)
(define-key global-map (kbd "C-a") 'mark-whole-buffer) (define-key global-map (kbd "C-a") 'mark-whole-buffer)
(define-key global-map (kbd "C-f") 'isearch-forward) (define-key global-map (kbd "C-f") 'isearch-forward)
(define-key global-map (kbd "C-S-f") 'isearch-backward) (define-key global-map (kbd "C-S-f") 'isearch-backward)
@ -534,11 +650,6 @@
(advice-add 'eat-char-mode :after #'cua--eat-char-override-keymap) (advice-add 'eat-char-mode :after #'cua--eat-char-override-keymap)
(add-hook 'eat-char-mode-hook #'cua--eat-char-override-keymap) (add-hook 'eat-char-mode-hook #'cua--eat-char-override-keymap)
;; Helm
(global-set-key (kbd "M-x") 'helm-M-x)
(global-set-key (kbd "C-x r b") #'helm-filtered-bookmarks)
(global-set-key (kbd "C-x C-f") #'helm-find-files)
(global-set-key (kbd "C-x b") #'helm-mini)
;; Treemacs ;; Treemacs
(define-key global-map (kbd "C-H-t") 'treemacs)) (define-key global-map (kbd "C-H-t") 'treemacs))

View File

@ -5,11 +5,11 @@
"fromYaml": "fromYaml" "fromYaml": "fromYaml"
}, },
"locked": { "locked": {
"lastModified": 1732200724, "lastModified": 1746562888,
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", "narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=",
"owner": "SenchoPens", "owner": "SenchoPens",
"repo": "base16.nix", "repo": "base16.nix",
"rev": "153d52373b0fb2d343592871009a286ec8837aec", "rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -24,11 +24,11 @@
"fromYaml": "fromYaml_2" "fromYaml": "fromYaml_2"
}, },
"locked": { "locked": {
"lastModified": 1732200724, "lastModified": 1746562888,
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", "narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=",
"owner": "SenchoPens", "owner": "SenchoPens",
"repo": "base16.nix", "repo": "base16.nix",
"rev": "153d52373b0fb2d343592871009a286ec8837aec", "rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -159,11 +159,11 @@
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1744967866, "lastModified": 1747188492,
"narHash": "sha256-jWHOSSZ03R1Dvru5rXEForMgkV1RAsCd+IjMmehpmFg=", "narHash": "sha256-9DZ/Wr6zDvb2GxgvxkGxCFJctqhn4vIPeCh+Yctflg0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "emacs-overlay", "repo": "emacs-overlay",
"rev": "c54fd7dc3e696136c8257abfe12815274b42660e", "rev": "6d15ffa9720fc7d6635238d961593a289062b555",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -182,11 +182,11 @@
"nixpkgs-stable": "nixpkgs-stable_2" "nixpkgs-stable": "nixpkgs-stable_2"
}, },
"locked": { "locked": {
"lastModified": 1744967866, "lastModified": 1747188492,
"narHash": "sha256-jWHOSSZ03R1Dvru5rXEForMgkV1RAsCd+IjMmehpmFg=", "narHash": "sha256-9DZ/Wr6zDvb2GxgvxkGxCFJctqhn4vIPeCh+Yctflg0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "emacs-overlay", "repo": "emacs-overlay",
"rev": "c54fd7dc3e696136c8257abfe12815274b42660e", "rev": "6d15ffa9720fc7d6635238d961593a289062b555",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -436,11 +436,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1744743431, "lastModified": 1747020534,
"narHash": "sha256-iyn/WBYDc7OtjSawbegINDe/gIkok888kQxk3aVnkgg=", "narHash": "sha256-D/6rkiC6w2p+4SwRiVKrWIeYzun8FBg7NlMKMwQMxO0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "c61bfe3ae692f42ce688b5865fac9e0de58e1387", "rev": "b4bbdc6fde16fc2051fcde232f6e288cd22007ca",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -458,11 +458,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1744919155, "lastModified": 1747184352,
"narHash": "sha256-IJksPW32V9gid9vDxoloJMRk+YGjxq5drFHBFeBkKU8=", "narHash": "sha256-GBZulv50wztp5cgc405t1uOkxQYhSkMqeKLI+iSrlpk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "72526a5f7cde2ef9075637802a1e2a8d2d658f70", "rev": "7c1cefb98369cc85440642fdccc1c1394ca6dd2c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -477,10 +477,10 @@
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"lastModified": 1744117652, "lastModified": 1746171682,
"narHash": "sha256-t7dFCDl4vIOOUMhEZnJF15aAzkpaup9x4ZRGToDFYWI=", "narHash": "sha256-EyXUNSa+H+YvGVuQJP1nZskXAowxKYp79RNUsNdQTj4=",
"path": "/nix/store/avba4k04vxmknff9mjchmwyvr3vpzccz-source", "path": "/nix/store/xcqyjkljvvi1qk78la2vh5b783yzs7wl-source",
"rev": "b4e98224ad1336751a2ac7493967a4c9f6d9cb3f", "rev": "50eee705bbdbac942074a8c120e8194185633675",
"type": "path" "type": "path"
}, },
"original": { "original": {
@ -500,11 +500,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1744941256, "lastModified": 1747188026,
"narHash": "sha256-dCsDco+HQ0rwApyTmmyot9fUVIC0XeWOf/YpB8LZd18=", "narHash": "sha256-NjiJ2Bce5F7dn+6ZGCenzIjem2+Ei4SDF78x2wHVlOY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-vscode-extensions", "repo": "nix-vscode-extensions",
"rev": "0dd8474f697c02ac1861a96f7626f8fb9e21f268", "rev": "083675f78e7de80e9fec1f621b8a508e58327131",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -526,11 +526,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1744941256, "lastModified": 1747188026,
"narHash": "sha256-dCsDco+HQ0rwApyTmmyot9fUVIC0XeWOf/YpB8LZd18=", "narHash": "sha256-NjiJ2Bce5F7dn+6ZGCenzIjem2+Ei4SDF78x2wHVlOY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-vscode-extensions", "repo": "nix-vscode-extensions",
"rev": "0dd8474f697c02ac1861a96f7626f8fb9e21f268", "rev": "083675f78e7de80e9fec1f621b8a508e58327131",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -553,11 +553,11 @@
"nur": "nur" "nur": "nur"
}, },
"locked": { "locked": {
"lastModified": 1744223916, "lastModified": 1747136507,
"narHash": "sha256-LHS51wl/LFzWvrplcL/LJ3eIqMRyiwXch4IxA1Pq1ig=", "narHash": "sha256-lnt9LypZVMRzRDpl+gQtrInxvsF7CL18TTEMthXz8p8=",
"owner": "materusPL", "owner": "materusPL",
"repo": "Nixerus", "repo": "Nixerus",
"rev": "2caaf0b89ebf8edb9a1b0400c774670d838ef12f", "rev": "8c329020c653c04a8f0f50dc7400c01b3b9e3733",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -580,11 +580,11 @@
"nur": "nur_3" "nur": "nur_3"
}, },
"locked": { "locked": {
"lastModified": 1744223916, "lastModified": 1747136507,
"narHash": "sha256-LHS51wl/LFzWvrplcL/LJ3eIqMRyiwXch4IxA1Pq1ig=", "narHash": "sha256-lnt9LypZVMRzRDpl+gQtrInxvsF7CL18TTEMthXz8p8=",
"owner": "materusPL", "owner": "materusPL",
"repo": "Nixerus", "repo": "Nixerus",
"rev": "2caaf0b89ebf8edb9a1b0400c774670d838ef12f", "rev": "8c329020c653c04a8f0f50dc7400c01b3b9e3733",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -596,11 +596,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1744633460, "lastModified": 1747129300,
"narHash": "sha256-fbWE4Xpw6eH0Q6in+ymNuDwTkqmFmtxcQEmtRuKDTTk=", "narHash": "sha256-L3clA5YGeYCF47ghsI7Tcex+DnaaN/BbQ4dR2wzoiKg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "9a049b4a421076d27fee3eec664a18b2066824cb", "rev": "e81fd167b33121269149c57806599045fd33eeed",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -612,11 +612,11 @@
}, },
"nixos-hardware_2": { "nixos-hardware_2": {
"locked": { "locked": {
"lastModified": 1744633460, "lastModified": 1747129300,
"narHash": "sha256-fbWE4Xpw6eH0Q6in+ymNuDwTkqmFmtxcQEmtRuKDTTk=", "narHash": "sha256-L3clA5YGeYCF47ghsI7Tcex+DnaaN/BbQ4dR2wzoiKg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "9a049b4a421076d27fee3eec664a18b2066824cb", "rev": "e81fd167b33121269149c57806599045fd33eeed",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -644,11 +644,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1744440957, "lastModified": 1746957726,
"narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", "narHash": "sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5+SHJkS5ID/Jo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "rev": "a39ed32a651fdee6842ec930761e31d1f242cb94",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -660,11 +660,11 @@
}, },
"nixpkgs-stable_2": { "nixpkgs-stable_2": {
"locked": { "locked": {
"lastModified": 1744440957, "lastModified": 1746957726,
"narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", "narHash": "sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5+SHJkS5ID/Jo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "rev": "a39ed32a651fdee6842ec930761e31d1f242cb94",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -676,11 +676,11 @@
}, },
"nixpkgs-stable_3": { "nixpkgs-stable_3": {
"locked": { "locked": {
"lastModified": 1744440957, "lastModified": 1746957726,
"narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", "narHash": "sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5+SHJkS5ID/Jo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "rev": "a39ed32a651fdee6842ec930761e31d1f242cb94",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -740,11 +740,11 @@
}, },
"nixpkgs_5": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1731755305, "lastModified": 1746055187,
"narHash": "sha256-v5P3dk5JdiT+4x69ZaB18B8+Rcu3TIOrcdG4uEX7WZ8=", "narHash": "sha256-3dqArYSMP9hM7Qpy5YWhnSjiqniSaT2uc5h2Po7tmg0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "057f63b6dc1a2c67301286152eb5af20747a9cb4", "rev": "3e362ce63e16b9572d8c2297c04f7c19ab6725a5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -756,11 +756,11 @@
}, },
"nixpkgs_6": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1744463964, "lastModified": 1746904237,
"narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -970,11 +970,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1744669848, "lastModified": 1746485181,
"narHash": "sha256-pXyanHLUzLNd3MX9vsWG+6Z2hTU8niyphWstYEP3/GU=", "narHash": "sha256-PxrrSFLaC7YuItShxmYbMgSuFFuwxBB+qsl9BZUnRvg=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "61154300d945f0b147b30d24ddcafa159148026a", "rev": "e93ee1d900ad264d65e9701a5c6f895683433386",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -992,11 +992,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1744669848, "lastModified": 1746485181,
"narHash": "sha256-pXyanHLUzLNd3MX9vsWG+6Z2hTU8niyphWstYEP3/GU=", "narHash": "sha256-PxrrSFLaC7YuItShxmYbMgSuFFuwxBB+qsl9BZUnRvg=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "61154300d945f0b147b30d24ddcafa159148026a", "rev": "e93ee1d900ad264d65e9701a5c6f895683433386",
"type": "github" "type": "github"
}, },
"original": { "original": {