diff --git a/README.md b/README.md new file mode 100644 index 0000000..0e29aa5 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# nixos-configs + +## Misc references used +* https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles/tree/main \ No newline at end of file diff --git a/modules/application-groups/ai.nix b/modules/application-groups/ai.nix new file mode 100644 index 0000000..db7f264 --- /dev/null +++ b/modules/application-groups/ai.nix @@ -0,0 +1,39 @@ +{ pkgs, config, ... }: + +{ + services.ollama = { + enable = true; + loadModels = [ + "llama3.2:3b" + "phi4-reasoning:14b" + "dolphin3:8b" + "smallthinker:3b" + "gemma3:4b" + "gemma3:12b" + "gemma3:27b" + "deepcoder:14b" + "qwen3:14b" + "nomic-embed-text" + ]; + acceleration = "cuda"; + }; + + services.open-webui = { + enable = true; + port = 8888; + host = "127.0.0.1"; + }; + + environment.systemPackages = with pkgs; [ + oterm + alpaca + aichat + fabric-ai + aider-chat + + # tgpt + # smartcat + # nextjs-ollama-llm-ui + # open-webui + ]; +} diff --git a/modules/application-groups/system-utilities.nix b/modules/application-groups/system-utilities.nix index 7187f6f..494f6b9 100644 --- a/modules/application-groups/system-utilities.nix +++ b/modules/application-groups/system-utilities.nix @@ -20,6 +20,7 @@ services.hardware.openrgb.enable = true; environment.systemPackages = with pkgs; [ + btop desktop-file-utils dnsutils ffmpeg-full diff --git a/modules/system/hyprland.nix b/modules/system/hyprland.nix index 0ac6f2b..dce8d73 100644 --- a/modules/system/hyprland.nix +++ b/modules/system/hyprland.nix @@ -22,6 +22,9 @@ xdg.portal.enable = true; xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + programs.hyprlock.enable = true; + services.hypridle.enable = true; + environment.systemPackages = with pkgs; [ waybar dunst @@ -39,8 +42,6 @@ swayimg hyprpicker kanshi - hyprlock - swayidle mako (pkgs.waybar.overrideAttrs (oldAttrs: { diff --git a/modules/system/nix-settings.nix b/modules/system/nix-settings.nix index e327172..50d1235 100644 --- a/modules/system/nix-settings.nix +++ b/modules/system/nix-settings.nix @@ -12,6 +12,14 @@ # Generally want a larger download buffer nix.settings.download-buffer-size = 524288000; + nix.settings.auto-optimise-store = true; + nix.optimise.automatic = true; + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 14d"; + }; + programs.bash.shellAliases = { nixrebuild = "pushd /etc/nixos && { trap 'popd' EXIT; sudo nixos-rebuild switch --flake .#$(hostname); }"; nixupdate = "cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --flake .#$(hostname)"; diff --git a/users/caperren/caperren.nix b/users/caperren/caperren.nix index 5574a84..ae38c48 100644 --- a/users/caperren/caperren.nix +++ b/users/caperren/caperren.nix @@ -1,5 +1,6 @@ { config, pkgs, ... }: let + hyprlandConfigPath = ./. + "/dotfiles/hyprland/${config.networking.hostName}"; kanshiConfigPath = ./. + "/dotfiles/kanshi/${config.networking.hostName}"; spotifyPlayerAppTomlTextTemplate = builtins.readFile ./dotfiles/spotify-player/app.toml; spotifyPlayerAppTomlText = builtins.replaceStrings [ "{{hostname}}" ] [ config.networking.hostName ] spotifyPlayerAppTomlTextTemplate; @@ -34,6 +35,7 @@ in userEmail = "caperren@gmail.com"; }; + home.file.".config/hypr/hyprland.conf".source = hyprlandConfigPath + "/hyprland.conf"; home.file.".config/kanshi/config".source = kanshiConfigPath + "/config"; home.file.".config/spotify-player/app.toml".text = spotifyPlayerAppTomlText; home.file.".config/waybar/config".source = waybarConfigPath + "/config"; diff --git a/users/caperren/dotfiles/hyprland/cap-nr200p/hyprland.conf b/users/caperren/dotfiles/hyprland/cap-nr200p/hyprland.conf new file mode 100644 index 0000000..a32f4a8 --- /dev/null +++ b/users/caperren/dotfiles/hyprland/cap-nr200p/hyprland.conf @@ -0,0 +1,232 @@ +# ####################################################################################### +# AUTOGENERATED HYPR CONFIG. +# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, +# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. +# ####################################################################################### + +# +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +# autogenerated = 1 # remove this line to remove the warning + +# See https://wiki.hyprland.org/Configuring/Monitors/ +#monitor=HDMA-A-1,2560x1440@60, +#monitor=DP-3,2560x1440@60,0x-1440,1 +monitor=DP-2,3440x1440@144,auto,1,vrr,1 +#monitor=HDMI-A-1,2160x1440@60,640x1440,1 +#monitor=Unknown-2,2160x1440@60,950x1440,1 +#monitor=,preferred,auto,1 +#exec-once = xrandr --output DP-2 --primary + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# Set programs that you use +$terminal = kitty +$fileManager = thunar +$menu = wofi --show drun + +# Some default env vars. +env = XCURSOR_SIZE,24 +env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + touchpad { + natural_scroll = no + } + + sensitivity = 0 # -1.0 to 1.0, 0 means no modification. + numlock_by_default = 1 +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 5 + gaps_out = 5 + border_size = 2 + col.active_border = rgba(0D8A1EFF) + col.inactive_border = rgba(595959aa) + + layout = dwindle + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = true +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10 + + blur { + enabled = true + size = 3 + passes = 1 + } + + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + + } + + #drop_shadow = yes + #shadow_range = 4 + #shadow_render_power = 3 +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +#master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +# new_is_master = true +#} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = off +} + +misc { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, T, exec, $terminal +bind = $mainMod, C, killactive, + +# Launch terminal +bind = SHIFT_SUPER, Return, exec, $terminal + +# Close active window +bind = $mainMod, Shift+q, killactive, + +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating, +bind = $mainMod, R, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle + +bind = $mainMod, F, fullscreen + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Volume Keys +bindl=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 2%+ +bindl=, XF86AudioLowerVolume, exec, wpctl set-volume -l 0.0 @DEFAULT_AUDIO_SINK@ 2%- +bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + +# Media Controls +bindl=, XF86AudioPlay, exec, playerctl play-pause +bindl=, XF86AudioPrev, exec, playerctl previous +bindl=, XF86AudioNext, exec, playerctl next + +# Brightness Controls +bind = ,XF86MonBrightnessDown, exec, brightnessctl s 1%- +bind = ,XF86MonBrightnessUp, exec, brightnessctl s +1% + +exec-once = sleep 3 && waybar + +exec-once = sleep 5 && nm-applet +exec-once = sleep 5 && blueman-applet +exec-once = sleep 10 && steam -silent +exec-once = ydotoold & +exec-once = sleep 5 && streamdeck -n +exec-once = kanshi & +exec-once = sleep 5 & telegram-desktop -startintray +; exec-once = swayidle -w timeout 600 "hyprlock" before-sleep "hyprlock" & diff --git a/users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf b/users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf new file mode 100644 index 0000000..bd7cbe2 --- /dev/null +++ b/users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf @@ -0,0 +1,244 @@ +# ####################################################################################### +# AUTOGENERATED HYPR CONFIG. +# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, +# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. +# ####################################################################################### + +# +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +# autogenerated = 1 # remove this line to remove the warning + +# See https://wiki.hyprland.org/Configuring/Monitors/ +#monitor=HDMA-A-1,2560x1440@60, +#monitor=DP-3,2560x1440@60,0x-1440,1 +#monitor=DP-2,3440x1440@144,0x0,1 +# ,vrr,1 +#monitor=HDMI-A-1,2160x1440@60,640x1440,1 +#monitor=HDMI-A-1,3840x2160@60,-3840x0,1 +#monitor=Unknown-2,2160x1440@60,950x1440,1 +monitor=,preferred,auto,1 +# monitor=DP-1,preferred,auto-down,1,transform, 1 +monitor=DP-2,preferred,auto-down,1 +#exec-once = xrandr --output DP-2 --primary + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# Set programs that you use +$terminal = kitty +$fileManager = dolphin +$menu = wofi --show drun + +# Some default env vars. +env = XCURSOR_SIZE,24 +env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + touchpad { + natural_scroll = no + } + + sensitivity = 0 # -1.0 to 1.0, 0 means no modification. + numlock_by_default = 1 +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 5 + gaps_out = 5 + border_size = 2 + col.active_border = rgba(0D8A1EFF) + col.inactive_border = rgba(595959aa) + + layout = dwindle + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = true +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10 + + blur { + enabled = true + size = 3 + passes = 1 + } + + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + + } + + #drop_shadow = yes + #shadow_range = 4 + #shadow_render_power = 3 +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +#master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +# new_is_master = true +#} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = off +} + +misc { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, T, exec, $terminal +bind = $mainMod, C, killactive, + +# Launch terminal +bind = SHIFT_SUPER, Return, exec, $terminal + +# Close active window +bind = $mainMod, Shift+q, killactive, + +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating, +bind = $mainMod, R, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle + +bind = $mainMod, F, fullscreen + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Volume Keys +bindl=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 2%+ +bindl=, XF86AudioLowerVolume, exec, wpctl set-volume -l 0.0 @DEFAULT_AUDIO_SINK@ 2%- +bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + +# Media Controls +bindl=, XF86AudioPlay, exec, playerctl play-pause +bindl=, XF86AudioPrev, exec, playerctl previous +bindl=, XF86AudioNext, exec, playerctl next + +# Brightness Controls +bind = ,XF86MonBrightnessDown, exec, brightnessctl s 1%- +bind = ,XF86MonBrightnessUp, exec, brightnessctl s +1% + +exec-once = sleep 3 && waybar + +exec-once = sleep 5 && nm-applet +exec-once = sleep 5 && blueman-applet +exec-once = ydotoold & +exec-once = sleep 5 && streamdeck -n +exec-once = kanshi & +exec-once = sleep 5 & telegram-desktop -startintray + +# moves the window to x0, y0 on the screen +windowrulev2=move 0 0,class:(flameshot),title:(flameshot) +# shows the window on all workspaces +windowrulev2=pin,class:(flameshot),title:(flameshot) +# tell the application it's in fullscreen mode +windowrulev2=fullscreenstate,class:(flameshot),title:(flameshot) +# force the window to be floating ( not in a tiled pane ) +windowrulev2=float,class:(flameshot),title:(flameshot)