1176 lines
32 KiB
Nix
1176 lines
32 KiB
Nix
|
{ config, pkgs, lib, ... }:
|
||
|
|
||
|
let
|
||
|
dbus-sway-environment = pkgs.writeTextFile {
|
||
|
name = "dbus-sway-environment";
|
||
|
destination = "/bin/dbus-sway-environment";
|
||
|
executable = true;
|
||
|
text = ''
|
||
|
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
||
|
systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
||
|
exec hash dbus-update-activation-environment 2>/dev/null && \
|
||
|
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
||
|
systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
|
||
|
systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
in {
|
||
|
# Home Manager needs a bit of information about you and the paths it should
|
||
|
# manage.
|
||
|
home.username = "spagnologasper";
|
||
|
home.homeDirectory = "/home/spagnologasper";
|
||
|
|
||
|
# This value determines the Home Manager release that your configuration is
|
||
|
# compatible with. This helps avoid breakage when a new Home Manager release
|
||
|
# introduces backwards incompatible changes.
|
||
|
#
|
||
|
# You should not change this value, even if you update Home Manager. If you do
|
||
|
# want to update the value, then make sure to first check the Home Manager
|
||
|
# release notes.
|
||
|
home.stateVersion = "23.11"; # Please read the comment before changing.
|
||
|
|
||
|
# The home.packages option allows you to install Nix packages into your
|
||
|
# environment.
|
||
|
home.packages = with pkgs; [
|
||
|
# Appearence
|
||
|
dracula-theme
|
||
|
gnome3.adwaita-icon-theme
|
||
|
# Development
|
||
|
dbeaver
|
||
|
libreoffice
|
||
|
zathura
|
||
|
okular
|
||
|
conda
|
||
|
vscode
|
||
|
joplin-desktop
|
||
|
# Tools / File managenemt
|
||
|
sshpass
|
||
|
gparted
|
||
|
etcher
|
||
|
transmission-gtk
|
||
|
filezilla
|
||
|
xournalpp
|
||
|
pdftk
|
||
|
reuse
|
||
|
pandoc
|
||
|
texlive.combined.scheme-full
|
||
|
remmina
|
||
|
pcmanfm
|
||
|
jq
|
||
|
feh
|
||
|
ranger
|
||
|
uget
|
||
|
stow
|
||
|
bat
|
||
|
eza
|
||
|
# Statistics
|
||
|
btop
|
||
|
nvitop
|
||
|
cava
|
||
|
acpi
|
||
|
brightnessctl
|
||
|
neofetch
|
||
|
htop-vim
|
||
|
# Programming languages
|
||
|
ansible
|
||
|
# Database connection tools
|
||
|
mysql
|
||
|
#mongodb .. install it using nix-shell as it build itself each time (time consuming)
|
||
|
sqlite
|
||
|
postgresql
|
||
|
# Audio video image
|
||
|
easyeffects
|
||
|
krita
|
||
|
spotify
|
||
|
shotwell
|
||
|
fdupes # find image duplicates based on their contents
|
||
|
mpv
|
||
|
imagemagick
|
||
|
vlc
|
||
|
blueberry # Bluetooth client (GUI)
|
||
|
# Voice chat
|
||
|
discord
|
||
|
zoom-us
|
||
|
slack
|
||
|
teams-for-linux
|
||
|
# Shell extras
|
||
|
starship
|
||
|
lsd
|
||
|
# Learning
|
||
|
anki-bin
|
||
|
# Games
|
||
|
superTuxKart
|
||
|
# Security
|
||
|
steghide
|
||
|
exiftool
|
||
|
fcrackzip
|
||
|
ghidra-bin
|
||
|
tshark
|
||
|
tcpdump
|
||
|
gdb
|
||
|
gef
|
||
|
nmap
|
||
|
# Format tools
|
||
|
black
|
||
|
nixfmt
|
||
|
# Maths
|
||
|
R
|
||
|
# Sway
|
||
|
dbus-sway-environment
|
||
|
swaylock
|
||
|
swayidle
|
||
|
wl-clipboard
|
||
|
wf-recorder
|
||
|
mako
|
||
|
kanshi
|
||
|
alacritty
|
||
|
dmenu
|
||
|
slurp
|
||
|
bemenu
|
||
|
wdisplays
|
||
|
rofi
|
||
|
wl-mirror
|
||
|
networkmanagerapplet
|
||
|
# Rofi plugins
|
||
|
rofi-bluetooth
|
||
|
# Audo control
|
||
|
pulsemixer
|
||
|
pavucontrol
|
||
|
nextcloud-client
|
||
|
# Mailing
|
||
|
thunderbird-bin
|
||
|
# Flameshot
|
||
|
xdg-desktop-portal
|
||
|
xdg-desktop-portal-wlr
|
||
|
grim
|
||
|
flameshot
|
||
|
# Networking statistics
|
||
|
nload
|
||
|
# Disk usage
|
||
|
ncdu
|
||
|
# Compression
|
||
|
zip
|
||
|
unzip
|
||
|
pigz
|
||
|
p7zip
|
||
|
parallel
|
||
|
ddrescue
|
||
|
ripgrep
|
||
|
# Browsers
|
||
|
brave
|
||
|
firefox
|
||
|
google-chrome
|
||
|
# colored output in terminal
|
||
|
grc
|
||
|
# Fonts
|
||
|
fira-code
|
||
|
fira
|
||
|
cooper-hewitt
|
||
|
ibm-plex
|
||
|
jetbrains-mono
|
||
|
iosevka
|
||
|
spleen
|
||
|
fira-code-symbols
|
||
|
powerline-fonts
|
||
|
nerdfonts
|
||
|
];
|
||
|
|
||
|
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||
|
# plain files is through 'home.file'.
|
||
|
home.file = {
|
||
|
#".config/nvim".source =
|
||
|
# "${config.home.homeDirectory}/Documents/dots-fresh/home_dir/.config/nvim";
|
||
|
".local/share/rofi/themes/catppuccin-mocha.rasi".source =
|
||
|
"${config.home.homeDirectory}/Documents/dots-fresh/home_dir/.local/share/rofi/themes/catppuccin-mocha.rasi";
|
||
|
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
||
|
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
||
|
# # symlink to the Nix store copy.
|
||
|
# ".screenrc".source = dotfiles/screenrc;
|
||
|
|
||
|
# # You can also set the file content immediately.
|
||
|
# ".gradle/gradle.properties".text = ''
|
||
|
# org.gradle.console=verbose
|
||
|
# org.gradle.daemon.idletimeout=3600000
|
||
|
# '';
|
||
|
};
|
||
|
|
||
|
xdg.configFile."xdg-desktop-portal/sway-portals.conf".text = ''
|
||
|
[preferred]
|
||
|
default=gtk
|
||
|
org.freedesktop.impl.portal.Screencast=wlr
|
||
|
org.freedesktop.impl.portal.Screenshot=wlr
|
||
|
'';
|
||
|
|
||
|
home.sessionVariables = { EDITOR = "nvim"; };
|
||
|
|
||
|
# Let Home Manager install and manage itself.
|
||
|
programs.home-manager.enable = true;
|
||
|
nixpkgs.config.allowUnfree = true;
|
||
|
nixpkgs.config.permittedInsecurePackages =
|
||
|
[ "electron-12.2.3" "electron-19.1.9" ]; # Temporal
|
||
|
nixpkgs.config.brave.commandLineArgs =
|
||
|
"--enable-features=UseOzonePlatform --ozone-platform=wayland";
|
||
|
|
||
|
services.gammastep = {
|
||
|
enable = true;
|
||
|
provider = "manual";
|
||
|
latitude = 46.0569;
|
||
|
longitude = 14.5058;
|
||
|
tray = true;
|
||
|
temperature.night = 4500;
|
||
|
};
|
||
|
|
||
|
programs.vscode = {
|
||
|
enable = true;
|
||
|
extensions = with pkgs.vscode-extensions; [
|
||
|
dracula-theme.theme-dracula
|
||
|
vscodevim.vim
|
||
|
yzhang.markdown-all-in-one
|
||
|
github.copilot
|
||
|
];
|
||
|
};
|
||
|
|
||
|
programs.fzf = {
|
||
|
enable = true;
|
||
|
enableZshIntegration = true;
|
||
|
};
|
||
|
|
||
|
programs.zsh = {
|
||
|
enable = true;
|
||
|
shellAliases = {
|
||
|
md-notes = "cd ~/Documents/md-notes/ && nvim .";
|
||
|
randwall = "feh --bg-scale --randomize ~/pictures/wallpapers/*";
|
||
|
zapiski = "~/Documents/faks_git/FRI-ZAPISKI";
|
||
|
ctf = "cd ~/Documents/ctf/2022";
|
||
|
faks = "cd ~/Documents/faks";
|
||
|
faks-git = "cd ~/Documents/faks_git";
|
||
|
rm = "rm -i";
|
||
|
night = "brightnessctl s 1%";
|
||
|
nightlock = "swaylock -c 000000";
|
||
|
hsrv = "ssh hsrv";
|
||
|
rs = "export QT_QPA_PLATFORM=xcb; rstudio-bin --no-sandbox &";
|
||
|
rot13 = "tr 'A-Za-z' 'N-ZA-Mn-za-m'";
|
||
|
nix-update = "nix-channel --update && nix-env -u";
|
||
|
ls = "lsd";
|
||
|
sus = "systemctl suspend";
|
||
|
sur = "systemctl reboot";
|
||
|
sup = "power off";
|
||
|
hg = "history | grep";
|
||
|
ss = "grc ss";
|
||
|
tree = "eza --tree";
|
||
|
rebuild-os =
|
||
|
"sudo nixos-rebuild switch --flake ${config.home.homeDirectory}/.config/home-manager#yoga --impure";
|
||
|
};
|
||
|
initExtra = ''
|
||
|
export EDITOR='nvim'
|
||
|
|
||
|
bin_txt() {
|
||
|
curl -X PUT --data "$1" https://p.spanskiduh.dev
|
||
|
}
|
||
|
|
||
|
bin_file() {
|
||
|
curl -X PUT --data-binary "@$1" https://p.spanskiduh.dev
|
||
|
}
|
||
|
|
||
|
cleanup-os() {
|
||
|
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
|
||
|
sudo nix-env --delete-generations old --profile /nix/var/nix/profiles/system
|
||
|
sudo nix-collect-garbage -d
|
||
|
sudo nix-store --optimize
|
||
|
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
|
||
|
|
||
|
}
|
||
|
|
||
|
# Gpg tty
|
||
|
GPG_TTY=$(tty)
|
||
|
export GPG_TTY
|
||
|
export FUNCNEST=500
|
||
|
|
||
|
'';
|
||
|
oh-my-zsh = {
|
||
|
enable = true;
|
||
|
theme = "cypher";
|
||
|
plugins = [
|
||
|
"sudo"
|
||
|
"terraform"
|
||
|
"systemadmin"
|
||
|
"vi-mode"
|
||
|
"z"
|
||
|
"colorize"
|
||
|
"compleat"
|
||
|
"ansible"
|
||
|
];
|
||
|
};
|
||
|
|
||
|
plugins = [
|
||
|
{
|
||
|
name = "zsh-autosuggestions";
|
||
|
src = pkgs.fetchFromGitHub {
|
||
|
owner = "zsh-users";
|
||
|
repo = "zsh-autosuggestions";
|
||
|
rev = "v0.4.0";
|
||
|
sha256 = "0z6i9wjjklb4lvr7zjhbphibsyx51psv50gm07mbb0kj9058j6kc";
|
||
|
};
|
||
|
}
|
||
|
{
|
||
|
name = "fzf-tab";
|
||
|
src = pkgs.fetchFromGitHub {
|
||
|
owner = "Aloxaf";
|
||
|
repo = "fzf-tab";
|
||
|
rev = "b06e7574577cd729c629419a62029d31d0565a7a";
|
||
|
sha256 = "sha256-ilUavAIWmLiMh2PumtErMCpOcR71ZMlQkKhVOTDdHZw=";
|
||
|
};
|
||
|
}
|
||
|
{
|
||
|
name = "warhol";
|
||
|
src = pkgs.fetchFromGitHub {
|
||
|
owner = "unixorn";
|
||
|
repo = "warhol.plugin.zsh";
|
||
|
rev = "49a2fb6789179c789f54b95221c91fdc1bd5f804";
|
||
|
sha256 = "sha256-cL7qfgoJseS/epWPyzUy0Ul4GMtyPzYkZ5tsHbRjcRI=";
|
||
|
};
|
||
|
}
|
||
|
];
|
||
|
|
||
|
};
|
||
|
|
||
|
programs.git = {
|
||
|
enable = true;
|
||
|
userName = "Gašper Spagnolo";
|
||
|
userEmail = "gasper.spagnolo@outlook.com";
|
||
|
signing.key = "9EE5C796920C339839F4EFF646DCDBC936F8414C";
|
||
|
signing.signByDefault = true;
|
||
|
|
||
|
aliases = {
|
||
|
ci = "commit";
|
||
|
co = "checkout";
|
||
|
cp = "cherry-pick";
|
||
|
s = "status -uall";
|
||
|
br = "branch";
|
||
|
aliases = "!git config -l | grep alias | cut -c 7-";
|
||
|
hist =
|
||
|
"log --pretty=format:'%C(yellow)%h%Creset%C(auto)%d - %s %Cblue[%an]' --graph --date=short --decorate --branches --remotes --tags";
|
||
|
blobs =
|
||
|
"!git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | sed -n 's/^blob //p' | sort --numeric-sort --key=2 | cut -c 1-12,41- | $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest";
|
||
|
fap = "fetch --all --prune --progress";
|
||
|
l =
|
||
|
"log --graph --pretty='%Cred%h%Creset - %C(bold blue)<%an>%Creset %s%C(yellow)%d%Creset %Cgreen(%cr)' --abbrev-commit --date=relative";
|
||
|
fixup = "commit --fixup";
|
||
|
pr-diff = "diff upstream/HEAD..";
|
||
|
pr-log = "l upstream/HEAD..";
|
||
|
pr-edit =
|
||
|
"rebase --interactive --autosquash --rerere-autoupdate --rebase-merges --fork-point upstream/HEAD";
|
||
|
pr-clean =
|
||
|
"-c sequence.editor=true rebase --interactive --autosquash --rerere-autoupdate --empty drop --no-keep-empty --fork-point upstream/HEAD";
|
||
|
pr-update = "pull --rebase=merges upstream HEAD";
|
||
|
};
|
||
|
|
||
|
extraConfig = {
|
||
|
merge.conflictstyle = "diff3";
|
||
|
push.default = "current";
|
||
|
pull.rebase = true;
|
||
|
init.defaultBranch = "master";
|
||
|
url."git@github.com:".insteadOf = "https://github.com/";
|
||
|
branch.sort = "-committerdate";
|
||
|
tag.sort = "-v:refname";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
programs.tmux = {
|
||
|
enable = true;
|
||
|
clock24 = true;
|
||
|
|
||
|
extraConfig = ''
|
||
|
# Alacritty term support
|
||
|
set -g default-terminal "tmux-256color"
|
||
|
set -sg terminal-overrides ",*:RGB"
|
||
|
|
||
|
# Enable vim keys
|
||
|
set-window-option -g mode-keys vi
|
||
|
bind h select-pane -L
|
||
|
bind j select-pane -D
|
||
|
bind k select-pane -U
|
||
|
bind l select-pane -R
|
||
|
bind -r ^ last-window
|
||
|
|
||
|
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'wl-copy'
|
||
|
|
||
|
# Remap prefix to Control + a
|
||
|
# unbind C-b
|
||
|
# set-option -g prefix C-a
|
||
|
# bind-key C-a send-prefix
|
||
|
|
||
|
# Set mouse
|
||
|
set -g mouse on
|
||
|
|
||
|
# Increase history size
|
||
|
set-option -g history-limit 10000
|
||
|
|
||
|
# Scripts
|
||
|
# bind-key -r S run-shell "tmux neww ~/.local/scripts/ssh-connect.sh"
|
||
|
# bind-key T run-shell "tmux neww tms"
|
||
|
|
||
|
# Colors
|
||
|
set-option -g pane-active-border-style fg='#6272a4'
|
||
|
set-option -g pane-border-style fg='#ff79c6'
|
||
|
# set-option -g status-bg black
|
||
|
set-option -g status-fg black
|
||
|
set -g status-right '#[fg=black,bg=#e95678] #{cpu_percentage} %H:%M '
|
||
|
run-shell ${pkgs.tmuxPlugins.cpu}/share/tmux-plugins/cpu/cpu.tmux
|
||
|
run-shell ${pkgs.tmuxPlugins.tmux-fzf}/share/tmux-plugins/tmux-fzf/main.tmux
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
wayland.windowManager.sway = {
|
||
|
enable = true;
|
||
|
|
||
|
config = {
|
||
|
# Set variables
|
||
|
modifier = "Mod4";
|
||
|
terminal = "${pkgs.alacritty}/bin/alacritty";
|
||
|
|
||
|
# Client styling
|
||
|
colors = {
|
||
|
focused = {
|
||
|
border = "#DA6E89";
|
||
|
background = "#DA6E89";
|
||
|
text = "#FFFFFF";
|
||
|
indicator = "#98C379";
|
||
|
childBorder = "#DA6E89";
|
||
|
};
|
||
|
focusedInactive = {
|
||
|
border = "#61AFEF";
|
||
|
background = "#61AFEF";
|
||
|
text = "#1E222A";
|
||
|
indicator = "#98C379";
|
||
|
childBorder = "#61AFEF";
|
||
|
};
|
||
|
unfocused = {
|
||
|
border = "#2C3038";
|
||
|
background = "#2C3038";
|
||
|
text = "#FFFFFF";
|
||
|
indicator = "#98C379";
|
||
|
childBorder = "#2C3038";
|
||
|
};
|
||
|
urgent = {
|
||
|
border = "#C678DD";
|
||
|
background = "#C678DD";
|
||
|
text = "#FFFFFF";
|
||
|
indicator = "#98C379";
|
||
|
childBorder = "#C678DD";
|
||
|
};
|
||
|
placeholder = {
|
||
|
border = "#1E222A";
|
||
|
background = "#1E222A";
|
||
|
text = "#FFFFFF";
|
||
|
indicator = "#98C379";
|
||
|
childBorder = "#1E222A";
|
||
|
};
|
||
|
background = "#1E222A";
|
||
|
};
|
||
|
|
||
|
floating = {
|
||
|
modifier = "Mod4";
|
||
|
border = 0;
|
||
|
};
|
||
|
|
||
|
window = { border = 0; };
|
||
|
|
||
|
# Keybindings and other configurations
|
||
|
keybindings = {
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Return" =
|
||
|
"exec ${config.wayland.windowManager.sway.config.terminal}";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+q" = "kill";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+d" =
|
||
|
"exec --no-startup-id rofi -show drun";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+n" =
|
||
|
"exec --no-startup-id ~/.config/i3/rofi/bin/network_menu";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+x" =
|
||
|
"exec --no-startup-id ~/.config/i3/rofi/bin/powermenu";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+m" =
|
||
|
"exec --no-startup-id rofi-bluetooth";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+F2" =
|
||
|
"exec --no-startup-id ~/.config/i3/rofi/bin/windows";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+c" =
|
||
|
"reload";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+e" =
|
||
|
"exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+space" =
|
||
|
"floating toggle";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+f" = "fullscreen";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+b" = "splith";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+v" = "splitv";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+s" =
|
||
|
"layout stacking";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+w" =
|
||
|
"layout tabbed";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+e" =
|
||
|
"layout toggle split";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+minus" =
|
||
|
"move scratchpad";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+minus" =
|
||
|
"scratchpad show";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+r" =
|
||
|
"mode 'resize'";
|
||
|
"XF86MonBrightnessUp" = "exec brightnessctl s +5%";
|
||
|
"XF86MonBrightnessDown" = "exec brightnessctl s 5%-";
|
||
|
"XF86AudioRaiseVolume" =
|
||
|
"exec --no-startup-id wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+";
|
||
|
"XF86AudioLowerVolume" =
|
||
|
"exec --no-startup-id wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
|
||
|
"XF86AudioMute" =
|
||
|
"exec --no-startup-id wpctl set-volume @DEFAULT_AUDIO_SINK@ 0";
|
||
|
"XF86AudioMicMute" =
|
||
|
"exec --no-startup-id wpctl set-source-mute @DEFAULT_SOURCE@ toggle";
|
||
|
"Print" = "exec flameshot gui";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+F1" =
|
||
|
"exec swaylock -c 000000";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+b" =
|
||
|
"exec brave --enable-features=UseOzonePlatform --ozone-platform=wayland";
|
||
|
|
||
|
# Movement
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+h" = "focus left";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+j" = "focus down";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+k" = "focus up";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+l" =
|
||
|
"focus right";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Left" =
|
||
|
"focus left";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Down" =
|
||
|
"focus down";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Up" = "focus up";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Right" =
|
||
|
"focus right";
|
||
|
|
||
|
# Workspace management
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+1" =
|
||
|
"workspace number 1";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+2" =
|
||
|
"workspace number 2";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+3" =
|
||
|
"workspace number 3";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+4" =
|
||
|
"workspace number 4";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+5" =
|
||
|
"workspace number 5";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+6" =
|
||
|
"workspace number 6";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+7" =
|
||
|
"workspace number 7";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+8" =
|
||
|
"workspace number 8";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+9" =
|
||
|
"workspace number 9";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+0" =
|
||
|
"workspace number 0";
|
||
|
|
||
|
# Moving containers to workspaces
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+1" =
|
||
|
"move container to workspace number 1";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+2" =
|
||
|
"move container to workspace number 2";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+3" =
|
||
|
"move container to workspace number 3";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+4" =
|
||
|
"move container to workspace number 4";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+5" =
|
||
|
"move container to workspace number 5";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+6" =
|
||
|
"move container to workspace number 6";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+7" =
|
||
|
"move container to workspace number 7";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+8" =
|
||
|
"move container to workspace number 8";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+9" =
|
||
|
"move container to workspace number 9";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+0" =
|
||
|
"move container to workspace number 0";
|
||
|
|
||
|
# Move windows
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+h" =
|
||
|
"move left";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+j" =
|
||
|
"move down";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+k" =
|
||
|
"move up";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+l" =
|
||
|
"move right";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+Left" =
|
||
|
"move left";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+Down" =
|
||
|
"move down";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+Up" =
|
||
|
"move up";
|
||
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+Right" =
|
||
|
"move right";
|
||
|
};
|
||
|
|
||
|
};
|
||
|
|
||
|
extraConfig = ''
|
||
|
for_window [class="^.*"] border pixel 1
|
||
|
for_window [class="feh"] floating enable, border none resize set 1600 1000, move position center
|
||
|
for_window [app_id="flameshot"] border pixel 0, floating enable, fullscreen disable, move absolute position 0 0
|
||
|
|
||
|
output * bg ${config.home.homeDirectory}/Documents/dots-fresh/wallpapers/.wallpapers/pinky.png fill
|
||
|
exec_always --no-startup-id nm-applet
|
||
|
'';
|
||
|
|
||
|
extraOptions = [ "--unsupported-gpu" ];
|
||
|
|
||
|
extraSessionCommands = ''
|
||
|
export SDL_VIDEODRIVER=wayland
|
||
|
export QT_QPA_PLATFORM=wayland
|
||
|
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
|
||
|
export _JAVA_AWT_WM_NONREPARENTING=1
|
||
|
export MOZ_ENABLE_WAYLAND=1
|
||
|
'';
|
||
|
|
||
|
};
|
||
|
|
||
|
services.kanshi = {
|
||
|
enable = true;
|
||
|
|
||
|
profiles = {
|
||
|
profile1 = {
|
||
|
outputs = [
|
||
|
{
|
||
|
criteria = "Dell Inc. DELL P2419HC H565L03";
|
||
|
position = "0,0";
|
||
|
}
|
||
|
{
|
||
|
criteria = "eDP-1";
|
||
|
status = "disable";
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
|
||
|
yoga = {
|
||
|
outputs = [{
|
||
|
criteria = "California Institute of Technology 0x1410 Unknown";
|
||
|
mode = "3072x1920@120Hz";
|
||
|
scale = 1.0;
|
||
|
}];
|
||
|
};
|
||
|
|
||
|
lj_setup = {
|
||
|
outputs = [
|
||
|
{
|
||
|
criteria = "Samsung Electric Company C34H89x H4ZRB05512";
|
||
|
mode = "3440x1440@100Hz";
|
||
|
}
|
||
|
{
|
||
|
criteria = "California Institute of Technology 0x1410 Unknown";
|
||
|
status = "disable";
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
|
||
|
portable_monitor = {
|
||
|
outputs = [
|
||
|
{
|
||
|
criteria = "California Institute of Technology 0x1410 Unknown";
|
||
|
mode = "3072x1920@120Hz";
|
||
|
scale = 1.0;
|
||
|
position = "1128,3130";
|
||
|
}
|
||
|
{
|
||
|
criteria = "Avolites Ltd ARZOPA -S1 0000000000000";
|
||
|
mode = "1920x1080@60Hz";
|
||
|
position = "1690,2050";
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
|
||
|
portable_monitor_2 = {
|
||
|
outputs = [
|
||
|
{
|
||
|
criteria = "AU Optronics 0x313D Unknown";
|
||
|
mode = "1920x1080@60Hz";
|
||
|
scale = 1.0;
|
||
|
position = "1920,1080";
|
||
|
}
|
||
|
{
|
||
|
criteria = "Avolites Ltd ARZOPA -S1 0000000000000";
|
||
|
mode = "1920x1080@60Hz";
|
||
|
position = "1920,0";
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
|
||
|
lj_setup_2 = {
|
||
|
outputs = [
|
||
|
{
|
||
|
criteria = "AU Optronics 0x313D Unknown";
|
||
|
status = "disable";
|
||
|
}
|
||
|
{
|
||
|
criteria = "Samsung Electric Company C34H89x H4ZRB05512";
|
||
|
mode = "3440x1440@60Hz";
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
|
||
|
hs_1 = {
|
||
|
outputs = [
|
||
|
{
|
||
|
criteria = "AU Optronics 0x313D Unknown";
|
||
|
#mode = "1920x1080@60Hz";
|
||
|
#scale = 1.0;
|
||
|
#position = "0,1080";
|
||
|
status = "disable";
|
||
|
}
|
||
|
{
|
||
|
criteria = "Samsung Electric Company S24D330 0x00005B31";
|
||
|
mode = "1920x1080@60Hz";
|
||
|
position = "0,0";
|
||
|
}
|
||
|
];
|
||
|
|
||
|
};
|
||
|
|
||
|
hs_22 = {
|
||
|
outputs = [
|
||
|
{
|
||
|
criteria =
|
||
|
"Philips Consumer Electronics Company PHL27M1N3200Z UK02329015881";
|
||
|
mode = "1920x1080@144";
|
||
|
}
|
||
|
{
|
||
|
criteria = "California Institute of Technology 0x1410 Unknown";
|
||
|
status = "disable";
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
|
||
|
profile7 = {
|
||
|
outputs = [{
|
||
|
criteria = "AU Optronics 0x313D Unknown";
|
||
|
mode = "1920x1080@60Hz";
|
||
|
scale = 1.0;
|
||
|
}];
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
services.mako = {
|
||
|
enable = true;
|
||
|
defaultTimeout = 10000;
|
||
|
font = "Iosevka 14";
|
||
|
backgroundColor = "#191818";
|
||
|
textColor = "#d2d2d2";
|
||
|
borderColor = "#474343";
|
||
|
borderRadius = 6;
|
||
|
height = 700;
|
||
|
width = 400;
|
||
|
format = ''
|
||
|
<b>%s</b>
|
||
|
%b'';
|
||
|
};
|
||
|
|
||
|
gtk = {
|
||
|
gtk2 = {
|
||
|
extraConfig = {
|
||
|
"gtk-application-prefer-dark-theme" = true;
|
||
|
"gtk-button-images" = true;
|
||
|
"gtk-cursor-theme-name" = "breeze_cursors";
|
||
|
"gtk-cursor-theme-size" = 24;
|
||
|
"gtk-decoration-layout" = "icon:minimize,maximize,close";
|
||
|
"gtk-enable-animations" = true;
|
||
|
"gtk-font-name" = "Noto Sans, 10";
|
||
|
"gtk-icon-theme-name" = "breeze-dark";
|
||
|
"gtk-menu-images" = true;
|
||
|
"gtk-modules" = "colorreload-gtk-module";
|
||
|
"gtk-primary-button-warps-slider" = false;
|
||
|
"gtk-theme-name" = "Matcha-dark-azul";
|
||
|
"gtk-toolbar-style" = 3;
|
||
|
"gtk-xft-dpi" = 147456;
|
||
|
};
|
||
|
};
|
||
|
gtk3 = {
|
||
|
extraConfig = {
|
||
|
"gtk-application-prefer-dark-theme" = true;
|
||
|
"gtk-button-images" = true;
|
||
|
"gtk-cursor-theme-name" = "breeze_cursors";
|
||
|
"gtk-cursor-theme-size" = 24;
|
||
|
"gtk-decoration-layout" = "icon:minimize,maximize,close";
|
||
|
"gtk-enable-animations" = true;
|
||
|
"gtk-font-name" = "Noto Sans, 10";
|
||
|
"gtk-icon-theme-name" = "breeze-dark";
|
||
|
"gtk-menu-images" = true;
|
||
|
"gtk-modules" = "colorreload-gtk-module";
|
||
|
"gtk-primary-button-warps-slider" = false;
|
||
|
"gtk-theme-name" = "Matcha-dark-azul";
|
||
|
"gtk-toolbar-style" = 3;
|
||
|
"gtk-xft-dpi" = 147456;
|
||
|
};
|
||
|
};
|
||
|
gtk4 = {
|
||
|
extraConfig = {
|
||
|
"gtk-application-prefer-dark-theme" = true;
|
||
|
"gtk-button-images" = true;
|
||
|
"gtk-cursor-theme-name" = "breeze_cursors";
|
||
|
"gtk-cursor-theme-size" = 24;
|
||
|
"gtk-decoration-layout" = "icon:minimize,maximize,close";
|
||
|
"gtk-enable-animations" = true;
|
||
|
"gtk-font-name" = "Noto Sans, 10";
|
||
|
"gtk-icon-theme-name" = "breeze-dark";
|
||
|
"gtk-menu-images" = true;
|
||
|
"gtk-modules" = "colorreload-gtk-module";
|
||
|
"gtk-primary-button-warps-slider" = false;
|
||
|
"gtk-theme-name" = "Matcha-dark-azul";
|
||
|
"gtk-toolbar-style" = 3;
|
||
|
"gtk-xft-dpi" = 147456;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
programs.rofi = {
|
||
|
enable = true;
|
||
|
location = "center";
|
||
|
terminal = "alacritty";
|
||
|
|
||
|
theme = let inherit (config.lib.formats.rasi) mkLiteral;
|
||
|
in {
|
||
|
" @import" = "catppuccin-mocha";
|
||
|
# Additional theme configurations go here.
|
||
|
};
|
||
|
|
||
|
extraConfig = {
|
||
|
modi = "run,drun,window";
|
||
|
disable-history = true;
|
||
|
display-drun = " Apps ";
|
||
|
display-run = " Run ";
|
||
|
display-window = " Window";
|
||
|
display-network = " Network";
|
||
|
drun-display-format = "{icon} {name}";
|
||
|
hide-scrollbar = true;
|
||
|
icon-theme = "Oranchelo";
|
||
|
show-icons = true;
|
||
|
sidebar-mode = true;
|
||
|
# Additional configurations go here.
|
||
|
};
|
||
|
};
|
||
|
|
||
|
programs.zathura = {
|
||
|
enable = true;
|
||
|
|
||
|
options = {
|
||
|
font = "Iosevka 16px";
|
||
|
|
||
|
inputbar-fg = "#161616";
|
||
|
inputbar-bg = "#909737";
|
||
|
|
||
|
statusbar-fg = "#161616";
|
||
|
statusbar-bg = "#909737";
|
||
|
|
||
|
completion-fg = "#161616";
|
||
|
completion-bg = "#909737";
|
||
|
|
||
|
completion-highlight-fg = "#909737";
|
||
|
completion-highlight-bg = "#161616";
|
||
|
|
||
|
recolor-lightcolor = "#161616";
|
||
|
recolor-darkcolor = "#ffffff";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
programs.neovim = {
|
||
|
enable = true;
|
||
|
viAlias = true;
|
||
|
vimAlias = true;
|
||
|
vimdiffAlias = true;
|
||
|
withNodeJs = false;
|
||
|
withRuby = false;
|
||
|
withPython3 = false;
|
||
|
defaultEditor = true;
|
||
|
coc.enable = false;
|
||
|
|
||
|
extraPackages = with pkgs; [
|
||
|
# for compiling Treesitter parsers
|
||
|
gcc
|
||
|
|
||
|
# debuggers
|
||
|
lldb # comes with lldb-vscode
|
||
|
|
||
|
# formatters and linters
|
||
|
nixfmt
|
||
|
rustfmt
|
||
|
shfmt
|
||
|
stylua
|
||
|
codespell
|
||
|
statix
|
||
|
luajitPackages.luacheck
|
||
|
prettierd
|
||
|
|
||
|
# LSP servers
|
||
|
nil
|
||
|
rust-analyzer
|
||
|
taplo
|
||
|
gopls
|
||
|
lua
|
||
|
shellcheck
|
||
|
marksman
|
||
|
sumneko-lua-language-server
|
||
|
yaml-language-server
|
||
|
|
||
|
# this includes css-lsp, html-lsp, json-lsp, eslint-lsp
|
||
|
nodePackages_latest.vscode-langservers-extracted
|
||
|
|
||
|
# other utils and plugin dependencies
|
||
|
src-cli
|
||
|
ripgrep
|
||
|
fd
|
||
|
catimg
|
||
|
sqlite
|
||
|
lemmy-help
|
||
|
luajitPackages.jsregexp
|
||
|
fzf
|
||
|
cargo
|
||
|
clippy
|
||
|
glow
|
||
|
];
|
||
|
};
|
||
|
|
||
|
#programs.alacritty = {
|
||
|
# enable = true;
|
||
|
|
||
|
# settings = {
|
||
|
# window = {
|
||
|
# opacity = 1.0;
|
||
|
# padding = {
|
||
|
# x = 5;
|
||
|
# y = 5;
|
||
|
# };
|
||
|
# };
|
||
|
|
||
|
# font = {
|
||
|
# normal = {
|
||
|
# family = "Iosevka";
|
||
|
# style = "Regular";
|
||
|
# };
|
||
|
# size = 12;
|
||
|
# };
|
||
|
|
||
|
# liveConfigReload = true;
|
||
|
# dynamicPadding = true;
|
||
|
|
||
|
# colors = {
|
||
|
# primary = {
|
||
|
# background = "#24273A";
|
||
|
# foreground = "#CAD3F5";
|
||
|
# dim_foreground = "#CAD3F5";
|
||
|
# bright_foreground = "#CAD3F5";
|
||
|
# };
|
||
|
|
||
|
# cursor = {
|
||
|
# text = "#24273A";
|
||
|
# cursor = "#F4DBD6";
|
||
|
# };
|
||
|
|
||
|
# vi_mode_cursor = {
|
||
|
# text = "#24273A";
|
||
|
# cursor = "#B7BDF8";
|
||
|
# };
|
||
|
|
||
|
# search = {
|
||
|
# matches = {
|
||
|
# foreground = "#24273A";
|
||
|
# background = "#A5ADCB";
|
||
|
# };
|
||
|
# focused_match = {
|
||
|
# foreground = "#24273A";
|
||
|
# background = "#A6DA95";
|
||
|
# };
|
||
|
# footer_bar = {
|
||
|
# foreground = "#24273A";
|
||
|
# background = "#A5ADCB";
|
||
|
# };
|
||
|
# };
|
||
|
|
||
|
# hints = {
|
||
|
# start = {
|
||
|
# foreground = "#24273A";
|
||
|
# background = "#EED49F";
|
||
|
# };
|
||
|
# end = {
|
||
|
# foreground = "#24273A";
|
||
|
# background = "#A5ADCB";
|
||
|
# };
|
||
|
# };
|
||
|
|
||
|
# selection = {
|
||
|
# text = "#24273A";
|
||
|
# background = "#F4DBD6";
|
||
|
# };
|
||
|
|
||
|
# normal = {
|
||
|
# black = "#494D64";
|
||
|
# red = "#ED8796";
|
||
|
# green = "#A6DA95";
|
||
|
# yellow = "#EED49F";
|
||
|
# blue = "#8AADF4";
|
||
|
# magenta = "#F5BDE6";
|
||
|
# cyan = "#8BD5CA";
|
||
|
# white = "#B8C0E0";
|
||
|
# };
|
||
|
|
||
|
# bright = {
|
||
|
# black = "#5B6078";
|
||
|
# red = "#ED8796";
|
||
|
# green = "#A6DA95";
|
||
|
# yellow = "#EED49F";
|
||
|
# blue = "#8AADF4";
|
||
|
# magenta = "#F5BDE6";
|
||
|
# cyan = "#8BD5CA";
|
||
|
# white = "#A5ADCB";
|
||
|
# };
|
||
|
|
||
|
# dim = {
|
||
|
# black = "#494D64";
|
||
|
# red = "#ED8796";
|
||
|
# green = "#A6DA95";
|
||
|
# yellow = "#EED49F";
|
||
|
# blue = "#8AADF4";
|
||
|
# magenta = "#F5BDE6";
|
||
|
# cyan = "#8BD5CA";
|
||
|
# white = "#B8C0E0";
|
||
|
# };
|
||
|
|
||
|
# indexed_colors = [
|
||
|
# {
|
||
|
# index = 16;
|
||
|
# color = "#F5A97F";
|
||
|
# }
|
||
|
# {
|
||
|
# index = 17;
|
||
|
# color = "#F4DBD6";
|
||
|
# }
|
||
|
# ];
|
||
|
# };
|
||
|
# };
|
||
|
#};
|
||
|
|
||
|
programs.alacritty = {
|
||
|
enable = true;
|
||
|
|
||
|
settings = {
|
||
|
window = {
|
||
|
opacity = 1.0;
|
||
|
padding = {
|
||
|
x = 5;
|
||
|
y = 5;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
font = {
|
||
|
normal = {
|
||
|
family = "Iosevka";
|
||
|
style = "Regular";
|
||
|
};
|
||
|
size = 12;
|
||
|
};
|
||
|
|
||
|
liveConfigReload = true;
|
||
|
dynamicPadding = true;
|
||
|
|
||
|
colors = {
|
||
|
primary = {
|
||
|
background = "#1c1e26";
|
||
|
foreground = "#e0e0e0";
|
||
|
dim_foreground = "#e0e0e0";
|
||
|
bright_foreground = "#e0e0e0";
|
||
|
};
|
||
|
|
||
|
cursor = {
|
||
|
text = "#1c1e26";
|
||
|
cursor = "#e95678";
|
||
|
};
|
||
|
|
||
|
vi_mode_cursor = {
|
||
|
text = "#1c1e26";
|
||
|
cursor = "#26bbd9"; # Using Horizon Dark blue for visual distinction
|
||
|
};
|
||
|
|
||
|
search = {
|
||
|
matches = {
|
||
|
foreground = "#1c1e26";
|
||
|
background = "#fab795"; # Horizon Dark yellow for contrast
|
||
|
};
|
||
|
focused_match = {
|
||
|
foreground = "#1c1e26";
|
||
|
background = "#29d398"; # Horizon Dark green for visibility
|
||
|
};
|
||
|
footer_bar = {
|
||
|
foreground = "#1c1e26";
|
||
|
background = "#fab795"; # Horizon Dark yellow for consistency
|
||
|
};
|
||
|
};
|
||
|
|
||
|
hints = {
|
||
|
start = {
|
||
|
foreground = "#1c1e26";
|
||
|
background = "#ee64ac"; # Horizon Dark magenta for visibility
|
||
|
};
|
||
|
end = {
|
||
|
foreground = "#1c1e26";
|
||
|
background = "#26bbd9"; # Horizon Dark blue for consistency
|
||
|
};
|
||
|
};
|
||
|
|
||
|
selection = {
|
||
|
text = "#1c1e26";
|
||
|
background = "#e95678"; # Horizon Dark red for visibility
|
||
|
};
|
||
|
|
||
|
normal = {
|
||
|
black = "#16161c";
|
||
|
red = "#e95678";
|
||
|
green = "#29d398";
|
||
|
yellow = "#fab795";
|
||
|
blue = "#26bbd9";
|
||
|
magenta = "#ee64ac";
|
||
|
cyan = "#59e1e3";
|
||
|
white = "#d5d8da";
|
||
|
};
|
||
|
|
||
|
bright = {
|
||
|
black = "#5b5858";
|
||
|
red = "#ec6a88";
|
||
|
green = "#3fdaa4";
|
||
|
yellow = "#fbc3a7";
|
||
|
blue = "#3fc4de";
|
||
|
magenta = "#f075b5";
|
||
|
cyan = "#6be4e6";
|
||
|
white = "#d5d8da";
|
||
|
};
|
||
|
|
||
|
dim = {
|
||
|
black = "#16161c";
|
||
|
red = "#e95678";
|
||
|
green = "#29d398";
|
||
|
yellow = "#fab795";
|
||
|
blue = "#26bbd9";
|
||
|
magenta = "#ee64ac";
|
||
|
cyan = "#59e1e3";
|
||
|
white = "#d5d8da";
|
||
|
};
|
||
|
|
||
|
indexed_colors = [
|
||
|
{
|
||
|
index = 16;
|
||
|
color = "#f5a97f";
|
||
|
}
|
||
|
{
|
||
|
index = 17;
|
||
|
color = "#f4dbd6";
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
|
||
|
};
|
||
|
};
|
||
|
|
||
|
}
|