From dd5b4fe5edb6243166832f4f22246ebeec5e2239 Mon Sep 17 00:00:00 2001 From: Odweta Date: Sun, 11 Jan 2026 18:11:54 +0100 Subject: [PATCH] modules step 1 --- env-vars.nix | 7 ++ flake.nix | 13 +++- git.nix | 11 +++ home.nix | 200 ++------------------------------------------------- hyprland.nix | 101 ++++++++++++++++++++++++++ kitty.nix | 80 +++++++++++++++++++++ theme.nix | 62 ++++++++++++++++ vim.nix | 17 +++++ xdg.nix | 12 ++++ 9 files changed, 305 insertions(+), 198 deletions(-) create mode 100644 env-vars.nix create mode 100644 git.nix create mode 100644 hyprland.nix create mode 100644 kitty.nix create mode 100644 theme.nix create mode 100644 vim.nix create mode 100644 xdg.nix diff --git a/env-vars.nix b/env-vars.nix new file mode 100644 index 0000000..204ecaf --- /dev/null +++ b/env-vars.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + environment.variables = { + EDITOR = "vim"; + } +} diff --git a/flake.nix b/flake.nix index c418e37..f3960c0 100644 --- a/flake.nix +++ b/flake.nix @@ -17,13 +17,20 @@ nixosConfigurations."nixos" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ - ./configuration.nix - home-manager.nixosModules.home-manager - { + home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.odweta = import ./home.nix; } + ./configuration.nix # FIXME: MODULARIZE + ./env-vars.nix + ./git.nix + #./hardware-configuration.nix + ./hyprland.nix + ./kitty.nix + ./theme.nix + ./vim.nix + ./xdg.nix ]; }; }; diff --git a/git.nix b/git.nix new file mode 100644 index 0000000..13511fb --- /dev/null +++ b/git.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + programs.git = { + enable = true; + settings.user = { + name = "Odweta"; + email = "code.62rdl@aleeas.com"; + }; + }; +} diff --git a/home.nix b/home.nix index 3f6d2eb..096b519 100644 --- a/home.nix +++ b/home.nix @@ -3,205 +3,15 @@ { home.username = "odweta"; home.homeDirectory = "/home/odweta"; - home.stateVersion = "25.05"; - - home.packages = with pkgs; [ - - ]; - - home.sessionVariables = { - EDITOR = "vim"; - }; - programs.home-manager.enable = true; - wayland.windowManager.hyprland = { - enable = true; - - settings = { - monitor = [ - "HDMI-A-2, 1920x1080@60, 0x0, 1" - "eDP-1, 1920x1080@60, 0x1080, 1" - ]; - - input = { - kb_layout = "us,cz"; - kb_variant = ",qwerty"; - kb_options = "grp:alt_shift_toggle"; - touchpad = { - natural_scroll = true; - }; - }; - - general = { - gaps_in = 5; - gaps_out = 10; - border_size = 2; - layout = "master"; - }; - - master = { - mfact = 0.5; - }; - - decoration = { - rounding = 8; - blur = { - size = 3; - passes = 2; - }; - }; - - misc = { - disable_hyprland_logo = true; - disable_splash_rendering = true; - }; - - "$mod" = "SUPER"; - "$term" = "kitty"; - "$menu" = "wofi --show run"; - - bind = [ - "$mod SHIFT, RETURN, exec, $term" - "$mod SHIFT, C, killactive" - "$mod SHIFT, Q, exit" - "$mod, P, exec, $menu" - - "$mod, mouse:272, movewindow" - - "$mod, H, movefocus, l" - "$mod, J, movefocus, r" - "$mod, K, movefocus, u" - "$mod, L, movefocus, d" - - "$mod, 1, workspace, 1" - "$mod, 2, workspace, 2" - "$mod, 3, workspace, 3" - "$mod, 4, workspace, 4" - - "$mod SHIFT, 1, movetoworkspace, 1" - "$mod SHIFT, 2, movetoworkspace, 2" - "$mod SHIFT, 3, movetoworkspace, 3" - "$mod SHIFT, 4, movetoworkspace, 4" - ]; - }; - }; - - programs.wofi.enable = true; - - programs.kitty = { - enable = true; - - package = pkgs.kitty; - - font = { - name = "Hurmit Nerd Font Mono"; - size = 16.0; - }; - - settings = { - # Performance / rendering - enable_audio_bell = "no"; - repaint_delay = 10; - input_delay = 1; - sync_to_monitor = "yes"; - - # Wayland - wayland_enable_ime = "yes"; - linux_display_server = "wayland"; - - # Clipboard - clipboard_control = "write-clipboard write-primary read-clipboard"; - - # Cursor - cursor_shape = "block"; - cursor_blink_interval = 0; - - # Scrollback - scrollback_lines = 10000; - - # Window - remember_window_size = "yes"; - initial_window_width = "100c"; - initial_window_height = "30c"; - confirm_os_window_close = 0; - - # Tabs - tab_bar_style = "powerline"; - tab_powerline_style = "slanted"; - active_tab_font_style = "bold"; - inactive_tab_font_style = "normal"; - - # Shell - shell = "${pkgs.bash}/bin/bash"; - - # Colors (example dark) - background = "#0f111a"; - foreground = "#c0caf5"; - selection_background = "#33467c"; - selection_foreground = "#ffffff"; - }; - - keybindings = { - "ctrl+shift+enter" = "new_window"; - "ctrl+shift+t" = "new_tab"; - "ctrl+shift+w" = "close_tab"; - "ctrl+shift+right" = "next_tab"; - "ctrl+shift+left" = "previous_tab"; - "ctrl+shift+up" = "increase_font_size"; - "ctrl+shift+down" = "decrease_font_size"; - "ctrl+shift+c" = "copy_to_clipboard"; - "ctrl+shift+v" = "paste_from_clipboard"; - }; - - extraConfig = '' - # Disable ligatures selectively (example) - disable_ligatures never - - # URL hints - map ctrl+shift+u kitten hints - - # Truecolor fix - term xterm-kitty + home.file = { + ".bashrc".text = '' + ''; }; - programs.vim = { - enable = true; - plugins = with pkgs.vimPlugins; [ vim-airline ]; - settings = { ignorecase = true; }; - extraConfig = '' - set sw=2 - set ts=2 - set et - set smartindent - set number - syntax on - ''; - }; - - programs.git = { - enable = true; - settings.user = { - name = "Odweta"; - email = "code.62rdl@aleeas.com"; - }; - }; - - gtk = { - enable = true; - theme.name = "adw-gtk3"; - cursorTheme.name = "Bibata-Modern-Ice"; - iconTheme.name = "GruvboxPlus"; - }; - - xdg.mimeApps.defaultApplications = { - "text/plain" = [ "neovide.desktop" ]; - "applications/pdf" = [ "zathura.desktop" ]; - "image/*" = [ "sxiv.desktop" ]; - "video/png" = [ "mpv.desktop" ]; - "video/jpg" = [ "mpv.desktop" ]; - "video/*" = [ "mpv.desktop" ]; - }; + #home.packages = with pkgs; [ + #]; } diff --git a/hyprland.nix b/hyprland.nix new file mode 100644 index 0000000..bc58b90 --- /dev/null +++ b/hyprland.nix @@ -0,0 +1,101 @@ +{ pkgs, ... }: + +{ + # program enables + programs.hyprland = { + enable = true; + withUSWM = true; + }; + programs.hyprlock.enable = true; + programs.hypridle.enable = true; + programs.wofi.enable = true; + + # some env vars for improvement + environment.sessionVariables = { + NIXOS_OZONE_WL = "1"; + WLR_NO_HARDWARE_CURSORS = "1"; + }; + + # hypr packages + environment.systemPackages = with pkgs; [ + hyprland + hypridle + hyprlock + hyprpaper + hyprpolkitagent + hyprcursor + ]; + + # hyprland config + wayland.windowManager.hyprland = { + enable = true; + + settings = { + monitor = [ + "HDMI-A-2, 1920x1080@60, 0x0, 1" + "eDP-1, 1920x1080@60, 0x1080, 1" + ]; + + input = { + kb_layout = "us,cz"; + kb_variant = ",qwerty"; + kb_options = "grp:alt_shift_toggle"; + touchpad = { + natural_scroll = true; + }; + }; + + general = { + gaps_in = 5; + gaps_out = 10; + border_size = 2; + layout = "master"; + }; + + master = { + mfact = 0.5; + }; + + decoration = { + rounding = 8; + blur = { + size = 3; + passes = 2; + }; + }; + + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + }; + + "$mod" = "SUPER"; + "$term" = "kitty"; + "$menu" = "wofi --show run"; + + bind = [ + "$mod SHIFT, RETURN, exec, $term" + "$mod SHIFT, C, killactive" + "$mod SHIFT, Q, exit" + "$mod, P, exec, $menu" + + "$mod, mouse:272, movewindow" + + "$mod, H, movefocus, l" + "$mod, J, movefocus, r" + "$mod, K, movefocus, u" + "$mod, L, movefocus, d" + + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + + "$mod SHIFT, 1, movetoworkspace, 1" + "$mod SHIFT, 2, movetoworkspace, 2" + "$mod SHIFT, 3, movetoworkspace, 3" + "$mod SHIFT, 4, movetoworkspace, 4" + ]; + }; + }; +} diff --git a/kitty.nix b/kitty.nix new file mode 100644 index 0000000..cdffa81 --- /dev/null +++ b/kitty.nix @@ -0,0 +1,80 @@ +{ pkgs, ... }: + +{ + programs.kitty = { + enable = true; + + package = pkgs.kitty; + + font = { + name = "Hurmit Nerd Font Mono"; + size = 16.0; + }; + + settings = { + # Performance / rendering + enable_audio_bell = "no"; + repaint_delay = 10; + input_delay = 1; + sync_to_monitor = "yes"; + + # Wayland + wayland_enable_ime = "yes"; + linux_display_server = "wayland"; + + # Clipboard + clipboard_control = "write-clipboard write-primary read-clipboard"; + + # Cursor + cursor_shape = "block"; + cursor_blink_interval = 0; + + # Scrollback + scrollback_lines = 10000; + + # Window + remember_window_size = "yes"; + initial_window_width = "100c"; + initial_window_height = "30c"; + confirm_os_window_close = 0; + + # Tabs + tab_bar_style = "powerline"; + tab_powerline_style = "slanted"; + active_tab_font_style = "bold"; + inactive_tab_font_style = "normal"; + + # Shell + shell = "${pkgs.bash}/bin/bash"; + + # Colors (example dark) + background = "#0f111a"; + foreground = "#c0caf5"; + selection_background = "#33467c"; + selection_foreground = "#ffffff"; + }; + + keybindings = { + "ctrl+shift+enter" = "new_window"; + "ctrl+shift+t" = "new_tab"; + "ctrl+shift+w" = "close_tab"; + "ctrl+shift+right" = "next_tab"; + "ctrl+shift+left" = "previous_tab"; + "ctrl+shift+up" = "increase_font_size"; + "ctrl+shift+down" = "decrease_font_size"; + "ctrl+shift+c" = "copy_to_clipboard"; + "ctrl+shift+v" = "paste_from_clipboard"; + }; + + extraConfig = '' + # Disable ligatures selectively (example) + disable_ligatures never + + # URL hints + map ctrl+shift+u kitten hints + + # Truecolor fix + term xterm-kitty + ''; + }; +} diff --git a/theme.nix b/theme.nix new file mode 100644 index 0000000..4d0345a --- /dev/null +++ b/theme.nix @@ -0,0 +1,62 @@ +{ pkgs, ... }: + +{ +# Enable Theme + environment.variables.GTK_THEME = "catppuccin-macchiato-teal-standard"; + environment.variables.XCURSOR_THEME = "Catppuccin-Macchiato-Teal"; + environment.variables.XCURSOR_SIZE = "24"; + environment.variables.HYPRCURSOR_THEME = "Catppuccin-Macchiato-Teal"; + environment.variables.HYPRCURSOR_SIZE = "24"; + qt.enable = true; + qt.platformTheme = "gtk2"; + qt.style = "gtk2"; + console = { + earlySetup = true; + colors = [ + "24273a" + "ed8796" + "a6da95" + "eed49f" + "8aadf4" + "f5bde6" + "8bd5ca" + "cad3f5" + "5b6078" + "ed8796" + "a6da95" + "eed49f" + "8aadf4" + "f5bde6" + "8bd5ca" + "a5adcb" + ]; + }; + + # Override packages + nixpkgs.config.packageOverrides = pkgs: { + colloid-icon-theme = pkgs.colloid-icon-theme.override { colorVariants = ["teal"]; }; + catppuccin-gtk = pkgs.catppuccin-gtk.override { + accents = [ "teal" ]; # You can specify multiple accents here to output multiple themes + size = "standard"; + variant = "macchiato"; + }; + discord = pkgs.discord.override { + withOpenASAR = true; + withTTS = true; + }; + }; + + environment.systemPackages = with pkgs; [ + numix-icon-theme-circle + colloid-icon-theme + catppuccin-gtk + catppuccin-kvantum + catppuccin-cursors.macchiatoTeal + + # gnome.gnome-tweaks + # gnome.gnome-shell + # gnome.gnome-shell-extensions + # xsettingsd + # themechanger + ]; +} diff --git a/vim.nix b/vim.nix new file mode 100644 index 0000000..4d043c3 --- /dev/null +++ b/vim.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: + +{ + programs.vim = { + enable = true; + plugins = with pkgs.vimPlugins; [ vim-airline ]; + settings = { ignorecase = true; }; + extraConfig = '' + set sw=2 + set ts=2 + set et + set smartindent + set number + syntax on + ''; + }; +} diff --git a/xdg.nix b/xdg.nix new file mode 100644 index 0000000..ca8473e --- /dev/null +++ b/xdg.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +{ + xdg.mimeApps.defaultApplications = { + "text/plain" = [ "neovide.desktop" ]; + "applications/pdf" = [ "zathura.desktop" ]; + "image/*" = [ "sxiv.desktop" ]; + "video/png" = [ "mpv.desktop" ]; + "video/jpg" = [ "mpv.desktop" ]; + "video/*" = [ "mpv.desktop" ]; + }; +}