change structure to make it more readable

This commit is contained in:
lucy 2026-07-30 17:20:40 +02:00
commit ad86712653
31 changed files with 259 additions and 234 deletions

23
home-manager/home.nix Normal file
View file

@ -0,0 +1,23 @@
{
inputs,
...
}:
{
imports = [
./stylix.nix
./fastfetch.nix
./hyprland.nix
./programs/common.nix
./programs/foot.nix
./programs/git.nix
./programs/nixcord.nix
./hyprland/hyprland.nix
inputs.nixcord.homeModules.nixcord
inputs.spicetify-nix.homeManagerModules.spicetify
];
home.pointerCursor.enable = true;
home.username = "lucy";
home.homeDirectory = "/home/lucy";
home.stateVersion = "26.05";
}

View file

@ -0,0 +1,225 @@
hl.monitor({
output = "",
mode = "preferred",
position = "auto",
scale = "1",
})
hl.monitor({
output = "eDP-1",
mode = "preferred",
position = "auto",
scale = "1",
})
hl.monitor({
output = "DP-5",
mode = "2560x1440@165",
position = "auto",
scale = "1",
})
-- Set programs that you use
local terminal = "foot"
local fileManager = "nemo"
local menu = "fuzzel"
hl.on("hyprland.start", function()
hl.exec_cmd("qs")
hl.exec_cmd("/usr/libexec/hyprpolkitagent")
end)
hl.config({
general = {
gaps_in = 5,
gaps_out = 10,
border_size = 2,
resize_on_border = false,
allow_tearing = false,
layout = "master",
},
decoration = {
rounding = 18,
rounding_power = 2,
active_opacity = 1.0,
inactive_opacity = 1.0,
shadow = {
enabled = true,
range = 4,
render_power = 3,
color = 0xee1a1a1a,
},
blur = {
enabled = true,
size = 3,
passes = 2,
vibrancy = 0.1696,
},
},
animations = {
enabled = true,
},
})
-- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/
hl.curve("easeOutQuint", { type = "bezier", points = { { 0.23, 1 }, { 0.32, 1 } } })
hl.curve("easeInOutCubic", { type = "bezier", points = { { 0.65, 0.05 }, { 0.36, 1 } } })
hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
hl.curve("almostLinear", { type = "bezier", points = { { 0.5, 0.5 }, { 0.75, 1 } } })
hl.curve("quick", { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1 } } })
-- Default springs
hl.curve("easy", { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 })
hl.animation({ leaf = "global", enabled = true, speed = 5, bezier = "easeInOutCubic" })
hl.animation({ leaf = "windows", enabled = true, speed = 4, bezier = "easeOutQuint", style = "slide" })
hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "quick" })
hl.animation({ leaf = "layers", enabled = true, speed = 4, bezier = "easeOutQuint" })
hl.animation({ leaf = "workspaces", enabled = true, speed = 2, bezier = "easeOutQuint", style = "slidevert" })
hl.animation({ leaf = "border", enabled = false, speed = 2, bezier = "easeOutQuint", style = "slidevert" })
hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" })
hl.config({
master = {
new_status = "slave",
},
})
---------------
---- INPUT ----
---------------
hl.config({
input = {
kb_layout = "eu",
kb_variant = "",
kb_model = "",
kb_options = "",
kb_rules = "",
follow_mouse = 1,
sensitivity = 0, -- -1.0 - 1.0, 0 means no modification.
accel_profile = "flat",
touchpad = {
natural_scroll = false,
},
},
})
hl.gesture({
fingers = 3,
direction = "vertical",
action = "workspace",
})
local mainMod = "SUPER" -- Sets "Windows" key as main modifier
local aux_mod = "ALT"
-- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more
hl.bind(mainMod .. " + Return", hl.dsp.exec_cmd(terminal))
hl.bind(mainMod .. " + Q", hl.dsp.window.close())
hl.bind(
mainMod .. " + M",
hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'")
)
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager))
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
hl.bind(mainMod .. " + Space", hl.dsp.exec_cmd(menu))
-- Move focus with mainMod + arrow keys
hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" }))
hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" }))
hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" }))
hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "down" }))
hl.bind(mainMod .. " + h", hl.dsp.focus({ direction = "left" }))
hl.bind(mainMod .. " + l", hl.dsp.focus({ direction = "right" }))
hl.bind(mainMod .. " + k", hl.dsp.focus({ direction = "up" }))
hl.bind(mainMod .. " + j", hl.dsp.focus({ direction = "down" }))
for i = 1, 10 do
local key = i % 10 -- 10 maps to key 0
hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i }))
hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
end
-- Move/resize windows with mainMod + LMB/RMB and dragging
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
hl.bind(aux_mod .. " + mouse:272", hl.dsp.window.resize(), { mouse = true })
-- Laptop multimedia keys for volume and LCD brightness
hl.bind(
"XF86AudioRaiseVolume",
hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"),
{ locked = true, repeating = true }
)
hl.bind(
"XF86AudioLowerVolume",
hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"),
{ locked = true, repeating = true }
)
hl.bind(
"XF86AudioMute",
hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"),
{ locked = true, repeating = true }
)
hl.bind(
"XF86AudioMicMute",
hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"),
{ locked = true, repeating = true }
)
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl set 5%+"), { locked = true, repeating = true })
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl set 5%-"), { locked = true, repeating = true })
-- Requires playerctl
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
-- Screenshot binds
hl.bind(aux_mod .. "+ SHIFT + S", hl.dsp.exec_cmd("grimblast copy output -n -c"))
hl.bind(mainMod .. "+ SHIFT + S", hl.dsp.exec_cmd("grimblast copy area -n -f"))
-- misc binds
hl.bind(mainMod .. " + w", hl.dsp.exec_cmd("/etc/bash/bashrc.d/90-qs.bash switch-wall fuzzel"))
hl.bind(mainMod .. " + t", hl.dsp.exec_cmd("/etc/bash/bashrc.d/90-qs.bash switch-theme fuzzel"))
hl.bind(mainMod .. "+ SHIFT + minus", hl.dsp.window.move({ workspace = "special:scratchpad" }))
hl.bind(mainMod .. " + minus", hl.dsp.workspace.toggle_special("scratchpad"))
hl.window_rule({
-- Ignore maximize requests from all apps. You'll probably like this.
name = "suppress-maximize-events",
match = { class = ".*" },
suppress_event = "maximize",
})
hl.window_rule({
-- Fix some dragging issues with XWayland
name = "fix-xwayland-drags",
match = {
class = "^$",
title = "^$",
xwayland = true,
float = true,
fullscreen = false,
pin = false,
},
no_focus = true,
})
hl.window_rule({
name = "discord-to-ws6",
match = { class = "^(discord)$" },
workspace = "6 silent",
})
hl.window_rule({
name = "spotify-to-ws7",
match = { class = "^(Spotify)$" },
workspace = "7 silent",
})

View file

@ -0,0 +1,29 @@
{
config,
pkgs,
...
}:
{
wayland.windowManager.hyprland = {
enable = true;
package = null;
systemd.enable = false;
extraConfig = ''
require("main")
'';
portalPackage = pkgs.xdg-desktop-portal-hyprland;
};
xdg.configFile."hypr/main.lua".source =
config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos/home/hyprland/hyprland.lua";
xdg.portal.config = {
common = {
default = [ "gtk" ];
};
hyprland = {
default = [ "hyprland" ];
"org.freedesktop.impl.portal.Secret" = [
"gnome-keyring"
];
};
};
}

View file

@ -0,0 +1,16 @@
{ pkgs, ... }: {
programs.quickshell.enable = true;
programs.fuzzel.enable = true;
programs.google-chrome.enable = true;
programs.home-manager.enable = true;
services.syncthing.enable = true;
programs.spicetify.enable = true;
home.packages = with pkgs; [
xournalpp
fastfetch
hyfetch
nemo
pavucontrol
material-symbols
];
}

View file

@ -0,0 +1,61 @@
{ config, lib, ... }:
{
programs.fastfetch = {
enable = true;
settings = {
logo = {
type = "small";
padding = {
top = 1;
right = 2;
};
};
display = {
separator = " ";
};
modules = [
{
key = "╭────────╮";
type = "custom";
}
{
key = "│{#34} distro {#keys}│";
type = "os";
format = "{name} {version}";
}
{
key = "│{#35} kernel {#keys}│";
type = "kernel";
}
{
key = "│{#36} host {#keys}│";
type = "host";
}
{
key = "│{#33} wm {#keys}│";
type = "wm";
}
{
key = "│{#32} ip {#keys}│";
type = "localip";
showIpv6 = false;
format = "{ipv4}";
}
{
key = "├────────┤";
type = "custom";
}
{
key = "│{#39} colors {#keys}│";
type = "colors";
symbol = "circle";
}
{
key = "╰────────╯";
type = "custom";
}
];
};
};
}

View file

@ -0,0 +1,10 @@
{ pkgs, ... }: {
programs.foot = {
enable = true;
settings = {
main = {
pad = "20x20";
};
};
};
}

View file

@ -0,0 +1,10 @@
{
programs.git = {
enable = true;
settings = {
user.name = "lucy";
user.email = "lucykaufmann@protonmail.com";
init.defaultBranch = "main";
};
};
}

View file

@ -0,0 +1,12 @@
{
programs.nixcord = {
enable = true;
discord.vencord.enable = true;
config = {
plugins = {
messageClickActions.enable = true;
messageLogger.enable = true;
};
};
};
}

48
home-manager/stylix.nix Normal file
View file

@ -0,0 +1,48 @@
{
lib,
inputs,
...
}:
let
keep = [
"spicetify"
"neovim"
"qt"
"gtk"
"hyprland"
"hyprpaper"
"foot"
"fuzzel"
"discord"
"console"
];
dir = "${inputs.stylix}/modules";
drop = builtins.filter (n: !(builtins.elem n keep)) (
builtins.attrNames (lib.filterAttrs (_: t: t == "directory") (builtins.readDir dir))
);
disable =
platform:
map (n: "${dir}/${n}/${platform}.nix") (
builtins.filter (n: builtins.pathExists "${dir}/${n}/${platform}.nix") drop
);
in
{
disabledModules = disable "hm";
stylix = {
enable = true;
autoEnable = false;
targets = {
gtk.enable = true;
nixcord.enable = true;
qt.enable = true;
hyprland.enable = true;
hyprland.hyprpaper.enable = false;
fuzzel.enable = true;
foot.enable = true;
spicetify.enable = true;
};
};
}