This commit is contained in:
itamar 2026-04-10 22:42:37 +03:00
parent 7b8005c867
commit 4731e545bb
No known key found for this signature in database
GPG key ID: D8277CDCD4F544E9
44 changed files with 742 additions and 1233 deletions

9
navi/navi/audio.nix Normal file
View file

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
pavucontrol
milkytracker
rtmidi
];
}

16
navi/navi/browser.nix Normal file
View file

@ -0,0 +1,16 @@
{ pkgs, inputs, ... }:
{
programs.librewolf = {
enable = true;
# Enable WebGL, cookies and history
settings = {
"webgl.disabled" = false;
"privacy.resistFingerprinting" = true;
"privacy.clearOnShutdown.history" = true;
"privacy.clearOnShutdown.cookies" = false;
"network.cookie.lifetimePolicy" = 0;
};
};
}

57
navi/navi/bspwm.nix Normal file
View file

@ -0,0 +1,57 @@
{ pkgs, lib, ... }:
{
xsession = {
enable = true;
windowManager.bspwm = {
enable = true;
monitors."*" = [ "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" ];
settings = {
normal_border_color = "#6E738D";
focused_border_color = "#f5bde6";
border_width = 2;
window_gap = 2;
};
rules."Zathura".state = "tiled";
};
};
services.sxhkd = {
enable = true;
keybindings = {
"super + d" = "rofi -show drun";
"super + Return" = "alacritty";
"super + w" = "bspc node -c";
"super + 1" = "bspc desktop -f '1'";
"super + 2" = "bspc desktop -f '2'";
"super + 3" = "bspc desktop -f '3'";
"super + 4" = "bspc desktop -f '4'";
"super + 5" = "bspc desktop -f '5'";
"super + 6" = "bspc desktop -f '6'";
"super + 7" = "bspc desktop -f '7'";
"super + 8" = "bspc desktop -f '8'";
"super + 9" = "bspc desktop -f '9'";
"super + 0" = "bspc desktop -f '10'";
"super + shift + 1" = "bspc node -d '1'";
"super + shift + 2" = "bspc node -d '2'";
"super + shift + 3" = "bspc node -d '3'";
"super + shift + 4" = "bspc node -d '4'";
"super + shift + 5" = "bspc node -d '5'";
"super + shift + 6" = "bspc node -d '6'";
"super + shift + 7" = "bspc node -d '7'";
"super + shift + 8" = "bspc node -d '8'";
"super + shift + 9" = "bspc node -d '9'";
"super + shift + 0" = "bspc node -d '10'";
"super + h" = "bspc node -f west";
"super + j" = "bspc node -f south";
"super + k" = "bspc node -f north";
"super + l" = "bspc node -f east";
"super + shift + h" = "bspc node -s west";
"super + shift + j" = "bspc node -s south";
"super + shift + k" = "bspc node -s north";
"super + shift + l" = "bspc node -s east";
"super + shift + r" = "bspc wm -r";
};
};
home.packages = with pkgs; [ rofi ];
}

31
navi/navi/default.nix Normal file
View file

@ -0,0 +1,31 @@
{ config, pkgs, ... }:
{
home.stateVersion = "22.05";
imports = [
./packages.nix
./programs.nix
./fonts.nix
./services.nix
./editors.nix
./terminal.nix
./ssh.nix
./git.nix
./launcher.nix
./keyboard.nix
./bspwm.nix
./notifications.nix
./polybar.nix
./screen-lock.nix
./shell.nix
./gtk-qt.nix
./devel.nix
./browser.nix
./messaging.nix
./multimedia.nix
./audio.nix
];
services.gpg-agent = {
enable = true;
pinentryPackage = pkgs.pinentry-curses;
};
}

7
navi/navi/devel.nix Normal file
View file

@ -0,0 +1,7 @@
{
programs.direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
}

41
navi/navi/editors.nix Normal file
View file

@ -0,0 +1,41 @@
{ pkgs, inputs, ... }:
{
programs.neovim = {
enable = true;
};
home.sessionVariables.EDITOR = "nvim";
home.file = {
".emacs.d" = {
text = "hii";
recursive = true;
};
};
programs.emacs.enable = true;
programs.emacs.extraPackages = (
epkgs: (with epkgs; [
better-defaults
material-theme
org
org-bullets
org-journal
org-roam
org-super-agenda
helm-org-rifle
afternoon-theme
workgroups2
treemacs
projectile
slime
yaml
yaml-mode
markdown-mode
ox-pandoc
use-package
notmuch
])
);
}

View file

15
navi/navi/fonts.nix Normal file
View file

@ -0,0 +1,15 @@
{ pkgs, ... }:
{
fonts.fontconfig.enable = true;
home.packages = with pkgs; [
jetbrains-mono
roboto
font-awesome
corefonts
vista-fonts
culmus
iosevka
];
}

29
navi/navi/git.nix Normal file
View file

@ -0,0 +1,29 @@
{ pkgs, ... }:
{
programs.git = {
enable = true;
userName = "laniakea";
userEmail = "itamar@itamar.site";
ignores = [ "*.swp" "result" ];
signing = {
key = "72F74E167C220C451CF29C09D8277CDCD4F544E9";
signByDefault = true;
};
extraConfig = {
commit.gpgSign = true;
tag.gpgSign = true;
push.autoSetupRemote = true;
};
};
programs.gh = {
enable = true;
settings = {
git_protocol = "ssh";
version = 1;
};
};
home.packages = [ pkgs.git-open ];
}

54
navi/navi/gtk-qt.nix Normal file
View file

@ -0,0 +1,54 @@
{ pkgs, ... }:
{
gtk = {
enable = true;
# theme = {
# name = "Catppuccin-Macchiato-Compact-Lavender-Dark";
# package = pkgs.catppuccin-gtk.override {
# variant = "macchiato";
# accents = [ "lavender" ];
# size = "compact";
# tweaks = [ "rimless" ];
# };
# };
# iconTheme = {
# name = "Papirus-Dark";
# package = pkgs.catppuccin-papirus-folders.override {
# flavor = "macchiato";
# accent = "lavender";
# };
# };
font = {
name = "Roboto 10";
package = pkgs.roboto;
};
# gtk4.extraConfig = {
# gtk-xft-antialias = 1;
# gtk-xft-hinting = 1;
# gtk-xft-hintstyle = "hintslight";
# gtk-xft-rgba = "rgb";
# gtk-enable-event-sounds = 0;
# gtk-enable-input-feedback-sounds = 0;
# };
# gtk3.extraConfig = {
# gtk-xft-antialias = 1;
# gtk-xft-hinting = 1;
# gtk-xft-hintstyle = "hintslight";
# gtk-xft-rgba = "rgb";
# gtk-enable-event-sounds = 0;
# gtk-enable-input-feedback-sounds = 0;
# };
# gtk2.extraConfig = ''
# gtk-xft-antialias=1
# gtk-xft-hinting=1
# gtk-xft-hintstyle="hintslight"
# gtk-xft-rgba="rgb"
# gtk-enable-event-sounds=0
# gtk-enable-input-feedback-sounds=0
# '';
};
}

107
navi/navi/keyboard.nix Normal file
View file

@ -0,0 +1,107 @@
{
home.keyboard = {
layout = "us,il";
options = [ "grp:lalt_lshift_toggle" ];
};
services.sxhkd = {
enable = true;
keybindings = {
# terminal emulator
"super + Return" = "alacritty";
# program launcher
"super + @space" = "rofi -show drun";
# quit/restart bspwm
"super + alt + {q,r}" = "bspc {quit,wm -r}";
# close and kill
"super + {_,shift + }w" = "bspc node -{c,k}";
# alternate between the tiled and monocle layout
"super + m" = "bspc desktop -l next";
# send the newest marked node to the newest preselected node
"super + y" = "bspc node newest.marked.local -n newest.!automatic.local";
# swap the current node and the biggest node
"super + g" = "bspc node -s biggest";
# set the window state
"super + {t,shift + t,s,f}" = "bspc node -t {tiled,pseudo_tiled,floating,fullscreen}";
# set the node flags
"super + ctrl + {m,x,y,z}" = "bspc node -g {marked,locked,sticky,private}";
# focus the node in the given direction
"super + {_,shift + }{h,j,k,l}" = "bspc node -{f,s} {west,south,north,east}";
# focus the node for the given path jump
"super + {p,b,comma,period}" = "bspc node -f @{parent,brother,first,second}";
# focus the next/previous node in the current desktop
"super + {_,shift + }c" = "bspc node -f {next,prev}.local.!hidden.window";
# focus the next/previous desktop in the current monitor
"super + bracket{left,right}" = "bspc desktop -f {prev,next}.local.!hidden.window";
# focus the last node/desktop
"super + {grave,Tab}" = "bspc {node,desktop} -f last";
# focus or send to the given desktop
"super + {_,shift + }{1-9,0}" = "bspc {desktop -f,node -d} '{1-9,10}'";
# preselect the direction
"super + ctrl + {h,j,k,l}" = "bspc node -p {west,south,north,east}";
# preselect the ratio
"super + ctrl + {1-9}" = "bspc node -o 0.{1-9}";
# cancel the preselection for the focused node
"super + ctrl + space" = "bspc node -p cancel";
# cancel the preselection for the focused desktop
"super + ctrl + shift + space" = "bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel";
# move a floating window
"super + {Left,Down,Up,Right}" = "bspc node -v {-20 0,0 20,0 -20,20 0}";
# Rotate tree
"super + shift + {d,a}" = "bspc node @/ -C {forward,backward}";
#### MULTIMEDIA KEYS ####
"XF86Audio{Prev,Next,Play}" = "mpc -q {prev,next,toggle}";
"XF86Audio{Raise,Lower}Volume" = "pulsemixer --change-volume {+,-}5";
"XF86AudioMute" = "pulsemixer --toggle-mute";
"XF86AudioMicMute" = "pulsemixer --id source-42 --toggle-mute";
# Launch programs
"alt + 1" = "librewolf";
"alt + 2" = "Discord";
"alt + 3" = "nemo";
# Brightness control
"XF86MonBrightness{Up,Down}" = "light -{A,U} 10";
# Screenshoting
"super + shift + s" = "maim -s | xclip -selection clipboard -t image/png";
"Print" = "maim | xclip -selection clipboard -t image/png && notify-send 'maim' 'Screenshot captured'";
};
extraConfig = ''
# Expand/contract a window by moving one of its side outward/inward
super + alt + {h,j,k,l}
STEP=20; SELECTION={1,2,3,4}; \
bspc node -z $(echo "left -$STEP 0,bottom 0 $STEP,top 0 -$STEP,right $STEP 0" | cut -d',' -f$SELECTION) || \
bspc node -z $(echo "right -$STEP 0,top 0 $STEP,bottom 0 -$STEP,left $STEP 0" | cut -d',' -f$SELECTION)
'';
};
}

43
navi/navi/launcher.nix Normal file
View file

@ -0,0 +1,43 @@
{ config, ... }:
{
programs.rofi = {
enable = true;
font = "JetBrains Mono 8";
extraConfig = {
modi = [ "drun" ];
matching = "fuzzy";
};
# theme =
# let
# inherit (config.lib.formats.rasi) mkLiteral;
# in
# {
# # catppuccin macchiato
# "*" = {
# background-color = mkLiteral "#24273A";
# text-color = mkLiteral "#CAD3F5";
# border-color = mkLiteral "#91D7E3";
# };
# window.width = mkLiteral "25%";
# mainbox = {
# border = 3;
# padding = 10;
# };
# listview = {
# lines = 8;
# spacing = 5;
# padding = mkLiteral "5 0 0";
# };
# element.padding = 2;
# "element.selected".background-color = mkLiteral "#363A4F";
# element-text.background-color = mkLiteral "inherit";
# inputbar = {
# spacing = 5;
# padding = 5;
# border = mkLiteral "0 0 1";
# border-color = mkLiteral "#A6DA95";
# };
# };
};
}

17
navi/navi/messaging.nix Normal file
View file

@ -0,0 +1,17 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
#discord
element-desktop
(pkgs.discord.override {
# remove any overrides that you don't want
withOpenASAR = true;
withVencord = true;
})];
}

15
navi/navi/multimedia.nix Normal file
View file

@ -0,0 +1,15 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
ffmpeg
ffmpegthumbnailer
feh
gimp
transmission_4
xdg-utils
xdg-user-dirs
];
}

View file

@ -0,0 +1,34 @@
{ pkgs, ... }:
{
services.dunst = {
enable = true;
settings = {
global.font = "JetBrains Mono 10";
# catppuccin macchiato
global = {
frame_color = "#8AADF4";
separator_color = "frame";
};
urgency_low = {
background = "#24273A";
foreground = "#CAD3F5";
};
urgency_normal = {
background = "#24273A";
foreground = "#CAD3F5";
};
urgency_critical = {
background = "#24273A";
foreground = "#CAD3F5";
frame_color = "#F5A97F";
};
};
};
home.packages = [ pkgs.libnotify ];
}

38
navi/navi/packages.nix Normal file
View file

@ -0,0 +1,38 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
# wget
keepassxc
# yt-dlp
p7zip
# tdesktop
# killall
xclip
maim
calc sage nim zig gcc gnumake gnupg ghc idris2 python3 vim unzip wget
# htop
ranger
# pulsemixer
tree
# fzf
# gnome.gnome-disk-utility
# nextcloud-client
# lm_sensors
# ffmpegthumbnailer
# ffmpeg
# piper
# thunderbird-bin
# ookla-speedtest
# nixpkgs-fmt
# nixpkgs-review
# nix-update
# acpi
# ripgrep
# fd
# sd
# discord
];
}

113
navi/navi/polybar.nix Normal file
View file

@ -0,0 +1,113 @@
{ pkgs, ... }:
{
services.polybar = {
enable = true;
package = pkgs.polybarFull;
script = ''
polybar leftbar &
polybar centerbar &
polybar rightbar &
'';
config = {
"colors" = {
base = "#24273a";
mantle = "#1e2030";
surface0 = "#363a4f";
surface1 = "#494d64";
text = "#cad3f5";
mauve = "#c6a0f6";
red = "#ed8796";
maroon = "#ee99a0";
green = "#a6da95";
peach = "#f5a97f";
sapphire = "#7dc4e4";
yellow = "#eed49f";
};
"section/base" = {
height = 20;
offset-y = 2;
background = "\${colors.base}";
foreground = "\${colors.text}";
border-color = "\${colors.mauve}";
border-size = 2;
font-0 = "Iosevka:size=15;2";
font-1 = "Iosevka:size=14;2";
wm-restack = "bspwm";
};
"bar/leftbar" = {
"inherit" = "section/base";
modules-left = "bspwm";
offset-x = 10;
width = 221;
};
"module/bspwm" = {
type = "internal/bspwm";
label-active = "%index%";
label-active-background = "\${colors.mauve}";
label-active-foreground = "\${colors.base}";
label-active-padding = 1;
label-empty = "%index%";
label-empty-padding = 1;
label-occupied = "%index%";
label-occupied-background = "\${colors.surface0}";
label-occupied-padding = 1;
label-urgent = "%index%";
label-urgent-background = "\${colors.red}";
label-urgent-foreground = "\${colors.base}";
label-urgent-padding = 1;
};
"bar/centerbar" = {
"inherit" = "section/base";
modules-center = "mpd";
offset-x = "50%:-175";
width = 350;
};
"module/mpd".type = "internal/mpd";
"bar/rightbar" = {
"inherit" = "section/base";
modules-right = "xkeyboard cpu memory pulseaudio date";
offset-x = "100%:-460";
width = 450;
};
"module/xkeyboard" = {
type = "internal/xkeyboard";
format-foreground = "\${colors.maroon}";
format-padding = 1;
};
"module/cpu" = {
type = "internal/cpu";
format-foreground = "\${colors.green}";
format-padding = 1;
label = " %percentage%%";
};
"module/memory" = {
type = "internal/memory";
format-foreground = "\${colors.peach}";
format-padding = 1;
label = " %percentage_used%%";
};
"module/pulseaudio" = {
type = "internal/pulseaudio";
format-muted-background = "\${colors.red}";
format-muted-foreground = "\${colors.base}";
format-muted-padding = 1;
format-volume = "<ramp-volume> <label-volume>";
format-volume-foreground = "\${colors.sapphire}";
format-volume-padding = 1;
label-muted = "MUTED";
ramp-volume-0 = "";
ramp-volume-1 = "";
ramp-volume-2 = "";
};
"module/date" = {
type = "internal/date";
date = "%d";
date-alt = "%A";
time = "%H:%M";
format-foreground = "\${colors.yellow}";
format-padding = 1;
label = "%date% %time%";
};
};
};
}

22
navi/navi/programs.nix Normal file
View file

@ -0,0 +1,22 @@
{ pkgs, ... }:
{
programs = {
bat = {
enable = true;
config = {
paging = "never";
style = "numbers";
theme = "catppuccin";
};
};
zathura = {
enable = true;
options = {
font = "JetBrains Mono 8";
recolor = true;
};
};
};
}

10
navi/navi/screen-lock.nix Normal file
View file

@ -0,0 +1,10 @@
{ pkgs, lib, ... }:
{
services.screen-locker = {
enable = true;
xautolock.detectSleep = true;
inactiveInterval = 15;
lockCmd = lib.getExe pkgs.xsecurelock;
};
}

6
navi/navi/services.nix Normal file
View file

@ -0,0 +1,6 @@
{ pkgs, lib, ... }:
{
}

8
navi/navi/shell.nix Normal file
View file

@ -0,0 +1,8 @@
{ pkgs, lib, ... }:
{
programs.zsh = {
enable = true;
enableCompletion = true;
};
}

8
navi/navi/ssh.nix Normal file
View file

@ -0,0 +1,8 @@
{
programs.ssh = {
enable = true;
hashKnownHosts = true;
};
}

14
navi/navi/terminal.nix Normal file
View file

@ -0,0 +1,14 @@
{ pkgs, ... }:
{
programs.alacritty = {
enable = true;
settings = {
env.WINIT_X11_SCALE_FACTOR = "1";
font = {
normal.family = "Iosevka";
size = 14;
};
};
};
}