lots
This commit is contained in:
3235
flake.lock
generated
3235
flake.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -35,7 +35,7 @@
|
||||
};
|
||||
|
||||
# Hyprland environment
|
||||
hyprland.url = "github:hyprwm/hyprland";
|
||||
hyprland.url = "github:hyprwm/hyprland/nix-module";
|
||||
|
||||
hyprland-contrib = {
|
||||
url = "github:hyprwm/contrib";
|
||||
@@ -111,6 +111,10 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
ags = {
|
||||
url = "github:Aylur/ags";
|
||||
};
|
||||
|
||||
# Custom apps
|
||||
tuirun = {
|
||||
url = "git+https://git.sr.ht/~canasta/tuirun";
|
||||
|
||||
@@ -39,6 +39,13 @@ in {
|
||||
|
||||
environment.variables.FLAKE = "/home/cnst/.nix-config";
|
||||
|
||||
programs.hyprland.settings = {
|
||||
monitor = [
|
||||
"DP-3,2560x1440@240,0x0,1,transform,0,bitdepth,10"
|
||||
"DP-4,1920x1080@60,auto,1,transform,3"
|
||||
];
|
||||
};
|
||||
|
||||
# # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
||||
system.stateVersion = lib.mkDefault "23.11";
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
extraBlacklistedModules = [];
|
||||
extraKernelParams = [];
|
||||
hardware = "amd";
|
||||
variant = "cachyos";
|
||||
variant = "latest";
|
||||
};
|
||||
loader = {
|
||||
default = {
|
||||
@@ -23,7 +23,7 @@
|
||||
graphics = {
|
||||
amd = {
|
||||
enable = true;
|
||||
packageSet = "chaotic";
|
||||
packageSet = "standard";
|
||||
};
|
||||
nvidia = {
|
||||
enable = false;
|
||||
@@ -58,7 +58,7 @@
|
||||
};
|
||||
};
|
||||
corectrl = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
};
|
||||
fish = {
|
||||
enable = true;
|
||||
@@ -147,6 +147,9 @@
|
||||
dconf = {
|
||||
enable = true;
|
||||
};
|
||||
flatpak = {
|
||||
enable = true;
|
||||
};
|
||||
fwupd = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
};
|
||||
}
|
||||
self.nixosModules.nixos
|
||||
self.nixosModules.options
|
||||
inputs.chaotic.nixosModules.default
|
||||
inputs.agenix.nixosModules.default
|
||||
];
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
./nixos/services/blueman
|
||||
./nixos/services/dbus
|
||||
./nixos/services/dconf
|
||||
./nixos/services/flatpak
|
||||
./nixos/services/fwupd
|
||||
./nixos/services/gnome-keyring
|
||||
./nixos/services/greetd
|
||||
@@ -120,6 +121,7 @@
|
||||
};
|
||||
options = {
|
||||
imports = [
|
||||
./options/accounts
|
||||
./options/monitors
|
||||
./options/theme
|
||||
];
|
||||
|
||||
44
modules/home/programs/ags/default.nix
Normal file
44
modules/home/programs/ags/default.nix
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
cfg = config.home.programs.ags;
|
||||
in {
|
||||
imports = [inputs.ags.homeManagerModules.default];
|
||||
options = {
|
||||
home.programs.ags.enable = mkEnableOption "Enables ags";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
programs.ags = {
|
||||
enable = true;
|
||||
|
||||
# symlink to ~/.config/ags
|
||||
configDir = ../ags;
|
||||
|
||||
# additional packages to add to gjs's runtime
|
||||
extraPackages = with pkgs; [
|
||||
inputs.ags.packages.${pkgs.system}.battery
|
||||
fzf
|
||||
io
|
||||
astal3
|
||||
astal4
|
||||
apps
|
||||
auth
|
||||
battery
|
||||
bluetooth
|
||||
greet
|
||||
hyprland
|
||||
mpris
|
||||
network
|
||||
notifd
|
||||
powerprofiles
|
||||
tray
|
||||
wireplumber
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -46,19 +46,13 @@ in {
|
||||
scale = 0.95;
|
||||
};
|
||||
};
|
||||
animations = {
|
||||
enabled = true;
|
||||
bezier = [
|
||||
"myBezier,0.19, 1, 0.22, 1"
|
||||
];
|
||||
animation = [
|
||||
"windows, 1, 3, myBezier"
|
||||
"windowsOut, 1, 3, default, popin 80%"
|
||||
"border, 1, 2, default"
|
||||
"workspaces, 1, 2, default, slide"
|
||||
"specialWorkspace, 1, 2, default, fade"
|
||||
];
|
||||
};
|
||||
animations.enabled = true;
|
||||
animation = [
|
||||
"border, 1, 2, default"
|
||||
"fade, 1, 4, default"
|
||||
"windows, 1, 3, default, popin 80%"
|
||||
"workspaces, 1, 2, default, slide"
|
||||
];
|
||||
dwindle = {
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
pseudotile = true; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
|
||||
@@ -18,7 +18,7 @@ in {
|
||||
map (
|
||||
m: "${m.name},${
|
||||
if m.enabled
|
||||
then "${toString m.width}x${toString m.height}@${toString m.refreshRate},${m.position},1${
|
||||
then "${toString m.width}x${toString m.height}@${toString m.refreshRate},${m.position},${toString m.scale},transform,${toString m.transform}${
|
||||
if m.bitDepth != null
|
||||
then ",bitdepth,${toString m.bitDepth}"
|
||||
else ""
|
||||
|
||||
@@ -82,8 +82,6 @@ in {
|
||||
",Insert, exec, ${runOnce "grimblast"} --notify --freeze copysave area"
|
||||
"SHIFT, Insert, exec, ${runOnce "grimblast"} --notify --freeze copysave output"
|
||||
"ALT, Insert, exec, ${runOnce "grimblast"} --freeze save area - | ${runOnce "tesseract"} - - | wl-copy && ${runOnce "notify-send"} -t 3000 'OCR result copied to buffer'"
|
||||
"$mod, S, togglespecialworkspace, magic"
|
||||
"$mod SHIFT, S, movetoworkspace, special:magic"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
|
||||
@@ -59,8 +59,21 @@ in {
|
||||
"float, class:^(org.gnome.Calculator)$"
|
||||
"float, class:^(com.github.hluk.copyq)$"
|
||||
"float, class:^(blueman-manager)$"
|
||||
|
||||
# === WORKSPACE RULES ===
|
||||
"workspace 5 silent, class:^(discord)$"
|
||||
];
|
||||
windowrule = [];
|
||||
workspace = [
|
||||
"name:2,monitor:DP-3"
|
||||
"name:3,monitor:DP-3"
|
||||
"name:4,monitor:DP-3"
|
||||
"name:6,monitor:DP-3"
|
||||
"name:7,monitor:DP-3"
|
||||
"name:8,monitor:DP-3"
|
||||
"name:9,monitor:DP-3"
|
||||
"name:10,monitor:DP-3"
|
||||
];
|
||||
layerrule = [
|
||||
"animation fade,hyprpicker"
|
||||
"animation fade,selection"
|
||||
|
||||
@@ -21,7 +21,7 @@ in {
|
||||
};
|
||||
# a monitor of resources
|
||||
btop = {
|
||||
enable = false;
|
||||
enable = true;
|
||||
package = pkgs.btop.override {rocmSupport = true;};
|
||||
settings = {
|
||||
color_theme = "gruvbox_material_dark";
|
||||
|
||||
@@ -77,7 +77,7 @@ in {
|
||||
zig.enable = false;
|
||||
ocaml.enable = false;
|
||||
nu.enable = false;
|
||||
python.enable = true;
|
||||
python.enable = false; # pyright wont build
|
||||
dart.enable = false;
|
||||
lua.enable = true;
|
||||
bash.enable = true;
|
||||
|
||||
@@ -23,6 +23,7 @@ in {
|
||||
settings = [
|
||||
{
|
||||
height = 25;
|
||||
output = ["DP-3"];
|
||||
|
||||
modules-left = [
|
||||
"group/system"
|
||||
|
||||
@@ -19,6 +19,7 @@ in {
|
||||
};
|
||||
settings = {
|
||||
global = {
|
||||
follow = "mouse";
|
||||
browser = "${config.home.sessionVariables.BROWSER}";
|
||||
padding = 16;
|
||||
horizontal_padding = 16;
|
||||
@@ -28,12 +29,12 @@ in {
|
||||
};
|
||||
urgency_low = {
|
||||
msg_urgency = "low";
|
||||
background = "#665c54";
|
||||
background = "#282828";
|
||||
foreground = "#d5c4a1";
|
||||
};
|
||||
urgency_normal = {
|
||||
msg_urgency = "normal";
|
||||
background = "#3c3836";
|
||||
background = "#282828";
|
||||
foreground = "#d5c4a1";
|
||||
# foreground = "#fbf1c7";
|
||||
};
|
||||
|
||||
@@ -50,6 +50,8 @@ in {
|
||||
vulkan-tools
|
||||
wayland
|
||||
wayland-protocols
|
||||
scx.rustscheds
|
||||
libGL
|
||||
# rocmPackages.rocm-smi
|
||||
];
|
||||
})
|
||||
|
||||
63
modules/nixos/programs/hyprland/appearance.nix
Normal file
63
modules/nixos/programs/hyprland/appearance.nix
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
cfg = config.nixos.programs.hyprland;
|
||||
in {
|
||||
options = {
|
||||
nixos.programs.hyprland.appearance.enable = mkEnableOption "Enables appearance settings in Hyprland";
|
||||
};
|
||||
config = mkIf cfg.appearance.enable {
|
||||
programs.hyprland.settings = {
|
||||
general = {
|
||||
gaps_in = 2;
|
||||
gaps_out = "4, 4, 4, 4";
|
||||
border_size = 3;
|
||||
#col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
#col.inactive_border = rgba(595959aa)
|
||||
"col.active_border" = "rgb(4c7a5d)"; # rgba(b16286ee) 45deg
|
||||
"col.inactive_border" = "rgb(504945)";
|
||||
layout = "dwindle";
|
||||
resize_on_border = true;
|
||||
};
|
||||
decoration = {
|
||||
rounding = 0;
|
||||
blur = {
|
||||
enabled = true;
|
||||
brightness = 1.0;
|
||||
contrast = 1.0;
|
||||
noise = 0.01;
|
||||
vibrancy = 0.15;
|
||||
vibrancy_darkness = 0.5;
|
||||
passes = 1;
|
||||
size = 3;
|
||||
popups = true;
|
||||
popups_ignorealpha = 0.2;
|
||||
};
|
||||
shadow = {
|
||||
enabled = false;
|
||||
color = "rgba(00000025)";
|
||||
ignore_window = true;
|
||||
offset = "0 5";
|
||||
range = 45;
|
||||
render_power = 2;
|
||||
scale = 0.95;
|
||||
};
|
||||
};
|
||||
animations.enabled = true;
|
||||
animation = [
|
||||
"border, 1, 2, default"
|
||||
"fade, 1, 4, default"
|
||||
"windows, 1, 3, default, popin 80%"
|
||||
"workspaces, 1, 2, default, slide"
|
||||
];
|
||||
dwindle = {
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
pseudotile = true; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true; # you probably want this
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,32 +1,39 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
inherit (lib) mkIf mkEnableOption mkDefault;
|
||||
cfg = config.nixos.programs.hyprland;
|
||||
# hyprsysteminfoFlake = inputs.hyprsysteminfo.packages.${pkgs.system}.default;
|
||||
in {
|
||||
imports = [
|
||||
inputs.hyprland.nixosModules.default
|
||||
./appearance.nix
|
||||
./inputs.nix
|
||||
./keybinds.nix
|
||||
./rules.nix
|
||||
./startup.nix
|
||||
];
|
||||
|
||||
options = {
|
||||
nixos.programs.hyprland = {
|
||||
enable = mkEnableOption "Enables hyprland";
|
||||
enable = mkEnableOption "Enable Hyprland";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
security.pam.services.hyprlock.text = "auth include login";
|
||||
nixos.programs.hyprland = {
|
||||
appearance.enable = mkDefault true;
|
||||
inputs.enable = mkDefault true;
|
||||
keybinds.enable = mkDefault true;
|
||||
rules.enable = mkDefault true;
|
||||
startup.enable = mkDefault true;
|
||||
};
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
package = inputs.hyprland.packages.${pkgs.system}.default;
|
||||
portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
environment = {
|
||||
variables.NIXOS_OZONE_WL = "1";
|
||||
systemPackages = [
|
||||
# pkgs.hyprwayland-scanner
|
||||
# hyprsysteminfoFlake
|
||||
];
|
||||
};
|
||||
environment.variables.NIXOS_OZONE_WL = "1";
|
||||
};
|
||||
}
|
||||
|
||||
116
modules/nixos/programs/hyprland/inputs.nix
Normal file
116
modules/nixos/programs/hyprland/inputs.nix
Normal file
@@ -0,0 +1,116 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption mkMerge;
|
||||
cfg = config.nixos.programs.hyprland;
|
||||
host = config.networking.hostName;
|
||||
in {
|
||||
options = {
|
||||
nixos.programs.hyprland.inputs.enable = mkEnableOption "Enables input settings in Hyprland";
|
||||
};
|
||||
config = mkIf cfg.inputs.enable (mkMerge [
|
||||
{
|
||||
programs.hyprland.settings = {
|
||||
env = [
|
||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||
];
|
||||
|
||||
input = {
|
||||
kb_layout = "se";
|
||||
kb_variant = "nodeadkeys";
|
||||
follow_mouse = 1;
|
||||
accel_profile = "flat";
|
||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = true;
|
||||
disable_while_typing = true;
|
||||
clickfinger_behavior = true;
|
||||
scroll_factor = 0.5;
|
||||
};
|
||||
};
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = true;
|
||||
workspace_swipe_distance = 400;
|
||||
workspace_swipe_fingers = 3;
|
||||
workspace_swipe_cancel_ratio = 0.2;
|
||||
workspace_swipe_min_speed_to_force = 5;
|
||||
workspace_swipe_direction_lock = true;
|
||||
workspace_swipe_direction_lock_threshold = 10;
|
||||
workspace_swipe_create_new = true;
|
||||
};
|
||||
|
||||
misc = {
|
||||
mouse_move_enables_dpms = 1;
|
||||
key_press_enables_dpms = 0;
|
||||
force_default_wallpaper = 0;
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
disable_autoreload = true;
|
||||
disable_xdg_env_checks = true;
|
||||
layers_hog_keyboard_focus = false;
|
||||
};
|
||||
|
||||
xwayland = {
|
||||
force_zero_scaling = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf (host == "cnix") {
|
||||
programs.hyprland.settings = {
|
||||
render = {
|
||||
explicit_sync = 2;
|
||||
explicit_sync_kms = 2;
|
||||
direct_scanout = false;
|
||||
};
|
||||
cursor = {
|
||||
no_hardware_cursors = 2;
|
||||
};
|
||||
general = {
|
||||
allow_tearing = false;
|
||||
};
|
||||
misc = {
|
||||
vrr = 0;
|
||||
};
|
||||
};
|
||||
})
|
||||
|
||||
(mkIf (host == "cnixpad") {
|
||||
programs.hyprland.settings = {
|
||||
input = {
|
||||
kb_options = "ctrl:swapcaps";
|
||||
};
|
||||
general = {
|
||||
allow_tearing = false;
|
||||
};
|
||||
misc = {
|
||||
vrr = 0;
|
||||
vfr = 1;
|
||||
};
|
||||
};
|
||||
})
|
||||
|
||||
(mkIf (host == "toothpc") {
|
||||
programs.hyprland.settings = {
|
||||
render = {
|
||||
explicit_sync = 0;
|
||||
explicit_sync_kms = 0;
|
||||
direct_scanout = false;
|
||||
};
|
||||
cursor = {
|
||||
no_hardware_cursors = true;
|
||||
};
|
||||
general = {
|
||||
allow_tearing = false;
|
||||
};
|
||||
misc = {
|
||||
vrr = 0;
|
||||
};
|
||||
};
|
||||
})
|
||||
]);
|
||||
}
|
||||
129
modules/nixos/programs/hyprland/keybinds.nix
Normal file
129
modules/nixos/programs/hyprland/keybinds.nix
Normal file
@@ -0,0 +1,129 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption mkMerge;
|
||||
cfg = config.nixos.programs.hyprland;
|
||||
host = config.networking.hostName;
|
||||
|
||||
toggle = program: let
|
||||
prog = builtins.substring 0 14 program;
|
||||
in "pkill ${prog} || uwsm app -- ${program}";
|
||||
|
||||
runOnce = program: "pgrep ${program} || uwsm app -- ${program}";
|
||||
in {
|
||||
options = {
|
||||
nixos.programs.hyprland.keybinds.enable = mkEnableOption "Enables keybind settings in Hyprland";
|
||||
};
|
||||
|
||||
config = mkIf cfg.keybinds.enable (mkMerge [
|
||||
{
|
||||
programs.hyprland.settings = {
|
||||
# Common Keybind Variables
|
||||
"$fileManager" = "thunar";
|
||||
"$yazi" = "foot -e yazi";
|
||||
"$launcher" = "fuzzel";
|
||||
|
||||
bind = [
|
||||
"$mod, SPACE, exec, $launcher"
|
||||
"$mod, R, exec, $launcher"
|
||||
"$mod, L, exec, ${toggle "nwg-bar"}"
|
||||
"$mod SHIFT, B, exec, pkill -SIGUSR2 waybar"
|
||||
"$mod, A, exec, pkill -SIGUSR1 waybar"
|
||||
"$mod, T, exec, $terminal"
|
||||
"$mod, W, exec, $browser"
|
||||
"$mod, K, exec, keepassxc"
|
||||
"$mod SHIFT, W, exec, $browserinc"
|
||||
"$mod, Q, killactive,"
|
||||
"$mod, E, exec, $fileManager"
|
||||
"$mod SHIFT, E, exec, $yazi"
|
||||
"$mod, F, fullscreen,"
|
||||
"$mod SHIFT, F, togglefloating,"
|
||||
"$mod, P, pseudo,"
|
||||
"$mod, J, togglesplit,"
|
||||
"$mod, C, exec, hyprctl dispatch exec copyq toggle"
|
||||
"$mod, left, movefocus, l"
|
||||
"$mod, right, movefocus, r"
|
||||
"$mod, up, movefocus, u"
|
||||
"$mod, down, 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, movetoworkspace, 1"
|
||||
"$mod SHIFT, 2, movetoworkspace, 2"
|
||||
"$mod SHIFT, 3, movetoworkspace, 3"
|
||||
"$mod SHIFT, 4, movetoworkspace, 4"
|
||||
"$mod SHIFT, 5, movetoworkspace, 5"
|
||||
"$mod SHIFT, 6, movetoworkspace, 6"
|
||||
"$mod SHIFT, 7, movetoworkspace, 7"
|
||||
"$mod SHIFT, 8, movetoworkspace, 8"
|
||||
"$mod SHIFT, 9, movetoworkspace, 9"
|
||||
"$mod SHIFT, 0, movetoworkspace, 10"
|
||||
|
||||
",XF86AudioLowerVolume, exec, volume-control.sh --dec"
|
||||
",XF86AudioRaiseVolume, exec, volume-control.sh --inc"
|
||||
",XF86AudioMute, exec, volume-control.sh --toggle"
|
||||
",XF86AudioMicMute, exec, volume-control.sh --toggle-mic"
|
||||
|
||||
",XF86MonBrightnessDown, exec, brightnessctl s 5%-"
|
||||
",XF86MonBrightnessUp, exec, brightnessctl s +5%"
|
||||
"$mod, XF86MonBrightnessUp, exec, hyprctl dispatch dpms on"
|
||||
"$mod, XF86MonBrightnessDown, exec, hyprctl dispatch dpms off"
|
||||
|
||||
",Insert, exec, ${runOnce "grimblast"} --notify --freeze copysave area"
|
||||
"SHIFT, Insert, exec, ${runOnce "grimblast"} --notify --freeze copysave output"
|
||||
"ALT, Insert, exec, ${runOnce "grimblast"} --freeze save area - | ${runOnce "tesseract"} - - | wl-copy && ${runOnce "notify-send"} -t 3000 'OCR result copied to buffer'"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
"$mod, mouse:272, movewindow"
|
||||
"$mod, mouse:273, resizewindow"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf (host == "cnix") {
|
||||
programs.hyprland.settings = {
|
||||
"$terminal" = "ghostty";
|
||||
"$browser" = "zen";
|
||||
"$browserinc" = "zen --private-window";
|
||||
"$mod" = "SUPER";
|
||||
bind = [
|
||||
# Add more host-specific binds as needed
|
||||
];
|
||||
};
|
||||
})
|
||||
|
||||
(mkIf (host == "cnixpad") {
|
||||
programs.hyprland.settings = {
|
||||
"$terminal" = "foot";
|
||||
"$browser" = "zen";
|
||||
"$browserinc" = "zen --private-window";
|
||||
"$mod" = "ALT_L";
|
||||
bind = [
|
||||
# Add more host-specific binds as needed
|
||||
];
|
||||
};
|
||||
})
|
||||
|
||||
(mkIf (host == "toothpc") {
|
||||
programs.hyprland.settings = {
|
||||
"$terminal" = "alacritty";
|
||||
"$browser" = "firefox";
|
||||
"$browserinc" = "firefox --private-window";
|
||||
"$mod" = "ALT_L";
|
||||
bind = [
|
||||
# Add more host-specific binds as needed
|
||||
];
|
||||
};
|
||||
})
|
||||
]);
|
||||
}
|
||||
94
modules/nixos/programs/hyprland/rules.nix
Normal file
94
modules/nixos/programs/hyprland/rules.nix
Normal file
@@ -0,0 +1,94 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
cfg = config.nixos.programs.hyprland.rules;
|
||||
in {
|
||||
options = {
|
||||
nixos.programs.hyprland.rules.enable = mkEnableOption "Enables window rule settings in Hyprland";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.hyprland.settings = {
|
||||
windowrulev2 = [
|
||||
# === CALCURSE SETTINGS ===
|
||||
"size 843 650, initialTitle:^(floatcal)$"
|
||||
"move 100%-w-20 40, initialTitle:^(floatcal)$"
|
||||
"float, initialTitle:^(floatcal)$"
|
||||
|
||||
# === TUIRUN SETTINGS ===
|
||||
"size 600 300, title:^(tuirun)$"
|
||||
"center, title:^(tuirun)$"
|
||||
# "workspace special:tuirun, initialTitle:^(tuirun)$"
|
||||
"noborder, title:^(tuirun)$"
|
||||
"float, title:^(tuirun)$"
|
||||
|
||||
# === KEEPASSXC SETTINGS ===
|
||||
"size 843 530, class:^(org.keepassxc.KeePassXC)$"
|
||||
"move 100%-w-20 40, class:^(org.keepassxc.KeePassXC)$"
|
||||
"float, class:^(org.keepassxc.KeePassXC)$"
|
||||
|
||||
# === SUPPRESS MAXIMIZE EVENT ===
|
||||
"suppressevent maximize, class:.*" # Suppress maximize events for all windows
|
||||
|
||||
# === NWG-LOOK SETTINGS ===
|
||||
"center, class:^(nwg-look)$"
|
||||
"float, class:^(nwg-look)$"
|
||||
|
||||
# === OCULANTE SETTINGS ===
|
||||
"center, class:^(oculante)$"
|
||||
"float, class:^(oculante)$"
|
||||
|
||||
# === PAVUCONTROL SETTINGS ===
|
||||
"move 100%-w-20 40, class:^(pavucontrol)$"
|
||||
"size 741 585, class:^(pavucontrol)$"
|
||||
"float, class:^(pavucontrol)$"
|
||||
|
||||
# === XARCHIVER SETTINGS ===
|
||||
"center, class:^(xarchiver)$"
|
||||
"float, class:^(xarchiver)$"
|
||||
|
||||
# === FLOATING APPLICATIONS ===
|
||||
"float, class:^(org.gnome.FileRoller)$"
|
||||
"float, class:^(org.freedesktop.impl.portal.desktop.kde)$"
|
||||
"float, class:^(org.corectrl.CoreCtrl)$"
|
||||
"float, class:^(feh)$"
|
||||
"float, class:^(polkit-gnome-authentication-agent-1)$"
|
||||
"float, class:^(org.gnome.Calculator)$"
|
||||
"float, class:^(com.github.hluk.copyq)$"
|
||||
"float, class:^(blueman-manager)$"
|
||||
|
||||
# === WORKSPACE RULES ===
|
||||
"workspace 5 silent, class:^(discord)$"
|
||||
];
|
||||
windowrule = [];
|
||||
workspace = [
|
||||
"name:1,monitor:DP-3"
|
||||
"name:2,monitor:DP-3"
|
||||
"name:3,monitor:DP-3"
|
||||
"name:4,monitor:DP-3"
|
||||
"name:5,monitor:DP-4"
|
||||
"name:6,monitor:DP-3"
|
||||
"name:7,monitor:DP-3"
|
||||
"name:8,monitor:DP-3"
|
||||
"name:9,monitor:DP-3"
|
||||
"name:10,monitor:DP-3"
|
||||
];
|
||||
layerrule = [
|
||||
"animation fade,hyprpicker"
|
||||
"animation fade,selection"
|
||||
|
||||
"noanim,waybar"
|
||||
"ignorezero,waybar"
|
||||
"ignorealpha 0.0,waybar"
|
||||
|
||||
"blur,notifications"
|
||||
"ignorezero,notifications"
|
||||
|
||||
"noanim,wallpaper"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
53
modules/nixos/programs/hyprland/startup.nix
Normal file
53
modules/nixos/programs/hyprland/startup.nix
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption mkMerge;
|
||||
cfg = config.nixos.programs.hyprland;
|
||||
host = config.networking.hostName;
|
||||
in {
|
||||
options = {
|
||||
nixos.programs.hyprland.startup.enable = mkEnableOption "Enables startup settings in Hyprland";
|
||||
};
|
||||
|
||||
config = mkIf cfg.startup.enable (mkMerge [
|
||||
{
|
||||
programs.hyprland.settings = {
|
||||
exec-once = [
|
||||
"sleep 2 && uwsm finalize"
|
||||
"hyprlock"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf (host == "cnix") {
|
||||
programs.hyprland.settings.exec-once = [
|
||||
"uwsm app -- mullvad-vpn"
|
||||
"uwsm app -- blueman-applet"
|
||||
"uwsm app -- keepassxc"
|
||||
"uwsm app -- pamixer --set-volume 50"
|
||||
"uwsm app -- solaar -w hide -b regular"
|
||||
"uwsm app -- nm-applet --indicator"
|
||||
];
|
||||
})
|
||||
|
||||
(mkIf (host == "cnixpad") {
|
||||
programs.hyprland.settings.exec-once = [
|
||||
"uwsm app -- blueman-applet"
|
||||
"uwsm app -- keepassxc"
|
||||
"uwsm app -- pamixer --set-volume 50"
|
||||
"uwsm app -- nm-applet --indicator"
|
||||
];
|
||||
})
|
||||
|
||||
(mkIf (host == "toothpc") {
|
||||
programs.hyprland.settings.exec-once = [
|
||||
"uwsm app -- mullvad-vpn"
|
||||
"uwsm app -- keepassxc"
|
||||
"uwsm app -- solaar -w hide -b regular"
|
||||
"uwsm app -- nm-applet --indicator"
|
||||
];
|
||||
})
|
||||
]);
|
||||
}
|
||||
32
modules/nixos/programs/hyprlandbak/default.nix
Normal file
32
modules/nixos/programs/hyprlandbak/default.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
cfg = config.nixos.programs.hyprland;
|
||||
# hyprsysteminfoFlake = inputs.hyprsysteminfo.packages.${pkgs.system}.default;
|
||||
in {
|
||||
options = {
|
||||
nixos.programs.hyprland = {
|
||||
enable = mkEnableOption "Enables hyprland";
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
security.pam.services.hyprlock.text = "auth include login";
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
package = inputs.hyprland.packages.${pkgs.system}.default;
|
||||
portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
environment = {
|
||||
variables.NIXOS_OZONE_WL = "1";
|
||||
systemPackages = [
|
||||
# pkgs.hyprwayland-scanner
|
||||
# hyprsysteminfoFlake
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -62,7 +62,7 @@ in {
|
||||
])
|
||||
|
||||
(mkIf cfg.dev.enable [
|
||||
lldb_19
|
||||
# lldb_20 # some biuld error atm
|
||||
nfs-utils
|
||||
gcc
|
||||
rust-analyzer
|
||||
|
||||
28
modules/nixos/services/flatpak/default.nix
Normal file
28
modules/nixos/services/flatpak/default.nix
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
cfg = config.nixos.services.flatpak;
|
||||
in {
|
||||
options = {
|
||||
nixos.services.flatpak.enable = mkEnableOption "Enables flatpaks and gnome software";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
services.flatpak.enable = true;
|
||||
environment.systemPackages = with pkgs; [
|
||||
gnome-software
|
||||
];
|
||||
systemd.services.flatpak-repo = {
|
||||
wantedBy = ["multi-user.target"];
|
||||
requires = ["network-online.target"];
|
||||
after = ["network-online.target"];
|
||||
path = [pkgs.flatpak];
|
||||
script = ''
|
||||
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
20
modules/options/accounts/default.nix
Normal file
20
modules/options/accounts/default.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkOption types;
|
||||
in {
|
||||
options.accounts = {
|
||||
username = mkOption {
|
||||
type = types.str;
|
||||
default = "cnst";
|
||||
description = "Set the desired username";
|
||||
};
|
||||
hostname = mkOption {
|
||||
type = types.str;
|
||||
default = "cnix";
|
||||
description = "Set the desired hostname";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -30,6 +30,10 @@ in {
|
||||
type = types.int;
|
||||
default = 60;
|
||||
};
|
||||
transform = mkOption {
|
||||
type = types.int;
|
||||
default = 0;
|
||||
};
|
||||
bitDepth = mkOption {
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
@@ -39,6 +43,10 @@ in {
|
||||
type = types.str;
|
||||
default = "auto";
|
||||
};
|
||||
scale = mkOption {
|
||||
type = types.str;
|
||||
default = "1";
|
||||
};
|
||||
enabled = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
pkgs,
|
||||
# lib,
|
||||
lib,
|
||||
config,
|
||||
# osConfig,
|
||||
...
|
||||
}:
|
||||
@@ -32,6 +33,7 @@
|
||||
VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/radeon_icd.x86_64.json";
|
||||
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/cnst/.steam/root/compatibilitytools.d";
|
||||
QT_QPA_PLATFORM = "wayland";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -42,4 +44,6 @@
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
systemd.user.targets.tray.Unit.Requires = lib.mkForce ["graphical-session.target"];
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
config,
|
||||
pkgs,
|
||||
osConfig,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
email = config.programs.git.userEmail;
|
||||
@@ -21,18 +22,20 @@ in {
|
||||
options.dark = true;
|
||||
};
|
||||
extraConfig = {
|
||||
user.signingkey = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
|
||||
# user.signingkey = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
|
||||
user.signingkey = "${config.home.homeDirectory}/.config/git/allowed_signers";
|
||||
signing = {
|
||||
format = lib.mkDefault "ssh";
|
||||
key = "${config.home.homeDirectory}/.ssh/id_ed25519";
|
||||
signByDefault = true;
|
||||
};
|
||||
gpg = {
|
||||
format = "ssh";
|
||||
# format = lib.mkDefault "ssh";
|
||||
ssh.allowedSignersFile = config.home.homeDirectory + "/" + config.xdg.configFile."git/allowed_signers".target;
|
||||
};
|
||||
commit = {
|
||||
verbose = true;
|
||||
gpgSign = true;
|
||||
gpgSign = false;
|
||||
};
|
||||
init.defaultBranch = "main";
|
||||
merge.conflictStyle = "diff3";
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
enable = true;
|
||||
};
|
||||
hyprland = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
};
|
||||
hyprlock = {
|
||||
enable = true;
|
||||
@@ -66,7 +66,7 @@
|
||||
enable = false;
|
||||
};
|
||||
nvf = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
};
|
||||
nwg-bar = {
|
||||
enable = true;
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
{
|
||||
accounts = {
|
||||
username = "cnst";
|
||||
hostname = "cnix";
|
||||
};
|
||||
monitors = [
|
||||
{
|
||||
name = "DP-3";
|
||||
width = 2560;
|
||||
height = 1440;
|
||||
refreshRate = 240;
|
||||
bitDepth = 10;
|
||||
position = "0x0";
|
||||
transform = 0;
|
||||
bitDepth = 10;
|
||||
workspace = "1";
|
||||
primary = true;
|
||||
}
|
||||
@@ -15,8 +20,9 @@
|
||||
width = 1920;
|
||||
height = 1080;
|
||||
refreshRate = 60;
|
||||
position = "2560x360";
|
||||
workspace = "4";
|
||||
position = "2560x0";
|
||||
transform = 3;
|
||||
workspace = "5";
|
||||
primary = false;
|
||||
}
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user