Compare commits

...

12 Commits

Author SHA1 Message Date
b86cc94d23 hosts/suwako: prevent spam on gitea
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2025-11-11 22:40:48 +05:30
95825c6ff1 hosts/suwako: use 2 filehost services :wowo:
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2025-11-11 22:35:36 +05:30
3e7e404d4c home: emacs:use lsp-deferred on progmode 2025-10-26 02:54:40 +05:30
bb4c77208d even more changes
add isearch count support to evil
add highlight-indent-guides-mode

Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2025-10-22 13:30:05 +05:30
1f53cd2efb home: emacs: delete unused conf
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2025-10-22 13:29:09 +05:30
d9f8c16011 home: emacs: add olivetti and nyan-mode
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2025-10-18 22:34:35 +05:30
4335805701 home: emacs some more changes
- Fix benchmark-deactivate on init
- defer loading aidermacs and gptel
- also set evil-want-keybinding to nil: https://github.com/emacs-evil/evil-collection/issues/6
2025-10-18 18:08:07 +05:30
Amneesh Singh
4a18ae77fc home: emacs: update config
remove auto flexpair and use electric mode instead
add gptel
add aidermacs

Signed-off-by: Amneesh Singh <amneesh@ti.com>
2025-10-17 17:41:56 +05:30
Amneesh Singh
5ebf3c9c5e home: amneesh: pkgs: add libreoffice and git-repo
Signed-off-by: Amneesh Singh <amneesh@ti.com>
2025-10-17 11:55:12 +05:30
Amneesh Singh
f4e5628238 home: amneesh: use overlay for standalone home-manager
Signed-off-by: Amneesh Singh <amneesh@ti.com>
2025-10-17 11:54:45 +05:30
Amneesh Singh
bf00621b02 home: amneesh: add screen config
Signed-off-by: Amneesh Singh <amneesh@ti.com>
2025-10-17 11:53:28 +05:30
Amneesh Singh
ec8d9fafdd home: common: fix zsh GREP_COLORS
Signed-off-by: Amneesh Singh <amneesh@ti.com>
2025-10-17 11:52:29 +05:30
16 changed files with 546 additions and 626 deletions

View File

@@ -16,6 +16,7 @@
domain = { domain = {
natto = "weirdnatto.in"; natto = "weirdnatto.in";
amneesh = "amneesh.com"; amneesh = "amneesh.com";
chutiya = "chutiya.online";
}; };
}; };

851
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -52,7 +52,7 @@
}; };
filehost = { filehost = {
url = "github:natto1784/simpler-filehost"; url = "github:natto1784/yamaf";
}; };
nix-gaming.url = "github:fufexan/nix-gaming"; nix-gaming.url = "github:fufexan/nix-gaming";

View File

@@ -16,8 +16,7 @@
imports = [ imports = [
./pkgs.nix ./pkgs.nix
./nixgl.nix ./nixgl.nix
# wayland ./screen.nix
./hyprlock.nix
./wayvnc.nix ./wayvnc.nix
# From personal # From personal
@@ -27,7 +26,6 @@
../natto/dunst.nix ../natto/dunst.nix
../natto/gtk.nix ../natto/gtk.nix
../natto/cursor.nix ../natto/cursor.nix
# wayland
../natto/wayland.nix ../natto/wayland.nix
../natto/hypridle.nix ../natto/hypridle.nix
../natto/hyprlock.nix ../natto/hyprlock.nix

View File

@@ -1,17 +0,0 @@
{
lib,
pkgs,
...
}:
let
standalonePam = pkgs.linux-pam.overrideAttrs (oa: {
postPatch = ''
substituteInPlace modules/module-meson.build \
--replace "sbindir / 'unix_chkpwd'" "'/usr/bin/unix_chkpwd'"
'';
});
in
{
programs.hyprlock.package = lib.mkForce (pkgs.hyprlock.override { pam = standalonePam; });
}

View File

@@ -23,5 +23,7 @@
thunderbird thunderbird
wget wget
xfce.thunar xfce.thunar
libreoffice
git-repo
]; ];
} }

12
home/amneesh/screen.nix Normal file
View File

@@ -0,0 +1,12 @@
{ pkgs, ... }:
{
home = {
packages = [ pkgs.screen ];
file = {
".screenrc".text = ''
defscrollback 10000
'';
};
};
}

View File

@@ -17,7 +17,7 @@
autosuggestions.color = "fg=yellow,bold"; autosuggestions.color = "fg=yellow,bold";
utility.safeOps = false; utility.safeOps = false;
extraConfig = lib.mkBefore '' extraConfig = lib.mkBefore ''
export GREP_COLORS="ms=01;31" export GREP_COLORS="mt=01;31"
''; '';
}; };
initContent = lib.mkAfter '' initContent = lib.mkAfter ''

View File

@@ -14,7 +14,7 @@ let
]; ];
mkPkgs = mkPkgs =
system: system: overlays:
import inputs.nixpkgs { import inputs.nixpkgs {
inherit system; inherit system;
config = { config = {
@@ -22,7 +22,7 @@ let
allowBroken = true; allowBroken = true;
allowInsecure = true; allowInsecure = true;
}; };
overlays = [ self.overlays.default ]; overlays = overlays ++ [ self.overlays.default ];
}; };
extraSpecialArgs = globalArgs; extraSpecialArgs = globalArgs;
@@ -37,7 +37,7 @@ in
{ isLaptop = true; } { isLaptop = true; }
] ]
++ common; ++ common;
pkgs = mkPkgs "x86_64-linux"; pkgs = mkPkgs "x86_64-linux" [ ];
}; };
natto = inputs.home-manager.lib.homeManagerConfiguration { natto = inputs.home-manager.lib.homeManagerConfiguration {
@@ -47,7 +47,7 @@ in
./common/fonts ./common/fonts
] ]
++ common; ++ common;
pkgs = mkPkgs "x86_64-linux"; pkgs = mkPkgs "x86_64-linux" [ ];
}; };
spark = inputs.home-manager.lib.homeManagerConfiguration { spark = inputs.home-manager.lib.homeManagerConfiguration {
@@ -62,7 +62,7 @@ in
} }
] ]
++ common; ++ common;
pkgs = mkPkgs "aarch64-linux"; pkgs = mkPkgs "aarch64-linux" [ ];
}; };
bat = inputs.home-manager.lib.homeManagerConfiguration { bat = inputs.home-manager.lib.homeManagerConfiguration {
@@ -77,7 +77,7 @@ in
} }
] ]
++ common; ++ common;
pkgs = mkPkgs "x86_64-linux"; pkgs = mkPkgs "x86_64-linux" [ ];
}; };
spin = inputs.home-manager.lib.homeManagerConfiguration { spin = inputs.home-manager.lib.homeManagerConfiguration {
@@ -92,7 +92,7 @@ in
} }
] ]
++ common; ++ common;
pkgs = mkPkgs "x86_64-linux"; pkgs = mkPkgs "x86_64-linux" [ ];
}; };
kero = inputs.home-manager.lib.homeManagerConfiguration { kero = inputs.home-manager.lib.homeManagerConfiguration {
@@ -107,7 +107,7 @@ in
} }
] ]
++ common; ++ common;
pkgs = mkPkgs "aarch64-linux"; pkgs = mkPkgs "aarch64-linux" [ ];
}; };
amneesh = inputs.home-manager.lib.homeManagerConfiguration { amneesh = inputs.home-manager.lib.homeManagerConfiguration {
@@ -116,7 +116,7 @@ in
./amneesh ./amneesh
] ]
++ common; ++ common;
pkgs = mkPkgs "x86_64-linux"; pkgs = mkPkgs "x86_64-linux" [ (import ./overlays/standalone.nix) ];
}; };
}; };
} }

View File

@@ -20,6 +20,7 @@
(fringe-mode 0) (fringe-mode 0)
(global-display-line-numbers-mode 1) (global-display-line-numbers-mode 1)
(xterm-mouse-mode 1) (xterm-mouse-mode 1)
(electric-pair-mode)
(setq ring-bell-function 'ignore (setq ring-bell-function 'ignore
gc-cons-threshold most-positive-fixnum gc-cons-threshold most-positive-fixnum
initial-major-mode 'fundamental-mode) initial-major-mode 'fundamental-mode)
@@ -33,7 +34,9 @@
scroll-step 1 scroll-step 1
display-line-numbers-type 'relative display-line-numbers-type 'relative
confirm-kill-processes nil confirm-kill-processes nil
inhibit-startup-screen t) inhibit-startup-screen t
isearch-lazy-count t
lazy-count-prefix-format "[%s/%s] ")
(setq-default tab-width 2 (setq-default tab-width 2
indent-tabs-mode nil) indent-tabs-mode nil)
#+end_src #+end_src
@@ -57,8 +60,7 @@
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package benchmark-init (use-package benchmark-init
:config :config
;; To disable collection of benchmark data after init is done. (add-hook 'after-init-hook 'benchmark-init/deactivate) )
:init (benchmark-init/deactivate))
#+end_src #+end_src
** Visual packages ** Visual packages
@@ -78,6 +80,15 @@
(dark-theme t)) (dark-theme t))
#+end_src #+end_src
*** Indent guides
#+begin_src emacs-lisp
(use-package highlight-indent-guides
:config
(setq highlight-indent-guides-method 'column)
:hook
(prog-mode . highlight-indent-guides-mode))
#+end_src
** Minibuffer ** Minibuffer
Enable vertico Enable vertico
#+begin_src emacs-lisp #+begin_src emacs-lisp
@@ -138,6 +149,7 @@ Consult
(use-package evil (use-package evil
:init :init
(setq-default evil-shift-width 2) (setq-default evil-shift-width 2)
(setq evil-want-keybinding nil)
:config :config
(evil-set-initial-state 'vterm-mode 'insert) (evil-set-initial-state 'vterm-mode 'insert)
(evil-set-undo-system 'undo-tree) (evil-set-undo-system 'undo-tree)
@@ -191,8 +203,8 @@ To undo and redo easily like vi
(use-package lsp-mode (use-package lsp-mode
:defer t :defer t
:commands lsp :commands lsp
:init :init (setq lsp-enable-on-type-formatting nil)
(setq lsp-enable-on-type-formatting nil)) :hook (prog-mode . lsp-deferred))
#+end_src #+end_src
*** Configure lsp-ui *** Configure lsp-ui
@@ -234,7 +246,6 @@ For autocomplete
(add-to-list 'company-backends 'company-dabbrev) (add-to-list 'company-backends 'company-dabbrev)
(setq company-backends (append '(company-files) (remove 'company-files company-backends))) (setq company-backends (append '(company-files) (remove 'company-files company-backends)))
:hook (after-init . global-company-mode)) :hook (after-init . global-company-mode))
#+end_src #+end_src
*** Configure company-quickhelp *** Configure company-quickhelp
@@ -265,6 +276,8 @@ For autocomplete
** Languages ** Languages
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package dts-mode
:mode ("\\.dts\\'" "\\.dtsi\\'" "\\.overlay\\'"))
(use-package lsp-haskell (use-package lsp-haskell
:mode "\\.hs\\'") :mode "\\.hs\\'")
(use-package lsp-latex (use-package lsp-latex
@@ -355,26 +368,64 @@ Do not use centaur tabs for now
#+end_src #+end_src
** Misc packages ** Misc packages
*** Icons
For installing icons
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package all-the-icons (use-package all-the-icons
:defer t
:if (display-graphic-p)) :if (display-graphic-p))
#+end_src
(use-package elcord :defer t) *** Projectile
For tracking project root
#+begin_src emacs-lisp
(use-package projectile (use-package projectile
:defer t :defer t
:config :config
(define-key projectile-mode-map (kbd "C-x p") 'projectile-command-map) (define-key projectile-mode-map (kbd "C-x p") 'projectile-command-map)
(projectile-mode +1)) (projectile-mode +1))
#+end_src
*** Rainbow
For highlighting colors
#+begin_src emacs-lisp
(use-package rainbow-mode :defer t) (use-package rainbow-mode :defer t)
#+end_src
*** Rainbow delimiters
To make distinguishing parens easier
#+begin_src emacs-lisp
(use-package rainbow-delimiters (use-package rainbow-delimiters
:hook (prog-mode . rainbow-delimiters-mode)) :hook (prog-mode . rainbow-delimiters-mode))
(use-package flex-autopair)
#+end_src #+end_src
*** Olivetti
When you want write prose or something similar
#+begin_src emacs-lisp
(use-package olivetti
:defer t
:diminish olivetti-mode
:custom
(olivetti-body-width 100)
(olivetti-minimum-body-width 50)
(olivetti-style 'fancy)
(olivetti-recall-visual-line-mode-entry-state t)
:config
(defvar-local my/olivetti--saved-line-numbers nil
"Stores the previous value of `display-line-numbers` before enabling Olivetti.")
(defun my/olivetti-toggle-line-numbers ()
"Hide line numbers when entering Olivetti, restore when exiting."
(if olivetti-mode
(progn
(setq my/olivetti--saved-line-numbers display-line-numbers)
(setq display-line-numbers nil))
(setq display-line-numbers my/olivetti--saved-line-numbers)))
(add-hook 'olivetti-mode-hook #'my/olivetti-toggle-line-numbers))
#+end_src
** Org ** Org
** Add org-mode ** Add org-mode
#+begin_src emacs-lisp #+begin_src emacs-lisp
@@ -422,22 +473,31 @@ Do not use centaur tabs for now
(latex . t))) (latex . t)))
#+end_src #+end_src
* Mode specific hooks
#+begin_src emacs-lisp
(add-hook 'c-mode-hook 'lsp)
(add-hook 'c++-mode-hook 'lsp)
(add-hook 'haskell-mode-hook #'lsp)
(add-hook 'haskell-literate-mode-hook #'lsp)
#+end_src
* Random eye candy stuff * Random eye candy stuff
* Mode line
* Custom mode line ** Doom modeline
switched to doom modeline after using my own modeline for a while Switched to doom modeline after using my own modeline for a while
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package doom-modeline (use-package doom-modeline
:init (doom-modeline-mode 1)) :init (doom-modeline-mode 1))
#+end_src #+end_src
Also show columns
#+begin_src emacs-lisp
(column-number-mode 1)
#+end_src
** Nyan Mode
#+begin_src emacs-lisp
(use-package nyan-mode
:ensure t
:init
(when (display-graphic-p)
(nyan-mode 1))
:custom
(nyan-animate-nyancat t)
:config
(nyan-start-animation))
#+end_src
* Pop-up terminal * Pop-up terminal
Stolen from [[https://www.reddit.com/r/emacs/comments/ft84xy/run_shell_command_in_new_vterm/][this]] reddit post Stolen from [[https://www.reddit.com/r/emacs/comments/ft84xy/run_shell_command_in_new_vterm/][this]] reddit post
@@ -465,33 +525,35 @@ Stolen from [[https://www.reddit.com/r/emacs/comments/ft84xy/run_shell_command_i
(vterm-send-return))) (vterm-send-return)))
#+end_src #+end_src
Compilation shortcuts for standalone files * LLMs
** gptel
#+begin_src emacs-lisp #+begin_src emacs-lisp
(defun candrun () (use-package gptel
(let ((full buffer-file-name) :defer t
(file (file-name-sans-extension buffer-file-name))) :config
(pcase (file-name-extension full) (setq gptel-model 'claude-sonnet-4-20250514
("c" (concat "gcc " full " -lm -pthread -o " file " && " file " && rm " file)) gptel-backend (gptel-make-anthropic "Claude"
("java" (concat "java " full)) :stream t
("py" (concat "python " full)) :protocol "https"
("cpp" (concat "g++ " full " -o " file " && " file " && rm " file)) :key (getenv "ANTHROPIC_API_KEY")
("cc" (concat "g++ " full " -o " file " && " file " && rm " file)) :host (getenv "ANTHROPIC_API_BASE_DOMAIN")))
("hs" (concat "runhaskell " full)) (setq gptel-default-mode 'org-mode)
("sh" (concat "sh " full)) :bind (("C-c g" . gptel)))
("js" (concat "node " full))
("ts" (concat "tsc " full " && node " file ".js && rm " file ".js" ))
("rs" (concat "rustc " full " -o " file " && " file " && rm " file)))))
#+end_src #+end_src
* Custom Functions ** Aidermacs
#+begin_src emacs-lisp #+begin_src emacs-lisp
(defun detach-process () (use-package aidermacs
"Run processes but detached from the parent" :defer t
(interactive) :bind (("C-c a" . aidermacs-transient-menu))
(let ((command (read-string "Enter command:"))) :custom
(call-process-shell-command (concat command " &") nil 0))) ; See the Configuration section below
(aidermacs-default-chat-mode 'architect)
(aidermacs-default-model "sonnet"))
#+end_src #+end_src
* Keybinds * Keybinds
** General ** General
*** Colemak translations *** Colemak translations
@@ -552,8 +614,7 @@ not using this anymore
"<f4>" (lambda () (interactive) (vterm t)) "<f4>" (lambda () (interactive) (vterm t))
"C-S-t" 'vterm-toggle-cd "C-S-t" 'vterm-toggle-cd
"C-t" 'vterm-toggle "C-t" 'vterm-toggle
"<f1>" 'vterm-toggle "<f1>" 'vterm-toggle)
"<f5>" (lambda () (interactive) (run-in-vterm (candrun))))
(general-define-key (general-define-key
:keymaps 'vterm-mode-map :keymaps 'vterm-mode-map
"<f3>" 'vterm-toggle-forward "<f3>" 'vterm-toggle-forward

View File

@@ -24,11 +24,21 @@ in
alwaysEnsure = true; alwaysEnsure = true;
alwaysTangle = true; alwaysTangle = true;
defaultInitFile = true; defaultInitFile = true;
extraEmacsPackages = extraEmacsPackages = epkgs: with epkgs; [
epkgs: with epkgs; [
use-package use-package
(tree-sitter-langs.withPlugins (_: tree-sitter-langs.plugins)) (tree-sitter-langs.withPlugins (_: tree-sitter-langs.plugins))
]; ];
override = final: prev: {
evil = prev.melpaPackages.evil.overrideAttrs(_: {
src = pkgs.fetchFromGitHub {
owner = "natto1784";
repo = "evil";
rev = "isearch-lazy-count";
sha256 = "sha256-YqXoqPqOWRvszzktb0MYHMe590mzTQxCMgBloy3MHkQ=";
};
});
};
}; };
}; };
services.emacs = { services.emacs = {

View File

@@ -8,7 +8,7 @@
font = "Fira Mono:style=Regular:pixelsize=18"; font = "Fira Mono:style=Regular:pixelsize=18";
font-bold = "Fira Mono:style=Bold:pixelsize=18"; font-bold = "Fira Mono:style=Bold:pixelsize=18";
}; };
scrollback.lines = 4000; scrollback.lines = 10000;
colors = with conf.colors.default; { colors = with conf.colors.default; {
inherit foreground background; inherit foreground background;
regular0 = surface1; regular0 = surface1;

View File

@@ -0,0 +1,13 @@
final: prev:
let
pam = prev.pam.overrideAttrs (oa: {
postPatch = ''
substituteInPlace modules/module-meson.build \
--replace "sbindir / 'unix_chkpwd'" "'/usr/bin/unix_chkpwd'"
'';
});
in
{
hyprlock = prev.hyprlock.override { inherit pam; };
swaylock = prev.swaylock.override { inherit pam; };
}

View File

@@ -1,25 +1,39 @@
{ {
config, lib,
pkgs, pkgs,
inputs, inputs,
conf, conf,
... ...
}: }:
{ {
systemd.services.filehost = { systemd.services = rec {
enable = true; filehost = {
wantedBy = [ "multi-user.target" ]; enable = true;
serviceConfig = { wantedBy = [ "multi-user.target" ];
Type = "simple"; serviceConfig = {
Environment = [ Type = "simple";
"TITLE=nattofiles" Environment = [
"USER_URL=https://f.${conf.network.addresses.domain.natto}" "TITLE=nattofiles"
"ROCKET_LIMITS={file=\"512MB\",data-form=\"512MB\"}" "INTERNAL_HOST=0.0.0.0"
"ROCKET_LOG_LEVEL=debug" "INTERNAL_PORT=8000"
"ROCKET_ADDRESS=0.0.0.0" "MAX_FILESIZE_MB=500"
]; "EXTERNAL_HAS_TLS=1"
Restart = "on-failure"; "EXTERNAL_HOST=f.${conf.network.addresses.domain.natto}"
ExecStart = "${inputs.filehost.packages.${pkgs.system}.simpler-filehost}/bin/simpler-filehost"; ];
Restart = "on-failure";
ExecStart = "${inputs.filehost.packages.${pkgs.system}.yamaf}/bin/yamaf";
};
};
filehost-chutiya = lib.recursiveUpdate filehost {
serviceConfig.Environment = [
"TITLE=chutiyafiles"
"INTERNAL_HOST=0.0.0.0"
"INTERNAL_PORT=8001"
"MAX_FILESIZE_MB=500"
"EXTERNAL_HAS_TLS=1"
"EXTERNAL_HOST=f.${conf.network.addresses.domain.chutiya}"
];
};
}; };
};
} }

View File

@@ -1,7 +1,6 @@
{ {
config,
pkgs,
conf, conf,
lib,
... ...
}: }:
{ {
@@ -36,6 +35,18 @@
USER = FROM; USER = FROM;
REGISTER_MAIL_CONFIRM = true; REGISTER_MAIL_CONFIRM = true;
}; };
service = {
ENABLE_CAPTCHA = true;
EMAIL_DOMAIN_ALLOWLIST = lib.strings.concatStringsSep "," [
"gmail.com"
"outlook.com"
"proton.me"
"protonmail.com"
conf.network.addresses.domain.natto
conf.network.addresses.domain.amneesh
conf.network.addresses.domain.chutiya
];
};
oauth2_client.REGISTER_MAIL_CONFIRM = true; oauth2_client.REGISTER_MAIL_CONFIRM = true;
actions.ENABLED = false; actions.ENABLED = false;
}; };

View File

@@ -1,6 +1,7 @@
{ conf, ... }: { conf, ... }:
let let
domain = conf.network.addresses.domain.natto; domain = conf.network.addresses.domain.natto;
chutiya = conf.network.addresses.domain.chutiya;
in in
{ {
services.nginx = { services.nginx = {
@@ -35,6 +36,17 @@ in
in in
with conf.network.addresses.wireguard.ips; with conf.network.addresses.wireguard.ips;
{ {
"${chutiya}" = {
addSSL = true;
enableACME = true;
locations."/" = {
root = "/var/lib/chutiya";
index = "index.html";
};
serverAliases = [ "www.${chutiya}" ];
};
"moj.${domain}" = genericHttpRProxy { addr = "https://${suwako}:25565"; }; "moj.${domain}" = genericHttpRProxy { addr = "https://${suwako}:25565"; };
"puffer.${domain}" = genericHttpRProxy { "puffer.${domain}" = genericHttpRProxy {
@@ -59,7 +71,15 @@ in
}; };
# Personal filehost # Personal filehost
"f.${domain}" = genericHttpRProxy { addr = "http://${suwako}:8000"; }; "f.${chutiya}" = genericHttpRProxy {
addr = "http://${suwako}:8001";
conf = "client_max_body_size 512M;";
};
"f.${domain}" = genericHttpRProxy {
addr = "http://${suwako}:8000";
conf = "client_max_body_size 512M;";
};
}; };
}; };
} }