Compare commits

..

No commits in common. "6b04ee02590183065832ffa92afd8f1d0e8a5b16" and "d6342c26b8f54490312ebc602b9317561ea303bc" have entirely different histories.

20 changed files with 455 additions and 406 deletions

View file

@ -37,6 +37,7 @@
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
lib = nixpkgs.lib;
in {

View file

@ -11,4 +11,5 @@
};
efi.canTouchEfiVariables = lib.mkDefault true;
};
boot.kernelPackages = pkgs.linuxPackages_latest;
}

View file

@ -9,6 +9,7 @@
imports =
[(import ./bootloader.nix)]
++ [(import ./hardware.nix)]
++ [(import ./xserver.nix)]
++ [(import ./nix.nix)]
++ [(import ./network.nix)]
++ [(import ./pipewire.nix)]

View file

@ -1,15 +1,5 @@
{
username,
lib,
...
}: {
{username, ...}: {
nix.settings = {
trusted-users = ["${username}"];
};
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [
"steam"
"steam-unwrapped"
];
}

View file

@ -1,8 +1,9 @@
{pkgs, ...}: {
{...}: {
services = {
gvfs.enable = true;
gnome.gnome-keyring.enable = true;
dbus.enable = true;
fstrim.enable = true;
flatpak.enable = true;
printing.enable = true;
blueman.enable = true;
@ -12,6 +13,8 @@
openFirewall = true;
};
};
environment.systemPackages = [pkgs.libsecret];
services.logind.extraConfig = ''
# dont shutdown when power button is short-pressed
HandlePowerKey=ignore
'';
}

View file

@ -5,10 +5,13 @@
inputs,
...
}: {
# imports = [ inputs.nix-gaming.nixosModules.default ];
nix = {
settings = {
auto-optimise-store = true;
experimental-features = ["nix-command" "flakes"];
substituters = ["https://nix-gaming.cachix.org"];
trusted-public-keys = ["nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="];
};
gc = {
automatic = true;
@ -16,15 +19,27 @@
options = "--delete-older-than 7d";
};
};
nixpkgs = {
overlays = [
inputs.nur.overlays.default
];
};
environment.systemPackages = with pkgs; [
wget
curl
git
ddcutil
];
# For ddcutil brightness control
boot.kernelModules = ["i2c-dev"];
services.udev.extraRules = ''
KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660"
'';
time.timeZone = "Europe/Madrid";
console.keyMap = "es";
i18n.defaultLocale = "en_US.UTF-8";
nixpkgs.config.allowUnfree = true;
system.stateVersion = "24.05";
}

View file

@ -39,7 +39,6 @@
command = "uwsm start hyprland-uwsm.desktop";
user = "${username}";
};
security.pam.services.greetd.enableGnomeKeyring = true;
environment.sessionVariables.XKB_DEFAULT_LAYOUT = "es";
}

27
modules/core/xserver.nix Normal file
View file

@ -0,0 +1,27 @@
{
pkgs,
username,
...
}: {
services = {
xserver = {
enable = true;
xkb.layout = "es,us";
};
displayManager.autoLogin = {
enable = true;
user = "${username}";
};
libinput = {
enable = true;
# mouse = {
# accelProfile = "flat";
# };
};
};
# To prevent getting stuck at shutdown
systemd.extraConfig = "DefaultTimeoutStopSec=10s";
environment.systemPackages = [pkgs.xorg.xhost]; # GParted (and others) won't start if not installed
}

View file

@ -11,8 +11,7 @@
++ [(import ./cava.nix)] # audio visualizer
++ [(import ./cliphist.nix)] # clipboard
++ [(import ./direnv.nix)]
++ [(import ./discord.nix)]
++ [(import ./distrobox.nix)]
++ [(import ./discord.nix)] # discord with catppuccin theme
++ [(import ./gpg.nix)] # GnuPG and its agent (gpg-agent)
++ [(import ./fuzzel.nix)] # launcher
++ [(import ./gaming.nix)] # packages related to gaming
@ -22,7 +21,6 @@
++ [(import ./kdeconnect.nix)]
++ [(import ./kitty.nix)] # terminal
++ [(import ./swaync)] # notification deamon
++ [(import ./matrix.nix)] # Matrix clients
++ [(import ./nemo.nix)] # File manager
++ [(import ./nextcloud.nix)] # nextcloud client
++ [(import ./nvim.nix)] # neovim editor

View file

@ -1,28 +0,0 @@
{pkgs, ...}: {
programs.distrobox = {
enable = true;
enableSystemdUnit = true;
containers = {
debian13 = {
image = "debian:13";
entry = false;
additional_packages = "git";
init_hooks = [
"ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker"
"ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker-compose"
];
};
kali = {
image = "docker.io/kalilinux/kali-rolling:latest";
entry = false;
init_hooks = [
"ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker"
"ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker-compose"
];
};
};
};
home.packages = with pkgs; [boxbuddy];
}

View file

@ -24,12 +24,17 @@
vitetris
nethack
## Celeste
celeste-classic
celeste-classic-pm
## Doom
# gzdoom
crispy-doom
## Emulation
sameboy
snes9x
cemu
dolphin-emu
ryujinx

View file

@ -4,6 +4,14 @@
...
}: {
fonts.fontconfig.enable = true;
home.packages = with pkgs; [
nerd-fonts.jetbrains-mono
nerd-fonts.noto
twemoji-color-font
noto-fonts-emoji
roboto
];
gtk = {
enable = true;

View file

@ -0,0 +1,298 @@
{pkgs, ...}: {
wayland.windowManager.hyprland = {
settings = {
# autostart
exec-once = [
"uwsm app -- nm-applet"
"uwsm app -- wl-clip-persist --clipboard regular"
"uwsm app -- bash -c 'if [ ! -f ~/.config/hypr/wallpaper.png ]; then wall-change ~/.config/hypr/default_wallpaper.png; fi'"
"uwsm app -- swaybg -m fill -i ~/.config/hypr/wallpaper.png &"
"uwsm app -- poweralertd"
"uwsm app -- waybar"
"uwsm app -- swaync"
"uwsm app -- ckb-next -b"
"uwsm app -- element-desktop --hidden"
];
input = {
kb_layout = "es,us";
kb_options = "grp:alt_caps_toggle";
numlock_by_default = true;
follow_mouse = 1;
sensitivity = 0;
touchpad = {
natural_scroll = true;
};
};
general = {
"$mainMod" = "SUPER";
layout = "dwindle";
gaps_in = 0;
gaps_out = 0;
border_size = 2;
# "col.active_border" = "rgb(cba6f7) rgb(94e2d5) 45deg";
# "col.inactive_border" = "0x00000000";
# border_part_of_window = false;
no_border_on_floating = false;
};
misc = {
disable_autoreload = true;
disable_hyprland_logo = true;
always_follow_on_dnd = true;
layers_hog_keyboard_focus = true;
animate_manual_resizes = false;
enable_swallow = true;
focus_on_activate = true;
};
dwindle = {
force_split = 0;
special_scale_factor = 1.0;
split_width_multiplier = 1.0;
use_active_for_splits = true;
pseudotile = "yes";
preserve_split = "yes";
};
master = {
new_status = "master";
special_scale_factor = 1;
};
decoration = {
rounding = 0;
# active_opacity = 0.90;
# inactive_opacity = 0.90;
# fullscreen_opacity = 1.0;
blur = {
enabled = true;
size = 1;
passes = 1;
# size = 4;
# passes = 2;
brightness = 1;
contrast = 1.400;
ignore_opacity = true;
noise = 0;
new_optimizations = true;
xray = false;
};
shadow = {
enabled = true;
ignore_window = true;
offset = "0 2";
range = 20;
render_power = 3;
# color = "rgba(00000055)";
};
};
animations = {
enabled = true;
bezier = [
"fluent_decel, 0, 0.2, 0.4, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutCubic, 0.33, 1, 0.68, 1"
"easeinoutsine, 0.37, 0, 0.63, 1"
];
animation = [
# Windows
"windowsIn, 1, 3, easeOutCubic, popin 30%" # window open
"windowsOut, 1, 3, fluent_decel, popin 70%" # window close.
"windowsMove, 1, 2, easeinoutsine, slide" # everything in between, moving, dragging, resizing.
# Fade
"fadeIn, 1, 3, easeOutCubic" # fade in (open) -> layers and windows
"fadeOut, 1, 2, easeOutCubic" # fade out (close) -> layers and windows
"fadeSwitch, 0, 1, easeOutCirc" # fade on changing activewindow and its opacity
"fadeShadow, 1, 10, easeOutCirc" # fade on changing activewindow for shadows
"fadeDim, 1, 4, fluent_decel" # the easing of the dimming of inactive windows
"border, 1, 2.7, easeOutCirc" # for animating the border's color switch speed
"borderangle, 1, 30, fluent_decel, once" # for animating the border's gradient angle - styles: once (default), loop
"workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert
];
};
bind =
[
# show keybinds list
"$mainMod, F1, exec, show-keybinds"
# keybindings
"$mainMod, Return, exec, uwsm app -- kitty"
"ALT, Return, exec, uwsm app -- kitty --title float_kitty"
"$mainMod SHIFT, Return, exec, uwsm app -- kitty --start-as=fullscreen -o 'font_size=16'"
"$mainMod, B, exec, uwsm app -- librewolf"
"$mainMod, N, exec, uwsm app -- swaync-client -t"
"$mainMod SHIFT, N, exec, uwsm app -- swaync-client -d"
"$mainMod SHIFT, Q, killactive,"
"$mainMod, F, fullscreen, 0"
"$mainMod SHIFT, F, fullscreen, 1"
"$mainMod, Space, togglefloating,"
"$mainMod, D, exec, uwsm app -- fuzzel"
"$mainMod SHIFT, E, exec, uwsm app -- bemoji -n"
"$mainMod, M, exec, uwsm app -- element-desktop"
"$mainMod, Y, exec, uwsm app -- kitty spotify_player"
"$mainMod, X, exec, uwsm app -- rofi-rbw"
"$mainMod, Escape, exec, uwsm app -- loginctl lock-session"
"$mainMod SHIFT, Escape, exec, uwsm app -- shutdown-script"
"$mainMod, P, pseudo,"
"$mainMod SHIFT, P, togglesplit,"
"$mainMod, E, exec, uwsm app -- nemo"
"$mainMod SHIFT, B, exec, uwsm app -- pkill -SIGUSR1 .waybar-wrapped"
"$mainMod, C ,exec, uwsm app -- hyprpicker -a"
"$mainMod, W,exec, uwsm app -- wallpaper-picker"
# screenshot
"$mainMod, Print, exec, uwsm app -- screenshot-menu"
",Print, exec, uwsm app -- grimblast --notify --freeze copy area"
]
++ (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
builtins.concatLists (
builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
"$mainMod, ${ws}, workspace, ${toString (x + 1)}"
"$mainMod SHIFT, ${ws}, movetoworkspacesilent, ${toString (x + 1)}"
]
)
10
)
)
++ [
"$mainMod CTRL, c, workspace, emptynm"
"$mainMod SHIFT, c, movetoworkspace, emptynm"
]
++ (
# Window focus, movement and control
builtins.concatLists (
let
keys = ["H" "L" "K" "J"];
directions = ["l" "r" "u" "d"];
resize = toString 80; # Change this to change how much a window resizes each keypress
resize_list = ["-${resize} 0" "${resize} 0" "0 -${resize}" "0 ${resize}"];
in
builtins.genList (
x: let
k = builtins.elemAt keys x;
d = builtins.elemAt directions x;
r = builtins.elemAt resize_list x;
in [
"$mainMod, ${k}, movefocus, ${d}"
"$mainMod SHIFT, ${k}, movewindow, ${d}"
"$mainMod CTRL, ${k}, resizeactive, ${r}"
"$mainMod ALT, ${k}, moveactive, ${r}"
]
)
4
)
)
++ [
"$mainMod, mouse_down, workspace, e-1"
"$mainMod, mouse_up, workspace, e+1"
# laptop brigthness
",XF86MonBrightnessUp, exec, brightnessctl set 5%+"
",XF86MonBrightnessDown, exec, brightnessctl set 5%-"
"$mainMod, XF86MonBrightnessUp, exec, brightnessctl set 100%+"
"$mainMod, XF86MonBrightnessDown, exec, brightnessctl set 100%-"
# clipboard manager
"$mainMod, V, exec, cliphist list | fuzzel --dmenu --prompt '📋 ' | cliphist decode | wl-copy"
];
# Bindings that work when locked
bindl = [
# media and volume controls
",XF86AudioRaiseVolume,exec, pamixer -i 2"
",XF86AudioLowerVolume,exec, pamixer -d 2"
",XF86AudioMute,exec, pamixer -t"
",XF86AudioPlay,exec, playerctl play-pause"
",XF86AudioNext,exec, playerctl next"
",XF86AudioPrev,exec, playerctl previous"
",XF86AudioStop, exec, playerctl stop"
];
# mouse binding
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
# windowrule
windowrule = [
"float,class:vimiv"
"center,class:vimiv"
"float,class:mpv"
"center,class:mpv"
"size 1200 725,class:mpv"
"float,title:^(float_kitty)$"
"center,title:^(float_kitty)$"
"size 950 600,title:^(float_kitty)$"
"tile, class:neovide"
"idleinhibit focus,class:mpv"
"float,class:udiskie"
"float,title:^(Volume Control)$"
"float,title:^(Firefox Sharing Indicator)$"
"move 0 0,title:^(Firefox Sharing Indicator)$"
"size 700 450,title:^(Volume Control)$"
"move 40 55%,title:^(Volume Control)$"
"float, title:^(Picture-in-Picture)$"
"opacity 1.0 override 1.0 override, title:^(Picture-in-Picture)$"
"pin, title:^(Picture-in-Picture)$"
"opacity 1.0 override 1.0 override, class:(Aseprite)"
"opacity 1.0 override 1.0 override, class:(Unity)"
"idleinhibit focus, class:^(mpv)$"
"idleinhibit fullscreen, class:^(firefox)$"
"float,class:^(zenity)$"
"center,class:^(zenity)$"
"size 850 500,class:^(zenity)$"
"float,class:^(pavucontrol)$"
"float,class:^(.sameboy-wrapped)$"
"float,class:^(file_progress)$"
"float,class:^(confirm)$"
"float,class:^(dialog)$"
"float,class:^(download)$"
"float,class:^(notification)$"
"float,class:^(error)$"
"float,class:^(confirmreset)$"
"float,title:^(Open File)$"
"float,title:^(branchdialog)$"
"float,title:^(Confirm to replace files)$"
"float,title:^(File Operation Progress)$"
"opacity 0.0 override,class:^(xwaylandvideobridge)$"
"noanim,class:^(xwaylandvideobridge)$"
"noinitialfocus,class:^(xwaylandvideobridge)$"
"maxsize 1 1,class:^(xwaylandvideobridge)$"
"noblur,class:^(xwaylandvideobridge)$"
];
monitor = [
",preferred,auto,1"
];
xwayland = {
force_zero_scaling = true;
};
gestures = {
workspace_swipe = true;
workspace_swipe_direction_lock = false;
};
};
};
}

View file

@ -1,6 +1,7 @@
{...}: {
imports =
[(import ./hyprland.nix)]
++ [(import ./config.nix)]
++ [(import ./hyprlock.nix)]
++ [(import ./hypridle.nix)]
++ [(import ./variables.nix)];

View file

@ -4,6 +4,7 @@
...
}: {
home.packages = with pkgs; [
# swww
swaybg
inputs.hypr-contrib.packages.${pkgs.system}.grimblast
hyprpicker
@ -14,9 +15,7 @@
glib
wayland
];
services.hyprpolkitagent.enable = true;
systemd.user.targets.hyprland-session.Unit.Wants = ["xdg-desktop-autostart.target"];
wayland.windowManager.hyprland = {
enable = true;
xwayland = {
@ -25,306 +24,7 @@
};
# enableNvidiaPatches = false;
systemd.enable = false;
settings = let
app_menu = "${pkgs.fuzzel}/bin/fuzzel";
in {
# autostart
exec-once = [
"uwsm app -- nm-applet"
"uwsm app -- wl-clip-persist --clipboard regular"
"uwsm app -- bash -c 'if [ ! -f ~/.config/hypr/wallpaper.png ]; then wall-change ~/.config/hypr/default_wallpaper.png; fi'"
"uwsm app -- swaybg -m fill -i ~/.config/hypr/wallpaper.png &"
"uwsm app -- ${pkgs.poweralertd}/bin/poweralertd"
"uwsm app -- waybar"
"uwsm app -- swaync"
"uwsm app -- ckb-next -b"
"uwsm app -- element-desktop --hidden"
];
input = {
kb_layout = "es,us";
kb_options = "grp:alt_caps_toggle";
numlock_by_default = true;
follow_mouse = 1;
sensitivity = 0;
touchpad = {
natural_scroll = true;
};
};
general = {
"$mainMod" = "SUPER";
layout = "dwindle";
gaps_in = 0;
gaps_out = 0;
border_size = 2;
# "col.active_border" = "rgb(cba6f7) rgb(94e2d5) 45deg";
# "col.inactive_border" = "0x00000000";
# border_part_of_window = false;
no_border_on_floating = false;
};
misc = {
disable_autoreload = true;
disable_hyprland_logo = true;
always_follow_on_dnd = true;
layers_hog_keyboard_focus = true;
animate_manual_resizes = false;
enable_swallow = true;
focus_on_activate = true;
};
dwindle = {
force_split = 0;
special_scale_factor = 1.0;
split_width_multiplier = 1.0;
use_active_for_splits = true;
pseudotile = "yes";
preserve_split = "yes";
};
master = {
new_status = "master";
special_scale_factor = 1;
};
decoration = {
rounding = 0;
# active_opacity = 0.90;
# inactive_opacity = 0.90;
# fullscreen_opacity = 1.0;
blur = {
enabled = true;
size = 1;
passes = 1;
# size = 4;
# passes = 2;
brightness = 1;
contrast = 1.400;
ignore_opacity = true;
noise = 0;
new_optimizations = true;
xray = false;
};
shadow = {
enabled = true;
ignore_window = true;
offset = "0 2";
range = 20;
render_power = 3;
# color = "rgba(00000055)";
};
};
animations = {
enabled = true;
bezier = [
"fluent_decel, 0, 0.2, 0.4, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutCubic, 0.33, 1, 0.68, 1"
"easeinoutsine, 0.37, 0, 0.63, 1"
];
animation = [
# Windows
"windowsIn, 1, 3, easeOutCubic, popin 30%" # window open
"windowsOut, 1, 3, fluent_decel, popin 70%" # window close.
"windowsMove, 1, 2, easeinoutsine, slide" # everything in between, moving, dragging, resizing.
# Fade
"fadeIn, 1, 3, easeOutCubic" # fade in (open) -> layers and windows
"fadeOut, 1, 2, easeOutCubic" # fade out (close) -> layers and windows
"fadeSwitch, 0, 1, easeOutCirc" # fade on changing activewindow and its opacity
"fadeShadow, 1, 10, easeOutCirc" # fade on changing activewindow for shadows
"fadeDim, 1, 4, fluent_decel" # the easing of the dimming of inactive windows
"border, 1, 2.7, easeOutCirc" # for animating the border's color switch speed
"borderangle, 1, 30, fluent_decel, once" # for animating the border's gradient angle - styles: once (default), loop
"workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert
];
};
bind =
[
# show keybinds list
"$mainMod, F1, exec, show-keybinds"
# keybindings
"$mainMod, Return, exec, uwsm app -- kitty"
"ALT, Return, exec, uwsm app -- kitty --title float_kitty"
"$mainMod SHIFT, Return, exec, uwsm app -- kitty --start-as=fullscreen -o 'font_size=16'"
"$mainMod, B, exec, uwsm app -- librewolf"
"$mainMod, N, exec, uwsm app -- swaync-client -t"
"$mainMod SHIFT, N, exec, uwsm app -- swaync-client -d"
"$mainMod SHIFT, Q, killactive,"
"$mainMod, F, fullscreen, 0"
"$mainMod SHIFT, F, fullscreen, 1"
"$mainMod, Space, togglefloating,"
"$mainMod, D, exec, uwsm app -- ${app_menu}"
"$mainMod SHIFT, E, exec, uwsm app -- bemoji -n"
"$mainMod, M, exec, uwsm app -- element-desktop"
"$mainMod, Y, exec, uwsm app -- kitty spotify_player"
"$mainMod, X, exec, uwsm app -- rofi-rbw"
"$mainMod, Escape, exec, uwsm app -- loginctl lock-session"
"$mainMod SHIFT, Escape, exec, uwsm app -- shutdown-script"
"$mainMod, P, pseudo,"
"$mainMod SHIFT, P, togglesplit,"
"$mainMod, E, exec, uwsm app -- nemo"
"$mainMod SHIFT, B, exec, uwsm app -- pkill -SIGUSR1 .waybar-wrapped"
"$mainMod, C ,exec, uwsm app -- hyprpicker -a"
"$mainMod, W,exec, uwsm app -- wallpaper-picker"
# screenshot
"$mainMod, Print, exec, uwsm app -- screenshot-menu"
",Print, exec, uwsm app -- grimblast --notify --freeze copy area"
]
++ (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
builtins.concatLists (
builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
"$mainMod, ${ws}, workspace, ${toString (x + 1)}"
"$mainMod SHIFT, ${ws}, movetoworkspacesilent, ${toString (x + 1)}"
]
)
10
)
)
++ [
"$mainMod CTRL, c, workspace, emptynm"
"$mainMod SHIFT, c, movetoworkspace, emptynm"
]
++ (
# Window focus, movement and control
builtins.concatLists (
let
keys = ["H" "L" "K" "J"];
directions = ["l" "r" "u" "d"];
resize = toString 80; # Change this to change how much a window resizes each keypress
resize_list = ["-${resize} 0" "${resize} 0" "0 -${resize}" "0 ${resize}"];
in
builtins.genList (
x: let
k = builtins.elemAt keys x;
d = builtins.elemAt directions x;
r = builtins.elemAt resize_list x;
in [
"$mainMod, ${k}, movefocus, ${d}"
"$mainMod SHIFT, ${k}, movewindow, ${d}"
"$mainMod CTRL, ${k}, resizeactive, ${r}"
"$mainMod ALT, ${k}, moveactive, ${r}"
]
)
4
)
)
++ [
"$mainMod, mouse_down, workspace, e-1"
"$mainMod, mouse_up, workspace, e+1"
# laptop brigthness
",XF86MonBrightnessUp, exec, brightnessctl set 5%+"
",XF86MonBrightnessDown, exec, brightnessctl set 5%-"
"$mainMod, XF86MonBrightnessUp, exec, brightnessctl set 100%+"
"$mainMod, XF86MonBrightnessDown, exec, brightnessctl set 100%-"
# clipboard manager
"$mainMod, V, exec, cliphist list | fuzzel --dmenu --prompt '📋 ' | cliphist decode | wl-copy"
];
# Bindings that work when locked
bindl = [
# media and volume controls
",XF86AudioRaiseVolume,exec, pamixer -i 2"
",XF86AudioLowerVolume,exec, pamixer -d 2"
",XF86AudioMute,exec, pamixer -t"
",XF86AudioPlay,exec, playerctl play-pause"
",XF86AudioNext,exec, playerctl next"
",XF86AudioPrev,exec, playerctl previous"
",XF86AudioStop, exec, playerctl stop"
];
# mouse binding
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
# windowrule
windowrule = [
"float,class:vimiv"
"center,class:vimiv"
"float,class:mpv"
"center,class:mpv"
"size 1200 725,class:mpv"
"float,title:^(float_kitty)$"
"center,title:^(float_kitty)$"
"size 950 600,title:^(float_kitty)$"
"tile, class:neovide"
"idleinhibit focus,class:mpv"
"float,class:udiskie"
"float,title:^(Volume Control)$"
"float,title:^(Firefox Sharing Indicator)$"
"move 0 0,title:^(Firefox Sharing Indicator)$"
"size 700 450,title:^(Volume Control)$"
"move 40 55%,title:^(Volume Control)$"
"float, title:^(Picture-in-Picture)$"
"opacity 1.0 override 1.0 override, title:^(Picture-in-Picture)$"
"pin, title:^(Picture-in-Picture)$"
"opacity 1.0 override 1.0 override, class:(Aseprite)"
"opacity 1.0 override 1.0 override, class:(Unity)"
"idleinhibit focus, class:^(mpv)$"
"idleinhibit fullscreen, class:^(firefox)$"
"float,class:^(zenity)$"
"center,class:^(zenity)$"
"size 850 500,class:^(zenity)$"
"float,class:^(pavucontrol)$"
"float,class:^(.sameboy-wrapped)$"
"float,class:^(file_progress)$"
"float,class:^(confirm)$"
"float,class:^(dialog)$"
"float,class:^(download)$"
"float,class:^(notification)$"
"float,class:^(error)$"
"float,class:^(confirmreset)$"
"float,title:^(Open File)$"
"float,title:^(branchdialog)$"
"float,title:^(Confirm to replace files)$"
"float,title:^(File Operation Progress)$"
"opacity 0.0 override,class:^(xwaylandvideobridge)$"
"noanim,class:^(xwaylandvideobridge)$"
"noinitialfocus,class:^(xwaylandvideobridge)$"
"maxsize 1 1,class:^(xwaylandvideobridge)$"
"noblur,class:^(xwaylandvideobridge)$"
];
monitor = [
",preferred,auto,1"
];
xwayland = {
force_zero_scaling = true;
};
gestures = {
workspace_swipe = true;
workspace_swipe_direction_lock = false;
};
ecosystem = {
no_update_news = true;
no_donation_nag = true;
};
};
};
services.hyprpolkitagent.enable = true;
}

View file

@ -1,4 +0,0 @@
{pkgs, ...}: {
programs.element-desktop.enable = true;
home.packages = with pkgs; [fractal];
}

View file

@ -17,62 +17,82 @@
}) ["mp4" "x-matroska" "webm"]);
home.packages = with pkgs; [
# CLI utils
bitwarden-cli
file # Show file information
gtrash # rm replacement, put deleted files in system trash
imagemagick
lazygit # Simple terminal UI for git commands
jq # command-line JSON processor
nitch # neofetch-like util
tdf # cli pdf viewer
todo # cli todo list
yazi # terminal file manager
yt-dlp
wtype # xdotool type for wayland
caligula # TUI for disk imaging
ffmpeg
killall
man-pages # extra man pages
openssl
pamixer # pulseaudio command line mixer
playerctl # controller for media players
wl-clipboard # clipboard utils for wayland (wl-copy, wl-paste)
unzip
wget
usbutils
gotify-cli
#GUI Utils
file-roller # Archive manager
wdisplays # Configuring displays in Wayland compositors
bemoji # emoji picker
pavucontrol # pulseaudio volume controle (GUI)
# GUI Apps
bitwise # cli tool for bit / hex manipulation
bitwarden-cli
distrobox
boxbuddy
evince # gnome pdf viewer
eza # cool ls
element-desktop # Matrix client
fd # find replacement
file # Show file information
file-roller # Archive manager
freetube # YouTube client
thunderbird
vlc
mpv # video player
xournalpp # For notes and pdf editing
qbittorrent # torrent client
speedcrunch # Fast power user calculator
simple-scan
orca-slicer
kdePackages.okular # KDE's pdf viewer/editor (supports digital signing)
inkscape
kdePackages.kleopatra # GPG GUI
fzf # fuzzy finder
gimp
gnome-text-editor
gparted # partition manager
vimiv-qt # Image viewer, vim-like
gtrash # rm replacement, put deleted files in system trash
imagemagick
inkscape
kdePackages.kleopatra # Gpg GUI
lazygit
jq
nitch # systhem fetch util
nix-prefetch-github
kdePackages.okular # KDE's pdf viewer/editor (supports digital signing)
simple-scan
orca-slicer
tdf # cli pdf viewer
speedcrunch
thunderbird
todo # cli todo list
toipe # typing test in the terminal
transmission_4-gtk # torrent client
vlc
xournalpp # For notes and pdf editing
yazi # terminal file manager
yt-dlp
zenity
wdisplays
wireguard-tools
wtype
# Wine stuff
winetricks
wineWowPackages.wayland
bottles
# C / C++
gcc
gnumake
# Python
python3
cmatrix
caligula
gparted # partition manager
ffmpeg
vimiv-qt # Image viewer, vim-like
killall
libnotify
man-pages # extra man pages
mpv # video player
openssl
pamixer # pulseaudio command line mixer
pavucontrol # pulseaudio volume controle (GUI)
playerctl # controller for media players
wl-clipboard # clipboard utils for wayland (wl-copy, wl-paste)
poweralertd
qalculate-gtk # calculator
unzip
wget
xdg-utils
xxd
alejandra
usbutils
# VPN
wireguard-tools
openconnect

View file

@ -5,6 +5,7 @@
fceumm
gambatte
mgba
snes9x
]))
];
}

View file

@ -14,6 +14,8 @@
# python
ms-python.python
ms-python.black-formatter
# C/C++
ms-vscode.cpptools
# OCaml
ocamllabs.ocaml-platform
# CMake

View file

@ -5,26 +5,36 @@
host,
...
}: {
home.packages = with pkgs; [fzf git];
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
oh-my-zsh = {
enable = true;
plugins = ["git" "fzf"];
};
shellAliases = {
# record = "wf-recorder --audio=alsa_output.pci-0000_08_00.6.analog-stereo.monitor -f $HOME/Videos/$(date +'%Y%m%d%H%M%S_1.mp4')";
# Utils
c = "clear";
cd = "z";
tt = "gtrash put";
cat = "bat";
nano = "micro";
code = "codium";
py = "python";
icat = "kitten icat";
dsize = "du -hs";
findw = "grep -rl";
pdf = "tdf";
open = "xdg-open";
find = "fd";
l = "eza --icons -a --group-directories-first -1"; #EZA_ICON_SPACING=2
ll = "eza --icons -a --group-directories-first -1 --no-user --long";
tree = "eza --icons --tree --group-directories-first";
# Nixos
cdnix = "cd ~/nixos-config && codium ~/nixos-config";
@ -61,7 +71,8 @@
# ssh
s = "kitten ssh";
kssh = "kitten ssh";
ssh = "kitten ssh";
ossh = "ssh";
};
};