Compare commits

..

19 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
539b46393e home/natto: emacs: some changes
add savehist
add blamer
tweak lsp to not format at RET

Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2025-09-16 02:27:44 +05:30
Amneesh Singh
e686aef94e home: amneesh: wrap hypridle with nixGL
Signed-off-by: Amneesh Singh <amneesh@ti.com>
2025-09-11 12:22:57 +05:30
54c45411fe home/natto: hyprlock: use pixels instead of percentages
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2025-09-10 18:58:50 +05:30
Amneesh Singh
23d6f855ee home: amneesh: update home.packages
Signed-off-by: Amneesh Singh <amneesh@ti.com>
2025-09-10 18:57:54 +05:30
Amneesh Singh
346c304427 home: amneesh: add hypridle, hyprlock and hyprpaper
override pam for unix_chkpwd

Signed-off-by: Amneesh Singh <amneesh@ti.com>
2025-09-10 18:54:55 +05:30
0bab44bf04 home/natto: add hyprlock,hypridle and hyprpaper
also move hyprland.conf -> hyprland.nix

Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2025-09-10 16:40:42 +05:30
5579bf49c3 hosts/okina: cleanup
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2025-09-04 17:42:34 +05:30
26 changed files with 914 additions and 824 deletions

View File

@@ -16,6 +16,7 @@
domain = {
natto = "weirdnatto.in";
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 = {
url = "github:natto1784/simpler-filehost";
url = "github:natto1784/yamaf";
};
nix-gaming.url = "github:fufexan/nix-gaming";

View File

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

View File

@@ -21,5 +21,9 @@ in
];
};
# hyprland
wayland.windowManager.hyprland.package = lib.mkForce (wrap hyprland);
# hypridle
services.hypridle.package = lib.mkForce (wrap pkgs.hypridle);
}

View File

@@ -11,7 +11,6 @@
};
home.packages = with pkgs; [
clang-tools
cmake
corkscrew
dtc
@@ -23,5 +22,8 @@
ninja
thunderbird
wget
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";
utility.safeOps = false;
extraConfig = lib.mkBefore ''
export GREP_COLORS="ms=01;31"
export GREP_COLORS="mt=01;31"
'';
};
initContent = lib.mkAfter ''

View File

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

View File

@@ -1,5 +1,5 @@
#+TITLE: My Emacs Configuration
#+AUTHOR: Amneesh Singh
#+AUTHOR: natto1784
#+PROPERTY: header-args :emacs-lisp :tangle yes
* Settings
@@ -20,6 +20,7 @@
(fringe-mode 0)
(global-display-line-numbers-mode 1)
(xterm-mouse-mode 1)
(electric-pair-mode)
(setq ring-bell-function 'ignore
gc-cons-threshold most-positive-fixnum
initial-major-mode 'fundamental-mode)
@@ -33,7 +34,9 @@
scroll-step 1
display-line-numbers-type 'relative
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
indent-tabs-mode nil)
#+end_src
@@ -57,8 +60,7 @@
#+begin_src emacs-lisp
(use-package benchmark-init
:config
;; To disable collection of benchmark data after init is done.
:init (benchmark-init/deactivate))
(add-hook 'after-init-hook 'benchmark-init/deactivate) )
#+end_src
** Visual packages
@@ -78,6 +80,15 @@
(dark-theme t))
#+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
Enable vertico
#+begin_src emacs-lisp
@@ -89,6 +100,13 @@ Enable vertico
("C-k" . vertico-previous)))
#+end_src
Save history over restarts
#+begin_src emacs-lisp
(use-package savehist
:init
(savehist-mode))
#+end_src
Marginalia for description
#+begin_src emacs-lisp
(use-package marginalia
@@ -131,6 +149,7 @@ Consult
(use-package evil
:init
(setq-default evil-shift-width 2)
(setq evil-want-keybinding nil)
:config
(evil-set-initial-state 'vterm-mode 'insert)
(evil-set-undo-system 'undo-tree)
@@ -183,7 +202,9 @@ To undo and redo easily like vi
#+begin_src emacs-lisp
(use-package lsp-mode
:defer t
:commands lsp)
:commands lsp
:init (setq lsp-enable-on-type-formatting nil)
:hook (prog-mode . lsp-deferred))
#+end_src
*** Configure lsp-ui
@@ -225,7 +246,6 @@ For autocomplete
(add-to-list 'company-backends 'company-dabbrev)
(setq company-backends (append '(company-files) (remove 'company-files company-backends)))
:hook (after-init . global-company-mode))
#+end_src
*** Configure company-quickhelp
@@ -256,6 +276,8 @@ For autocomplete
** Languages
#+begin_src emacs-lisp
(use-package dts-mode
:mode ("\\.dts\\'" "\\.dtsi\\'" "\\.overlay\\'"))
(use-package lsp-haskell
:mode "\\.hs\\'")
(use-package lsp-latex
@@ -276,11 +298,26 @@ For autocomplete
:mode "\\.go\\'")
#+end_src
** Magit
** Git
magit for git operations
#+begin_src emacs-lisp
(use-package magit :defer t)
#+end_src
blamer for git blame
#+begin_src emacs-lisp
(use-package blamer
:defer 20
:custom
(blamer-idle-time 0.3)
(blamer-min-offset 70)
:config
(global-blamer-mode 1)
:init
(setq blamer-show-avatar-p nil
blamer-max-commit-message-length 72))
#+end_src
** VTerm
*** Configure vterm
#+begin_src emacs-lisp
@@ -331,26 +368,64 @@ Do not use centaur tabs for now
#+end_src
** Misc packages
#+begin_src emacs-lisp
*** Icons
For installing icons
#+begin_src emacs-lisp
(use-package all-the-icons
:defer t
:if (display-graphic-p))
#+end_src
(use-package elcord :defer t)
*** Projectile
For tracking project root
#+begin_src emacs-lisp
(use-package projectile
:defer t
:config
(define-key projectile-mode-map (kbd "C-x p") 'projectile-command-map)
(projectile-mode +1))
#+end_src
*** Rainbow
For highlighting colors
#+begin_src emacs-lisp
(use-package rainbow-mode :defer t)
#+end_src
*** Rainbow delimiters
To make distinguishing parens easier
#+begin_src emacs-lisp
(use-package rainbow-delimiters
:hook (prog-mode . rainbow-delimiters-mode))
(use-package flex-autopair)
#+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
** Add org-mode
#+begin_src emacs-lisp
@@ -398,22 +473,31 @@ Do not use centaur tabs for now
(latex . t)))
#+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
* Custom mode line
switched to doom modeline after using my own modeline for a while
* Mode line
** Doom modeline
Switched to doom modeline after using my own modeline for a while
#+begin_src emacs-lisp
(use-package doom-modeline
:init (doom-modeline-mode 1))
#+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
Stolen from [[https://www.reddit.com/r/emacs/comments/ft84xy/run_shell_command_in_new_vterm/][this]] reddit post
@@ -441,33 +525,35 @@ Stolen from [[https://www.reddit.com/r/emacs/comments/ft84xy/run_shell_command_i
(vterm-send-return)))
#+end_src
Compilation shortcuts for standalone files
* LLMs
** gptel
#+begin_src emacs-lisp
(defun candrun ()
(let ((full buffer-file-name)
(file (file-name-sans-extension buffer-file-name)))
(pcase (file-name-extension full)
("c" (concat "gcc " full " -lm -pthread -o " file " && " file " && rm " file))
("java" (concat "java " full))
("py" (concat "python " full))
("cpp" (concat "g++ " full " -o " file " && " file " && rm " file))
("cc" (concat "g++ " full " -o " file " && " file " && rm " file))
("hs" (concat "runhaskell " full))
("sh" (concat "sh " full))
("js" (concat "node " full))
("ts" (concat "tsc " full " && node " file ".js && rm " file ".js" ))
("rs" (concat "rustc " full " -o " file " && " file " && rm " file)))))
(use-package gptel
:defer t
:config
(setq gptel-model 'claude-sonnet-4-20250514
gptel-backend (gptel-make-anthropic "Claude"
:stream t
:protocol "https"
:key (getenv "ANTHROPIC_API_KEY")
:host (getenv "ANTHROPIC_API_BASE_DOMAIN")))
(setq gptel-default-mode 'org-mode)
:bind (("C-c g" . gptel)))
#+end_src
* Custom Functions
** Aidermacs
#+begin_src emacs-lisp
(defun detach-process ()
"Run processes but detached from the parent"
(interactive)
(let ((command (read-string "Enter command:")))
(call-process-shell-command (concat command " &") nil 0)))
(use-package aidermacs
:defer t
:bind (("C-c a" . aidermacs-transient-menu))
:custom
; See the Configuration section below
(aidermacs-default-chat-mode 'architect)
(aidermacs-default-model "sonnet"))
#+end_src
* Keybinds
** General
*** Colemak translations
@@ -528,8 +614,7 @@ not using this anymore
"<f4>" (lambda () (interactive) (vterm t))
"C-S-t" 'vterm-toggle-cd
"C-t" 'vterm-toggle
"<f1>" 'vterm-toggle
"<f5>" (lambda () (interactive) (run-in-vterm (candrun))))
"<f1>" 'vterm-toggle)
(general-define-key
:keymaps 'vterm-mode-map
"<f3>" 'vterm-toggle-forward

View File

@@ -1,173 +0,0 @@
monitor=, highrr, auto, 1
input {
kb_layout = us,us
kb_variant = colemak_dh,
kb_model =
kb_options = grp:rctrl_toggle
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = yes
scroll_factor = 0.4
}
repeat_delay = 300
accel_profile = flat
}
general {
gaps_in = 5
gaps_out = 10
border_size = 2
# home-manager is going to override these
col.active_border = rgba(b4befeee) rgba(f5c2e7ff) 135deg
col.inactive_border = rgba(595959ff)
layout = dwindle
}
decoration {
rounding = 1
inactive_opacity = 0.8
shadow {
enabled = true
}
blur {
enabled = true
size = 8
new_optimizations = true
xray = true
}
}
animations {
enabled = yes
bezier =overshot,0.01, 0.9, 0.1, 1.05
bezier =easeoutexpo,0.16, 1, 0.3, 1
animation = windows, 1, 7, overshot, popin 50%
animation = windowsOut, 1, 7, easeoutexpo, popin 50%
animation = border, 1, 10, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, overshot
}
cursor {
no_hardware_cursors = true
}
dwindle {
pseudotile = yes
preserve_split = yes
}
gestures {
workspace_swipe = off
}
misc {
disable_hyprland_logo = true
}
$mainMod=SUPER
binde=$mainMod, RETURN, exec, foot
bindr=SUPER, D, exec, pkill tofi || tofi-drun | xargs hyprctl dispatch exec --
bindr=SUPER SHIFT, D, exec, pkill tofi || tofi-run --require-match=false | xargs hyprctl dispatch exec --
$playerctl=playerctl -p 'playerctld,%any'
bind=$mainMod, P, exec, $playerctl play-pause
bind=, XF86AudioPlay, exec, $playerctl play-pause
bind=, XF86AudioNext, exec, $playerctl position 5+
bind=, XF86AudioPrev, exec, $playerctl position 5-
bind=$mainMod, XF86AudioNext, exec, $playerctl next
bind=$mainMod, XF86AudioPrev, exec, $playerctl previous
binde=, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
binde=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bind=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
binde=, XF86MonBrightnessUp, exec, light -A 5
binde=, XF86MonBrightnessDown, exec, light -U 5
bind=$mainMod SHIFT, F1, exec, setxkbmap us colemak_dh
bind=$mainMod SHIFT, F2, exec, setxkbmap us basic
bind=$mainMod SHIFT, F3, exec, setxkbmap in deva
bind=$mainMod SHIFT, F4, exec, setxkbmap in guru
bind=$mainMod SHIFT, F5, exec, setxkbmap colemak dhz
bind=, PRINT, exec, grimblast --notify copysave screen
bind=SHIFT, PRINT, exec, grimblast --notify copysave area
binde=$mainMod SHIFT, Q, killactive,
bind=$mainMod ALT, f, exit,
bind=$mainMod SHIFT, t, pseudo,
bind=$mainMod, f, fullscreen,
bind=$mainMod, t, togglefloating,
bindm=SUPER, mouse:272, movewindow
bindm=SUPER, mouse:273, resizewindow
bind=$mainMod, left, movefocus, l
bind=$mainMod, h, movefocus, l
bind=$mainMod, right, movefocus, r
bind=$mainMod, l, movefocus, r
bind=$mainMod, up, movefocus, u
bind=$mainMod, k, movefocus, u
bind=$mainMod, down, movefocus, d
bind=$mainMod, j, movefocus, d
binde=$mainMod SHIFT, left, movewindow, l
binde=$mainMod SHIFT, h, movewindow, l
binde=$mainMod SHIFT, right, movewindow, r
binde=$mainMod SHIFT, l, movewindow, r
binde=$mainMod SHIFT, up, movewindow, u
binde=$mainMod SHIFT, k, movewindow, u
binde=$mainMod SHIFT, down, movewindow, d
binde=$mainMod SHIFT, j, movewindow, d
binde=SHIFT ALT, left, resizeactive, -10 0
binde=SHIFT ALT, h, resizeactive, -10 0
binde=SHIFT ALT, right, resizeactive, 10 0
binde=SHIFT ALT, l, resizeactive, 10 0
binde=SHIFT ALT, up, resizeactive, 0 -10
binde=SHIFT ALT, k, resizeactive, 0 -10
binde=SHIFT ALT, down, resizeactive, 0 10
binde=SHIFT ALT, j, resizeactive, 0 10
bind=$mainMod, 1, workspace, 1
bind=$mainMod, 2, workspace, 2
bind=$mainMod, 3, workspace, 3
bind=$mainMod, 4, workspace, 4
bind=$mainMod, 5, workspace, 5
bind=$mainMod, 6, workspace, 6
bind=$mainMod, 7, workspace, 7
bind=$mainMod, 8, workspace, 8
bind=$mainMod, 9, workspace, 9
bind=$mainMod, 0, workspace, 10
bind=$mainMod SHIFT, 1, movetoworkspacesilent, 1
bind=$mainMod SHIFT, 2, movetoworkspacesilent, 2
bind=$mainMod SHIFT, 3, movetoworkspacesilent, 3
bind=$mainMod SHIFT, 4, movetoworkspacesilent, 4
bind=$mainMod SHIFT, 5, movetoworkspacesilent, 5
bind=$mainMod SHIFT, 6, movetoworkspacesilent, 6
bind=$mainMod SHIFT, 7, movetoworkspacesilent, 7
bind=$mainMod SHIFT, 8, movetoworkspacesilent, 8
bind=$mainMod SHIFT, 9, movetoworkspacesilent, 9
bind=$mainMod SHIFT, 0, movetoworkspacesilent, 10
bind=$mainMod SHIFT, comma, focusmonitor, -1
bind=$mainMod SHIFT, period, focusmonitor, +1
bind=CTRL ALT, r, pass, ^(com\.obsproject\.Studio)$
exec-once=eww open bar
exec-once=swaybg -i ~/Wallpapers/current.*

View File

@@ -28,6 +28,9 @@
# when wayland
./wayland.nix
./hyprpaper.nix
./hyprlock.nix
./hypridle.nix
./hyprland.nix
./foot.nix
./tofi.nix

View File

@@ -24,11 +24,21 @@ in
alwaysEnsure = true;
alwaysTangle = true;
defaultInitFile = true;
extraEmacsPackages =
epkgs: with epkgs; [
extraEmacsPackages = epkgs: with epkgs; [
use-package
(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 = {

View File

@@ -26,24 +26,23 @@
};
Service =
let
deps =
[
config.programs.eww.package
]
++ lib.optional config.wayland.windowManager.hyprland.enable config.wayland.windowManager.hyprland.package
++ (with pkgs; [
coreutils
bash
jq
less
gawk
socat
playerctl
networkmanager
iwgtk
wireplumber
])
++ lib.optional config.laptop pkgs.light;
deps = [
config.programs.eww.package
]
++ lib.optional config.wayland.windowManager.hyprland.enable config.wayland.windowManager.hyprland.package
++ (with pkgs; [
coreutils
bash
jq
less
gawk
socat
playerctl
networkmanager
iwgtk
wireplumber
])
++ lib.optional config.laptop pkgs.light;
in
{
Type = "simple";

View File

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

29
home/natto/hypridle.nix Normal file
View File

@@ -0,0 +1,29 @@
{
pkgs,
config,
...
}:
let
lock = "${pkgs.systemd}/bin/loginctl lock-session";
timeout = 300;
in
{
# screen idle
services.hypridle = {
enable = true;
settings = {
general = {
before_sleep_cmd = lock;
lock_cmd = "pgrep hyprlock || ${config.programs.hyprlock.package}/bin/hyprlock";
};
listener = [
{
timeout = timeout;
on-timeout = lock;
}
];
};
};
}

View File

@@ -2,6 +2,7 @@
pkgs,
inputs,
config,
lib,
conf,
...
}:
@@ -10,32 +11,197 @@
windowManager = {
hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
xwayland = {
enable = true;
};
extraConfig =
(builtins.readFile ./config/hypr/hyprland.conf)
+ (with config.home.pointerCursor; ''
exec-once=hyprctl setcursor ${name} ${toString size}
'')
+ (with conf.colors.argb { a = "ee"; }; ''
general {
col.active_border = 0x${mauve} 0x${flamingo} 135deg
col.inactive_border = 0x${surface0}
}
'');
settings = {
monitor = ", highrr, auto, 1";
input = {
kb_layout = "us,us";
kb_variant = "colemak_dh";
kb_model = "";
kb_options = "grp:rctrl_toggle";
kb_rules = "";
repeat_delay = 300;
accel_profile = "flat";
follow_mouse = true;
touchpad = {
natural_scroll = true;
scroll_factor = 0.4;
};
};
general = with conf.colors.argb { a = "ee"; }; {
gaps_in = 5;
gaps_out = 10;
border_size = 2;
layout = "dwindle";
"col.active_border" = "0x${mauve} 0x${flamingo} 135deg";
"col.inactive_border" = "0x${surface0}";
};
decoration = {
rounding = 1;
inactive_opacity = 0.8;
shadow = {
enabled = true;
};
blur = {
enabled = true;
size = 8;
new_optimizations = true;
xray = true;
};
};
animations = {
enabled = true;
bezier = [
"overshot,0.01,0.9,0.1,1.05"
"easeoutexpo,0.16,1,0.3,1"
];
animation = [
"windows,1,7,overshot,popin 50%"
"windowsOut,1,7,easeoutexpo,popin 50%"
"border,1,10,default"
"fade,1,7,default"
"workspaces,1,6,overshot"
];
};
cursor = {
no_hardware_cursors = true;
};
dwindle = {
pseudotile = true;
preserve_split = true;
};
misc = {
disable_hyprland_logo = true;
};
"$mod" = "SUPER";
bind =
let
playerctl = "playerctl -p 'playerctld,%any'";
in
[
# Hyprland operations
"$mod ALT, f, exit,"
"$mod SHIFT, t, pseudo,"
"$mod, f, fullscreen,"
"$mod, t, togglefloating,"
"$mod, left, movefocus, l"
"$mod, h, movefocus, l"
"$mod, right, movefocus, r"
"$mod, l, movefocus, r"
"$mod, up, movefocus, u"
"$mod, k, movefocus, u"
"$mod, down, movefocus, d"
"$mod, j, movefocus, d"
"$mod, 1, workspace, 1"
"$mod, 2, workspace, 2"
"$mod, 3, workspace, 3"
"$mod, 4, workspace, 4"
"$mod, 5, workspace, 5"
"$mod, 6, workspace, 6"
"$mod, 7, workspace, 7"
"$mod, 8, workspace, 8"
"$mod, 9, workspace, 9"
"$mod, 0, workspace, 10"
"$mod SHIFT, 1, movetoworkspacesilent, 1"
"$mod SHIFT, 2, movetoworkspacesilent, 2"
"$mod SHIFT, 3, movetoworkspacesilent, 3"
"$mod SHIFT, 4, movetoworkspacesilent, 4"
"$mod SHIFT, 5, movetoworkspacesilent, 5"
"$mod SHIFT, 6, movetoworkspacesilent, 6"
"$mod SHIFT, 7, movetoworkspacesilent, 7"
"$mod SHIFT, 8, movetoworkspacesilent, 8"
"$mod SHIFT, 9, movetoworkspacesilent, 9"
"$mod SHIFT, 0, movetoworkspacesilent, 10"
"$mod SHIFT, comma, focusmonitor, -1"
"$mod SHIFT, period, focusmonitor, +1"
# Launchers
"$mod, RETURN, exec, foot"
"$mod, D, exec, pkill tofi || tofi-drun | xargs hyprctl dispatch exec --"
"$mod SHIFT, D, exec, pkill tofi || tofi-run --require-match=false | xargs hyprctl dispatch exec --"
# Media
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
# Backlight
", XF86MonBrightnessUp, exec, light -A 5"
", XF86MonBrightnessDown, exec, light -U 5"
# XWayland Keymaps
"$mod SHIFT, F1, exec, setxkbmap us colemak_dh"
"$mod SHIFT, F2, exec, setxkbmap us basic"
# Screenshot
", PRINT, exec, grimblast --notify copysave screen"
"SHIFT, PRINT, exec, grimblast --notify copysave area"
# Playerctl
"$mod, P, exec, ${playerctl} play-pause"
", XF86AudioPlay, exec, ${playerctl} play-pause"
", XF86AudioNext, exec, ${playerctl} position 5+"
", XF86AudioPrev, exec, ${playerctl} position 5-"
"$mod, XF86AudioNext, exec, ${playerctl} next"
"$mod, XF86AudioPrev, exec, ${playerctl} previous"
];
binde = [
# Hyprland operations
"$mod SHIFT, Q, killactive,"
"$mod SHIFT, left, movewindow, l"
"$mod SHIFT, h, movewindow, l"
"$mod SHIFT, right, movewindow, r"
"$mod SHIFT, l, movewindow, r"
"$mod SHIFT, up, movewindow, u"
"$mod SHIFT, k, movewindow, u"
"$mod SHIFT, down, movewindow, d"
"$mod SHIFT, j, movewindow, d"
"SHIFT ALT, left, resizeactive, -10 0"
"SHIFT ALT, h, resizeactive, -10 0"
"SHIFT ALT, right, resizeactive, 10 0"
"SHIFT ALT, l, resizeactive, 10 0"
"SHIFT ALT, up, resizeactive, 0 -10"
"SHIFT ALT, k, resizeactive, 0 -10"
"SHIFT ALT, down, resizeactive, 0 10"
"SHIFT ALT, j, resizeactive, 0 10"
];
bindm = [
# Mouse
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod ALT, mouse:272, resizewindow"
];
exec-once = [
(with config.home.pointerCursor; "hyprctl setcursor ${name} ${toString size} ")
]
++ (with config.programs; lib.optional eww.enable "${eww.package}/bin/eww open bar");
};
};
};
};
home.packages = with pkgs; [
grim
slurp
inputs.hyprland-contrib.packages.${pkgs.system}.grimblast
wl-clipboard
swayimg
swaybg
];
}

80
home/natto/hyprlock.nix Normal file
View File

@@ -0,0 +1,80 @@
{
config,
pkgs,
conf,
...
}:
{
programs.hyprlock = {
enable = true;
settings = with conf.colors.argb { a = "ee"; }; {
general = {
hide_cursor = false;
};
background = [
{
monitor = "";
path = "screenshot";
blur_passes = 2;
}
];
input-field = [
{
monitor = "";
size = "300, 60";
outline_thickness = 4;
valign = "center";
halign = "center";
font_color = "0x${text}";
outer_color = "0x${mauve}";
inner_color = "0x${surface0}";
check_color = "0x${blue}";
fail_color = "0x${red}";
capslock_color = "0x${yellow}";
fade_on_empty = false;
hide_input = false;
placeholder_text = "Logged in as <b>$USER</b>";
fail_text = "Fail! <b>($ATTEMPTS)</b>";
dots_spacing = 0.2;
dots_center = true;
}
];
label = [
{
monitor = "";
text = "Layout: $LAYOUT";
font_size = 25;
color = "0x${text}";
position = "30, -30";
valign = "top";
halign = "left";
}
{
monitor = "";
text = "$TIME";
font_size = 90;
color = "0x${text}";
position = "-30, 0";
valign = "top";
halign = "right";
}
{
monitor = "";
text = "cmd[update:3600000] date +\"%A, %d %B %Y\"";
font_size = 25;
color = "0x${text}";
position = "-30, -150";
valign = "top";
halign = "right";
}
];
};
};
}

18
home/natto/hyprpaper.nix Normal file
View File

@@ -0,0 +1,18 @@
{
config,
...
}:
{
services.hyprpaper = {
enable = true;
settings =
let
wallpaper = "${config.home.homeDirectory}/wallpaper.png";
in
{
preload = [ "${wallpaper}" ];
wallpaper = [ ", ${wallpaper}" ];
};
};
}

View File

@@ -67,7 +67,6 @@ in
home = {
packages = with pkgs; [
spotify
playerctl
mpc_cli
(ncmpcpp.override {
visualizerSupport = true;
@@ -89,4 +88,6 @@ in
path = "${home}/.config/mpdasrc";
symlink = false;
};
services.playerctld.enable = true;
}

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

@@ -60,7 +60,6 @@
];
};
defaultGateway = "192.168.1.1";
nameservers = [
"1.1.1.1"
"8.8.8.8"

View File

@@ -13,7 +13,6 @@
ratbagd.enable = true;
btrfs.autoScrub.enable = true;
gvfs.enable = true;
logind.extraConfig = "RuntimeDirectorySize=30%";
printing = {
enable = true;
drivers = [ pkgs.hplip ];

View File

@@ -1,25 +1,39 @@
{
config,
lib,
pkgs,
inputs,
conf,
...
}:
{
systemd.services.filehost = {
enable = true;
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
Environment = [
"TITLE=nattofiles"
"USER_URL=https://f.${conf.network.addresses.domain.natto}"
"ROCKET_LIMITS={file=\"512MB\",data-form=\"512MB\"}"
"ROCKET_LOG_LEVEL=debug"
"ROCKET_ADDRESS=0.0.0.0"
];
Restart = "on-failure";
ExecStart = "${inputs.filehost.packages.${pkgs.system}.simpler-filehost}/bin/simpler-filehost";
systemd.services = rec {
filehost = {
enable = true;
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
Environment = [
"TITLE=nattofiles"
"INTERNAL_HOST=0.0.0.0"
"INTERNAL_PORT=8000"
"MAX_FILESIZE_MB=500"
"EXTERNAL_HAS_TLS=1"
"EXTERNAL_HOST=f.${conf.network.addresses.domain.natto}"
];
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,
lib,
...
}:
{
@@ -36,6 +35,18 @@
USER = FROM;
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;
actions.ENABLED = false;
};

View File

@@ -1,6 +1,7 @@
{ conf, ... }:
let
domain = conf.network.addresses.domain.natto;
chutiya = conf.network.addresses.domain.chutiya;
in
{
services.nginx = {
@@ -35,6 +36,17 @@ in
in
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"; };
"puffer.${domain}" = genericHttpRProxy {
@@ -59,7 +71,15 @@ in
};
# 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;";
};
};
};
}