commit 3add673455a0b04f0e5bc65a8423f9b987712fee Author: Lukrecja Date: Thu Dec 11 17:17:21 2025 +0100 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a915de0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,52 @@ +blender/ +cava/ +Code/ +composer/ +dconf/ +environment.d/ +filezilla/ +forge/ +gdu/ +GIMP/ +git/ +go/ +gpu-screen-recorder/ +gtk-*.0/ +htop/ +hypr/ +lazygit/ +libreoffice/ +matplotlib/ +matugen/ +monero-project/ +mpv/ +nautilus/ +noctalia/plugins/ +obs-studio/ +OpenTabletDriver/ +procps/ +pulse/ +qBittorrent/ +qt*ct/ +revolution-pi-deployer/ +stylix/ +swww/ +systemd/ +Vencord/ +vlc/ +wal/ +wallust/ +kleopatrarc +kritadisplayrc +kritarc +QtProject.conf + +# Files generated by theme change +swww/current-wallpaper +noctalia/colors.json +home-manager/wallpaper +home-manager/colors.yaml +nvim/lua/themes/ +kitty/themes/ +kitty/colors.conf +kitty/current-theme.conf diff --git a/autostart/stylix-activate-gnome.desktop b/autostart/stylix-activate-gnome.desktop new file mode 120000 index 0000000..dc06c05 --- /dev/null +++ b/autostart/stylix-activate-gnome.desktop @@ -0,0 +1 @@ +/nix/store/vmvp8zz4lmsc9shdbcwkds15ra7jp38q-home-manager-files/.config/autostart/stylix-activate-gnome.desktop \ No newline at end of file diff --git a/autostart/stylix-activate-kde.desktop b/autostart/stylix-activate-kde.desktop new file mode 120000 index 0000000..72ab976 --- /dev/null +++ b/autostart/stylix-activate-kde.desktop @@ -0,0 +1 @@ +/nix/store/vmvp8zz4lmsc9shdbcwkds15ra7jp38q-home-manager-files/.config/autostart/stylix-activate-kde.desktop \ No newline at end of file diff --git a/btop/btop.conf b/btop/btop.conf new file mode 100644 index 0000000..ce7a5dd --- /dev/null +++ b/btop/btop.conf @@ -0,0 +1,257 @@ +#? Config file for btop v. 1.4.5 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "Default" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = True + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = True + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = False + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = False + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = True + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". +graph_symbol_gpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. +shown_boxes = "mem proc cpu net" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 500 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "cpu direct" + +#* Reverse sorting order, True or False. +proc_reversed = False + +#* Show processes as a tree. +proc_tree = False + +#* Use the cpu graph colors in the process list. +proc_colors = True + +#* Use a darkening gradient in the process list. +proc_gradient = True + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = False + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = True + +#* Show cpu graph for each process. +proc_cpu_graphs = True + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = False + +#* Show proc box on left side of screen instead of right. +proc_left = False + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = False + +#* In tree-view, always accumulate child process resources in the parent process. +proc_aggregate = False + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "Auto" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "Auto" + +#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". +show_gpu_info = "Auto" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = True + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = False + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = False + +#* Shows the system uptime in the CPU box. +show_uptime = True + +#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo. +show_cpu_watts = True + +#* Show cpu temperature. +check_temp = True + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = True + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = False + +#* Show CPU frequency. +show_cpu_freq = True + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = True + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user" +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = True + +#* Show mem box below net box instead of above. +mem_below_net = False + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = True + +#* If swap memory should be shown in memory box. +show_swap = True + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = True + +#* If mem box should be split to also show disks info. +show_disks = True + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = True + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = True + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = False + +#* Set to true to show available disk space for privileged users. +disk_free_priv = False + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = True + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = False + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = False + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = True + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = True + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes. +base_10_bitrate = "Auto" + +#* Show battery stats in top right if battery is present. +show_battery = True + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Show power stats of battery next to charge indicator. +show_battery_watts = True + +#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" + +#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. +nvml_measure_pcie_speeds = True + +#* Measure PCIe throughput on AMD cards, may impact performance on certain cards. +rsmi_measure_pcie_speeds = True + +#* Horizontally mirror the GPU graph. +gpu_mirror_graph = True + +#* Custom gpu0 model name, empty string to disable. +custom_gpu_name0 = "" + +#* Custom gpu1 model name, empty string to disable. +custom_gpu_name1 = "" + +#* Custom gpu2 model name, empty string to disable. +custom_gpu_name2 = "" + +#* Custom gpu3 model name, empty string to disable. +custom_gpu_name3 = "" + +#* Custom gpu4 model name, empty string to disable. +custom_gpu_name4 = "" + +#* Custom gpu5 model name, empty string to disable. +custom_gpu_name5 = "" diff --git a/ccstatusline/settings.json b/ccstatusline/settings.json new file mode 100644 index 0000000..f7803d4 --- /dev/null +++ b/ccstatusline/settings.json @@ -0,0 +1,64 @@ +{ + "version": 3, + "lines": [ + [ + { + "id": "3", + "type": "context-length", + "color": "ansi256:1" + }, + { + "id": "ef82dd4e-d238-4b4a-a40e-f78eb797dd75", + "type": "context-percentage", + "color": "ansi256:2", + "bold": false + }, + { + "id": "5", + "type": "git-branch", + "color": "ansi256:3" + }, + { + "id": "7", + "type": "git-changes", + "color": "ansi256:4" + }, + { + "id": "6ed16cdd-0125-4a2b-90eb-bd9054c56105", + "type": "block-timer", + "color": "ansi256:10", + "bold": false + }, + { + "id": "70de37e7-ab8d-4314-aa3f-927f15cf8e7a", + "type": "session-cost", + "color": "ansi256:6" + } + ], + [], + [] + ], + "flexMode": "full-minus-40", + "compactThreshold": 60, + "colorLevel": 2, + "defaultPadding": " ", + "inheritSeparatorColors": false, + "globalBold": false, + "powerline": { + "enabled": false, + "separators": [ + "" + ], + "separatorInvertBackground": [ + false + ], + "startCaps": [ + "" + ], + "endCaps": [ + "" + ], + "theme": "custom", + "autoAlign": false + } +} \ No newline at end of file diff --git a/fastfetch/config.jsonc b/fastfetch/config.jsonc new file mode 100644 index 0000000..c8b1162 --- /dev/null +++ b/fastfetch/config.jsonc @@ -0,0 +1,50 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "source": "/home/lusia/.config/fastfetch/logo.jpg", + "type": "kitty", + "width": 22, + "height": 11 + }, + "display": { + "separator": " ", + "color": { + "keys": "magenta" + }, + "size": { + "ndigits": 0, + "maxPrefix": "MB" + }, + "key": { + "type": "icon" + } + }, + "modules": [ + "break", + { + "type": "title", + "color": { + "user": "green", + "at": "red", + "host": "blue" + } + }, + "os", + "kernel", + "shell", + "terminal", + "wm", + "cpu", + "memory", + "packages", + "uptime", + { + "type": "colors", + "key": "Colors", + "symbol": "circle", + "block": { + "range": [1, 6] + } + } + ] +} diff --git a/fastfetch/logo.jpg b/fastfetch/logo.jpg new file mode 100644 index 0000000..dfdd931 Binary files /dev/null and b/fastfetch/logo.jpg differ diff --git a/fish/config.fish b/fish/config.fish new file mode 100644 index 0000000..6208f25 --- /dev/null +++ b/fish/config.fish @@ -0,0 +1,15 @@ +if status is-interactive + # Commands to run in interactive sessions can go here +end + +function fish_greeting + set_color --bold magenta + echo "₊˚✧ 𝔀𝓮𝓵𝓬𝓸𝓶𝓮 𝓽𝓸 𝓯𝓲𝓼𝓱 ✧˚₊" + set_color --dim magenta + echo -n "♡ " + set_color --italic white + echo -n "\"Something tells me everything is not going to be fine.\" " + set_color --dim magenta + echo "- Twilight Sparkle ♡" + set_color normal +end diff --git a/fish/fish_variables b/fish/fish_variables new file mode 100644 index 0000000..e09f136 --- /dev/null +++ b/fish/fish_variables @@ -0,0 +1,32 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3800 +SETUVAR fish_color_autosuggestion:brblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:blue +SETUVAR fish_color_comment:red +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:green +SETUVAR fish_color_error:brred +SETUVAR fish_color_escape:brcyan +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:brcyan +SETUVAR fish_color_param:cyan +SETUVAR fish_color_quote:yellow +SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold +SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:normal +SETUVAR fish_pager_color_description:yellow\x1e\x2di +SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan +SETUVAR fish_pager_color_selected_background:\x2dr +SETUVAR fish_user_paths:/home/lusia/\x2ecargo/bin/ diff --git a/fish/functions/hm-switch.fish b/fish/functions/hm-switch.fish new file mode 100644 index 0000000..2e7c5c6 --- /dev/null +++ b/fish/functions/hm-switch.fish @@ -0,0 +1,4 @@ +function hm-switch --wraps='nix flake update --flake ~/.config/home-manager && nh home switch ~/.config/home-manager' --wraps='nh home switch ~/.config/home-manager' --description 'alias hm-switch=nh home switch ~/.config/home-manager' + nh home switch ~/.config/home-manager $argv + +end diff --git a/fish/functions/hm-update.fish b/fish/functions/hm-update.fish new file mode 100644 index 0000000..43a418f --- /dev/null +++ b/fish/functions/hm-update.fish @@ -0,0 +1,4 @@ +function hm-update --wraps='nix flake update --flake ~/.config/home-manager && nh home switch ~/.config/home-manager' --description 'alias hm-update=nix flake update --flake ~/.config/home-manager && nh home switch ~/.config/home-manager' + nix flake update --flake ~/.config/home-manager && nh home switch ~/.config/home-manager $argv + +end diff --git a/fish/functions/os-switch.fish b/fish/functions/os-switch.fish new file mode 100644 index 0000000..bf81dc6 --- /dev/null +++ b/fish/functions/os-switch.fish @@ -0,0 +1,3 @@ +function os-switch --wraps='nh os switch /home/lusia/.config/nixos' --description 'alias os-switch=nh os switch /home/lusia/.config/nixos' + nh os switch /home/lusia/.config/nixos $argv +end diff --git a/fish/functions/os-update.fish b/fish/functions/os-update.fish new file mode 100644 index 0000000..480bbaa --- /dev/null +++ b/fish/functions/os-update.fish @@ -0,0 +1,3 @@ +function os-update --wraps='sudo nix flake update --flake /home/lusia/.config/nixos && nh os switch /home/lusia/.config/nixos' --description 'alias os-update=sudo nix flake update --flake /home/lusia/.config/nixos && nh os switch /home/lusia/.config/nixos' + sudo nix flake update --flake /home/lusia/.config/nixos && nh os switch /home/lusia/.config/nixos $argv +end diff --git a/fish/functions/wl.fish b/fish/functions/wl.fish new file mode 100644 index 0000000..3d64209 --- /dev/null +++ b/fish/functions/wl.fish @@ -0,0 +1,4 @@ +function wl --wraps='bash sync-colors.sh' --wraps='bash /home/lusia/Downloads/sync-colors.sh' --description 'alias wl=bash /home/lusia/Downloads/sync-colors.sh' + bash /home/lusia/Downloads/sync-colors.sh $argv + +end diff --git a/home-manager/flake.lock b/home-manager/flake.lock new file mode 100644 index 0000000..589d5ad --- /dev/null +++ b/home-manager/flake.lock @@ -0,0 +1,407 @@ +{ + "nodes": { + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1754405784, + "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1760703920, + "narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "d646af9b7d14bff08824538164af99d0c521b185", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1764724327, + "narHash": "sha256-OkFLrD3pFR952TrjQi1+Vdj604KLcMnkpa7lkW7XskI=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "66b7c635763d8e6eb86bd766de5a1e1fbfcc1047", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1763759067, + "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "host": "gitlab.gnome.org", + "lastModified": 1764524476, + "narHash": "sha256-bTmNn3Q4tMQ0J/P0O5BfTQwqEnCiQIzOGef9/aqAZvk=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "c0e1ad9f0f703fd0519033b8f46c3267aab51a22", + "type": "gitlab" + }, + "original": { + "host": "gitlab.gnome.org", + "owner": "GNOME", + "ref": "gnome-49", + "repo": "gnome-shell", + "type": "gitlab" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765461410, + "narHash": "sha256-AVZ1y5tfTGqf5zJx6uY52KHN2pP9gGF9RMQ3meBVKIg=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "7b34e428f31ce52baabda53e52bf14002e1c0625", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1765186076, + "narHash": "sha256-hM20uyap1a0M9d344I692r+ik4gTMyj60cQWO+hAYP8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "addf7cf5f383a3101ecfba091b98d0a1263dc9b8", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "noctalia": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765420707, + "narHash": "sha256-lX0WxWosQbm3DrZhscVTiLLpJcoZvaQaZoP+eNt75wE=", + "owner": "noctalia-dev", + "repo": "noctalia-shell", + "rev": "298b2f5c794d4641cde21cf20422224bf8a60f99", + "type": "github" + }, + "original": { + "owner": "noctalia-dev", + "repo": "noctalia-shell", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": [ + "stylix", + "flake-parts" + ], + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764773531, + "narHash": "sha256-mCBl7MD1WZ7yCG6bR9MmpPO2VydpNkWFgnslJRIT1YU=", + "owner": "nix-community", + "repo": "NUR", + "rev": "1d9616689e98beded059ad0384b9951e967a17fa", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764663772, + "narHash": "sha256-sHqLmm0wAt3PC4vczJeBozI1/f4rv9yp3IjkClHDXDs=", + "owner": "outfoxxed", + "repo": "quickshell", + "rev": "26531fc46ef17e9365b03770edd3fb9206fcb460", + "type": "github" + }, + "original": { + "owner": "outfoxxed", + "repo": "quickshell", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "noctalia": "noctalia", + "quickshell": "quickshell", + "rust-overlay": "rust-overlay", + "stylix": "stylix" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765465581, + "narHash": "sha256-fCXT0aZXmTalM3NPCTedVs9xb0egBG5BOZkcrYo5PGE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "99cc5667eece98bb35dcf35f7e511031a8b7a125", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-parts": "flake-parts", + "gnome-shell": "gnome-shell", + "nixpkgs": [ + "nixpkgs" + ], + "nur": "nur", + "systems": "systems", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1765386911, + "narHash": "sha256-YLjQpnTZCMjCho7ZDs5O1yFVw+fDlXq4lSJDuLWHHeA=", + "owner": "nix-community", + "repo": "stylix", + "rev": "cb6bbed75eaca21deb8950c2ec0036ae5cde18ca", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "stylix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tinted-foot": { + "flake": false, + "locked": { + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "type": "github" + } + }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1763914658, + "narHash": "sha256-Hju0WtMf3iForxtOwXqGp3Ynipo0EYx1AqMKLPp9BJw=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "0f6be815d258e435c9b137befe5ef4ff24bea32c", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1764465359, + "narHash": "sha256-lbSVPqLEk2SqMrnpvWuKYGCaAlfWFMA6MVmcOFJjdjE=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "edf89a780e239263cc691a987721f786ddc4f6aa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1764464512, + "narHash": "sha256-rCD/pAhkMdCx6blsFwxIyvBJbPZZ1oL2sVFrH07lmqg=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "907dbba5fb8cf69ebfd90b00813418a412d0a29a", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/home-manager/flake.nix b/home-manager/flake.nix new file mode 100644 index 0000000..d951398 --- /dev/null +++ b/home-manager/flake.nix @@ -0,0 +1,50 @@ +{ + description = "Home Manager configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + quickshell = { + url = "github:outfoxxed/quickshell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + noctalia = { + url = "github:noctalia-dev/noctalia-shell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + rust-overlay = { + url = "github:oxalica/rust-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + stylix = { + url = "github:nix-community/stylix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { nixpkgs, home-manager, rust-overlay, stylix, ... }@inputs: { + homeConfigurations.lusia = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.x86_64-linux; + + modules = [ + stylix.homeModules.stylix + ./noctalia.nix + ./home.nix + ({ pkgs, ... }: { + nixpkgs.overlays = [ rust-overlay.overlays.default ]; + home.packages = [ pkgs.rustup ]; + }) + ]; + + extraSpecialArgs = { inherit inputs; }; + }; + }; +} diff --git a/home-manager/home.nix b/home-manager/home.nix new file mode 100644 index 0000000..8b177be --- /dev/null +++ b/home-manager/home.nix @@ -0,0 +1,211 @@ +{ config, pkgs, inputs, ... }: + +{ + home.username = "lusia"; + home.homeDirectory = "/home/lusia"; + home.stateVersion = "24.11"; + + nixpkgs.config.allowUnfree = true; + + home.packages = with pkgs; [ + niri + btop + ripgrep + firefox-bin + claude-code + yazi + fastfetch + pywalfox-native + nautilus + loupe + gnome-text-editor + gnome-calculator + evince + vlc + p7zip + unzip + zip + unrar + file-roller + morewaita-icon-theme + codex + neovim + cargo-cross + filezilla + swayidle + python314 + sshpass + dua + nh + nmap + lazygit + mpv + libreoffice-fresh + qbittorrent + gimp + mdcat + htop + vscode.fhs + blender + yt-dlp + ffmpeg + tor-browser + kdePackages.kleopatra + monero-gui + gnupg + pinentry-qt + libheif + exiftool + gnome-network-displays + dconf + jq + pywal + fd + openai-whisper + gparted + swww + tectonic + zathura + entr + waifu2x-converter-cpp + gnome-software + mission-center + kanshi + + # Wrap PrismLauncher to fix Minecraft GLFW Wayland issues + (pkgs.symlinkJoin { + name = "prismlauncher"; + paths = [ pkgs.prismlauncher ]; + buildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/prismlauncher \ + --set SDL_VIDEODRIVER "x11" + ''; + }) + + # Wrap Krita to work with XWayland (Krita doesn't support native Wayland) + (pkgs.symlinkJoin { + name = "krita"; + paths = [ pkgs.krita ]; + buildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/krita \ + --set DISPLAY ":0" \ + --set QT_AUTO_SCREEN_SCALE_FACTOR "0" \ + --set QT_SCALE_FACTOR "2" \ + --set QT_FONT_DPI "96" + ''; + }) + ]; + + # Set dark mode and Nautilus preferences + dconf = { + enable = true; + settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + }; + "org/gnome/nautilus/preferences" = { + show-image-thumbnails = "always"; + }; + }; + }; + # Set morewaita as the default icon theme + gtk = { + enable = true; + + iconTheme = { + name = "MoreWaita"; + package = pkgs.morewaita-icon-theme; + }; + + # Stylix manages theme, commenting out manual config + # theme = { + # name = "Adwaita-dark"; + # package = pkgs.gnome-themes-extra; + # }; + + cursorTheme = { + name = "Adwaita"; + package = pkgs.adwaita-icon-theme; + }; + + # Force dark mode preference for GTK3 + gtk3.extraConfig = { + gtk-application-prefer-dark-theme = 1; + }; + + # Force dark mode preference for GTK4 + gtk4.extraConfig = { + gtk-application-prefer-dark-theme = 1; + }; + }; + + home.pointerCursor = { + name = "Adwaita"; + package = pkgs.adwaita-icon-theme; + size = 24; + gtk.enable = true; + x11 = { + enable = true; + defaultCursor = "Adwaita"; + }; + }; + + qt = { + enable = true; + platformTheme.name = "adwaita"; + style = { + name = "adwaita-dark"; + }; + }; + + # Enable and configure git + programs.git = { + enable = true; + settings = { + user.name = "Lukrecja"; + user.email = "lusiaaa425@gmail.com"; + credential.helper = "store"; + }; + }; + + # Configure GPG agent with pinentry + services.gpg-agent = { + enable = true; + pinentry.package = pkgs.pinentry-qt; + enableSshSupport = true; + }; + + # OBS with plugins + programs.obs-studio = { + enable = true; + + plugins = with pkgs.obs-studio-plugins; [ + wlrobs + obs-backgroundremoval + obs-pipewire-audio-capture + obs-vaapi + ]; + }; + + programs.home-manager.enable = true; + + # Stylix theming + stylix = { + enable = true; + + # Wallpaper required by Stylix (even though we use swww to actually display it) + image = ./wallpaper; + + # Use pywal's color scheme instead of extracting from image + # sync-colors.sh will generate colors.yaml here + base16Scheme = ./colors.yaml; + + # Use dark mode + polarity = "dark"; + + # Disable Qt theming (it's janky and doesn't apply everywhere) + # targets.qt.enable = false; + }; +} diff --git a/home-manager/noctalia.nix b/home-manager/noctalia.nix new file mode 100644 index 0000000..88025e2 --- /dev/null +++ b/home-manager/noctalia.nix @@ -0,0 +1,18 @@ +{ pkgs, inputs, ... }: +{ + # import the home manager module + #imports = [ + # inputs.noctalia.homeModules.default + #]; + + # Install the package + home.packages = [ + inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default + inputs.quickshell.packages.${pkgs.stdenv.hostPlatform.system}.default + ]; + + # configure options + #programs.noctalia-shell = { + # enable = true; + #}; +} diff --git a/kanshi/apply-wallpaper.sh b/kanshi/apply-wallpaper.sh new file mode 100755 index 0000000..119e696 --- /dev/null +++ b/kanshi/apply-wallpaper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +sleep 0.5 +WALLPAPER=$(cat ~/.config/swww/current-wallpaper 2>/dev/null) +if [ -n "$WALLPAPER" ] && [ -f "$WALLPAPER" ]; then + swww img "$WALLPAPER" +fi diff --git a/kanshi/config b/kanshi/config new file mode 100644 index 0000000..1b926fb --- /dev/null +++ b/kanshi/config @@ -0,0 +1,15 @@ +profile laptop { + output eDP-1 enable + exec ~/.config/kanshi/apply-wallpaper.sh +} + +profile laptop_and_hdmi { + output eDP-1 enable + output HDMI-A-1 enable + exec ~/.config/kanshi/apply-wallpaper.sh +} + +profile { + output "*" + exec ~/.config/kanshi/apply-wallpaper.sh +} diff --git a/kitty/kitty.conf b/kitty/kitty.conf new file mode 100644 index 0000000..cf957b2 --- /dev/null +++ b/kitty/kitty.conf @@ -0,0 +1,25 @@ +# Kitty Configuration +# Include pywal colors +include ~/.cache/wal/colors-kitty.conf + +# new tab in the same dir +map kitty_mod+t new_tab_with_cwd +# remove more text at once with ctrl+backspace +map ctrl+backspace send_text all \x17 +# fixes mod+q not exiting the terminal instantly +confirm_os_window_close 0 + +# BEGIN_KITTY_THEME +# Noctalia +#include current-theme.conf +# END_KITTY_THEME + + +# BEGIN_KITTY_FONTS +font_family family="FiraCode Nerd Font" +bold_font auto +italic_font auto +bold_italic_font auto +# END_KITTY_FONTS + +# background_opacity 0.95 diff --git a/mimeapps.list b/mimeapps.list new file mode 100644 index 0000000..4d4687f --- /dev/null +++ b/mimeapps.list @@ -0,0 +1,17 @@ +[Added Associations] +application/gzip=org.gnome.FileRoller.desktop;org.gnome.Evince.desktop; +text/markdown=org.gnome.TextEditor.desktop; +image/jpeg=org.gnome.Loupe.desktop; +image/png=org.gnome.Loupe.desktop; +text/plain=org.gnome.TextEditor.desktop; +image/heif=org.gnome.Loupe.desktop; +application/pdf=org.pwmt.zathura-pdf-mupdf.desktop; + +[Default Applications] +text/markdown=org.gnome.TextEditor.desktop +image/jpeg=org.gnome.Loupe.desktop +image/png=org.gnome.Loupe.desktop +text/plain=org.gnome.TextEditor.desktop +image/heif=org.gnome.Loupe.desktop +x-scheme-handler/discord-1216669957799018608=discord-1216669957799018608.desktop +application/pdf=org.pwmt.zathura-pdf-mupdf.desktop diff --git a/niri/config.kdl b/niri/config.kdl new file mode 100644 index 0000000..14bdbc1 --- /dev/null +++ b/niri/config.kdl @@ -0,0 +1,293 @@ +layout { + gaps 5 + background-color "transparent" + always-center-single-column + center-focused-column "never" + + preset-column-widths { + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + + default-column-width { proportion 0.5; } + + focus-ring { + // off + width 1 + active-color "#ffffff33" + } + + border { + off + width 1 + active-color "#555" + inactive-color "#222" + } + + shadow { + off + softness 20 + spread 5 + offset x=0 y=5 + } + + tab-indicator { + width 2 + gap -5 + gaps-between-tabs 5 + corner-radius 10 + active-color "#fff" + inactive-color "#ffffff55" + } + + insert-hint { + color "#ffffff22" + } +} + +//cursor { +// xcursor-theme "Plasma-Overdose" +// xcursor-size 64 +//} + +prefer-no-csd + +screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" + +layer-rule { + match namespace="^swww-daemon$" + place-within-backdrop true +} + +overview { + workspace-shadow { + off + } +} + +animations { + window-open { + spring damping-ratio=1.0 stiffness=700 epsilon=0.0001 + } + window-close { + spring damping-ratio=1.0 stiffness=700 epsilon=0.1 + } + window-resize { + spring damping-ratio=1.0 stiffness=800 epsilon=0.001 + } + window-movement { + spring damping-ratio=1.0 stiffness=600 epsilon=0.0001 + } + workspace-switch { + spring damping-ratio=1.0 stiffness=800 epsilon=0.00001 + } + horizontal-view-movement { + spring damping-ratio=1.0 stiffness=700 epsilon=0.0001 + } +} + +// Open the Firefox picture-in-picture player as floating by default. +window-rule { + match app-id=r#"firefox$"# title="^Picture-in-Picture$" + open-floating true +} + +// Example: enable rounded corners for all windows. +window-rule { + geometry-corner-radius 20 + clip-to-geometry true +} + +window-rule { + geometry-corner-radius 20 + clip-to-geometry true +} + +window-rule { + match app-id="kitty" + opacity 0.9 +} + +window-rule { + match app-id="code" + opacity 0.95 +} + +layer-rule { + match namespace="^quickshell-overview$" +} + +binds { + // Core Noctalia binds + Mod+Space { spawn "noctalia-shell" "ipc" "call" "launcher" "toggle"; } + Mod+S { spawn "noctalia-shell" "ipc" "call" "sidePanel" "toggle"; } + Mod+Comma { spawn "noctalia-shell" "ipc" "call" "settings" "toggle"; } + + // Audio controls + XF86AudioRaiseVolume { spawn "noctalia-shell" "ipc" "call" "volume" "increase"; } + XF86AudioLowerVolume { spawn "noctalia-shell" "ipc" "call" "volume" "decrease"; } + XF86AudioMute { spawn "noctalia-shell" "ipc" "call" "volume" "muteOutput"; } + + // Brightness controls + XF86MonBrightnessUp { spawn "noctalia-shell" "ipc" "call" "brightness" "increase"; } + XF86MonBrightnessDown { spawn "noctalia-shell" "ipc" "call" "brightness" "decrease"; } + + // Utility shortcuts + //Mod+V { spawn "noctalia-shell" "ipc" "call" "launcher" "clipboard"; } + //Mod+C { spawn "noctalia-shell" "ipc" "call" "launcher" "calculator"; } + Mod+L { spawn "noctalia-shell" "ipc" "call" "lockScreen" "lock"; } + + // Mod-Shift-/, which is usually the same as Mod-?, + // shows a list of important hotkeys. + Mod+Shift+Slash { show-hotkey-overlay; } + + // Suggested binds for running programs: terminal, app launcher, screen locker. + Mod+T { spawn "kitty"; } + //Mod+Enter { spawn "kitty"; } + Mod+D { spawn "ignis" "toggle-window" "Launcher"; } + //Mod+L { spawn "hyprlock"; } + Mod+E { spawn "nautilus"; } + Mod+Escape { spawn "ignis" "toggle-window" "PowerMenu"; } + Mod+I { spawn "ignis" "toggle-window" "Settings"; } + + // Example volume keys mappings for PipeWire & WirePlumber. + // The allow-when-locked=true property makes them work even when the session is locked. + //XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; } + //XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; } + //XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } + XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } + + Mod+Q { close-window; } + + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + + Mod+Ctrl+Left { move-column-left; } + Mod+Ctrl+Down { move-window-down; } + Mod+Ctrl+Up { move-window-up; } + Mod+Ctrl+Right { move-column-right; } + + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + Mod+Shift+Left { focus-monitor-left; } + Mod+Shift+Down { focus-monitor-down; } + Mod+Shift+Up { focus-monitor-up; } + Mod+Shift+Right { focus-monitor-right; } + + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + + Mod+Page_Down { focus-workspace-down; } + Mod+Page_Up { focus-workspace-up; } + Mod+Ctrl+Page_Down { move-column-to-workspace-down; } + Mod+Ctrl+Page_Up { move-column-to-workspace-up; } + + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + // Usually scrolling up and down with Shift in applications results in + // horizontal scrolling; these binds replicate that. + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + Mod+Ctrl+1 { move-column-to-workspace 1; } + Mod+Ctrl+2 { move-column-to-workspace 2; } + Mod+Ctrl+3 { move-column-to-workspace 3; } + Mod+Ctrl+4 { move-column-to-workspace 4; } + Mod+Ctrl+5 { move-column-to-workspace 5; } + Mod+Ctrl+6 { move-column-to-workspace 6; } + Mod+Ctrl+7 { move-column-to-workspace 7; } + Mod+Ctrl+8 { move-column-to-workspace 8; } + Mod+Ctrl+9 { move-column-to-workspace 9; } + + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + + // Consume one window from the right to the bottom of the focused column. + //Mod+Comma { consume-window-into-column; } + // Expel the bottom window from the focused column to the right. + Mod+Period { expel-window-from-column; } + + Mod+R { switch-preset-column-width; } + Mod+Shift+R { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } + Mod+C { center-column; } + Mod+W { toggle-column-tabbed-display; } + + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + + // Finer height adjustments when in column with other windows. + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Equal { set-window-height "+10%"; } + + // Move the focused window between the floating and the tiling layout. + Mod+V { toggle-window-floating; } + Mod+Shift+V { switch-focus-between-floating-and-tiling; } + + Mod+Shift+S { screenshot; } + Ctrl+Print { screenshot-screen; } + Alt+Print { screenshot-window; } + + Mod+Shift+Alt+R { spawn "ignis" "run-command" "recorder-record-screen"; } + Mod+Alt+R { spawn "ignis" "run-command" "recorder-record-portal"; } + Ctrl+Shift+Escape { spawn "missioncenter"; } +} + +hotkey-overlay { + skip-at-startup +} + +input { + touchpad { + tap + natural-scroll + } + keyboard { + xkb { + layout "pl" + } + } +} + +output "eDP-1" { + mode "2880x1800@120.000" + //mode "1440x900@120.000" + //scale 1.0 + scale 2.0 +} +//spawn-at-startup "ignis" "init" +spawn-at-startup "swww-daemon" +spawn-at-startup "kanshi" +spawn-at-startup "noctalia-shell" diff --git a/nixos/configuration.nix b/nixos/configuration.nix new file mode 100644 index 0000000..bddae6a --- /dev/null +++ b/nixos/configuration.nix @@ -0,0 +1,316 @@ +{ config, lib, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.resumeDevice = "/dev/mapper/luksroot"; + # Pin Linux kernel to 6.12 + boot.kernelPackages = pkgs.linuxPackages_6_12; + + boot.extraModprobeConfig = '' + options mt7921_common disable_clc=1 + options atkbd reset=1 softrepeat=1 + options i8042 nomux=1 reset=1 nopnp=1 kbdreset=1 direct=1 dumbkbd=1 + ''; + + # Kernel parameters for power saving + boot.kernelParams = [ + # CRITICAL FIX: Disable ACPI for i8042 (ASUS BIOS bug workaround) + "i8042.noacpi" # Disable buggy ASUS ACPI keyboard controller + "i8042.reset=1" # Force reset i8042 + "i8042.nomux=1" # No multiplexing + "i8042.nopnp=1" # Ignore PnP detection + "atkbd.softrepeat=1" # Software key repeat + "amd_pstate=active" # Use AMD P-State driver for better power management + "amd_pstate.shared_mem=1" + "pcie_aspm.policy=powersupersave" # Aggressive PCIe power management + "amdgpu.gpu_recovery=1" # Enable automatic GPU recovery + #"amdgpu.runpm=0" # Disable runtime PM (major hang cause) + ###"amdgpu.dcdebugmask=0x400" + #"amdgpu.dcdebugmask=0x10" # Disable PSR (panel self-refresh) + #"amdgpu.ppfeaturemask=0xf7fff" # Disable GFXOFF + ]; + + # Disable TPM + systemd.tpm2.enable = false; + boot.initrd.systemd.tpm2.enable = false; + + #swapDevices = [{ file = "/swap/swapfile"; }]; + + # Override btrfs mount options from hardware-configuration.nix + fileSystems."/" = { + options = [ "subvol=@" "compress=zstd" "space_cache=v2" "noatime" + "autodefrag" "ssd" "discard=async" ]; + }; + + fileSystems."/home" = { + options = [ "subvol=@home" "compress=zstd" "space_cache=v2" "noatime" + "autodefrag" "ssd" "discard=async" ]; + }; + + fileSystems."/var/log" = { + options = [ "subvol=@log" "compress=zstd" "space_cache=v2" "noatime" + "autodefrag" "ssd" "discard=async" ]; + }; + + fileSystems."/swap" = { + options = [ "subvol=@swap" "noatime" "ssd" "discard=async" ]; + }; + + # Enable NetworkManager and set network host name + networking.networkmanager.enable = true; + networking.hostName = "lusia-laptop"; + + # NetworkManager power saving for WiFi + networking.networkmanager.wifi.powersave = true; + + # Enable Tailscale + services.tailscale.enable = true; + + # Trust the Tailscale interface + networking.firewall.trustedInterfaces = [ "tailscale0" ]; + + # Disable reverse path filtering for Tailscale ╎│ + boot.kernel.sysctl."net.ipv4.conf.tailscale0.rp_filter" = 0; + + # Enable resolved + services.resolved.enable = true; + + # OpenVPN services + # VSTech VPN (with DNS for bgs.local domain) + services.openvpn.servers.vstech = { + config = '' + client + remote 51.83.143.81 + proto udp + port 649 + dev tun + topology subnet + ca /home/lusia/VSTech-vpn/ca.crt + cert /home/lusia/VSTech-vpn/Klient251.crt + key /home/lusia/VSTech-vpn/Klient251.key + tls-crypt /home/lusia/VSTech-vpn/ta.key + + auth sha512 + data-ciphers aes-256-cbc + data-ciphers-fallback aes-256-cbc + key-direction 1 + keepalive 10 120 + ''; + updateResolvConf = false; + + # Manually set DNS after connection + up = '' + ${pkgs.systemd}/bin/resolvectl dns $dev 10.10.10.1 + ${pkgs.systemd}/bin/resolvectl domain $dev bgs.local + ''; + + down = '' + ${pkgs.systemd}/bin/resolvectl revert $dev + ''; + }; + + # CAT VPN + services.openvpn.servers.cat = { + config = '' + client + remote 79.133.193.211 + proto tcp + port 1194 + dev tun + topology subnet + ca /home/lusia/vpn/ca.crt + cert /home/lusia/vpn/client18.crt + key /home/lusia/vpn/client18.key + + auth sha256 + data-ciphers AES-256-CBC + key-direction 1 + ''; + updateResolvConf = true; + }; + + # Enable upower service + services.upower.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Warsaw"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + console = { + keyMap = "pl"; + }; + + # Enable niri + # programs.niri.enable = true; + + # Enable fish + programs.fish.enable = true; + + # Enable greetd with tuigreet + services.greetd = { + enable = true; + settings = { + default_session = { + command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd niri-session"; + user = "greeter"; + }; + }; + }; + + # Essential for niri + security.polkit.enable = true; + services.gnome.gnome-keyring.enable = true; + + # XDG Portal for file pickers or screen sharing + xdg.portal = { + enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-gnome ]; + config = { + common = { + default = [ "gtk" ]; + "org.freedesktop.impl.portal.ScreenCast" = [ "gnome" ]; + "org.freedesktop.impl.portal.Screenshot" = [ "gnome" ]; + }; + }; + }; + + # Enable dconf + programs.dconf.enable = true; + + users.users.lusia = { + isNormalUser = true; + description = "Lukrecja"; + extraGroups = [ "wheel" "networkmanager" "docker" ]; + initialPassword = "pass"; + shell = pkgs.fish; + }; + + hardware.enableAllFirmware = true; + services.openssh.enable = true; + security.sudo.enable = true; + + # Enable xwayland + programs.xwayland.enable = true; + + # Set a session variable for icon theme + environment.sessionVariables = rec { + QT_QPA_PLATFORMTHEME = "qt5ct"; + }; + + environment.systemPackages = with pkgs; [ + git + curl + wget + vim + fish + kitty + #asusctl + powertop # For monitoring power consumption + openvpn + nodejs + gnumake + gcc + cmake + xwayland-satellite + busybox + libdecor + file + cifs-utils + samba + gvfs + ]; + + # Fonts + fonts.packages = with pkgs; [ + noto-fonts + noto-fonts-cjk-sans + noto-fonts-color-emoji + pkgs.nerd-fonts.fira-code + ]; + + # For SMB shares + services.gvfs.enable = true; + + # Printers + services.avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; + + services.printing = { + enable = true; + drivers = with pkgs; [ + cups-filters + cups-browsed + ]; + }; + + # Enable Flatpaks + services.flatpak.enable = true; + + # Enable Docker + virtualisation.docker.enable = true; + virtualisation.docker.storageDriver = "btrfs"; + + nixpkgs.config.allowUnfree = true; + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # Enable Bluetooth (but it will be blocked by default to save power) + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = false; # Don't power on bluetooth at boot + + # Enable OpenTabletDriver + hardware.opentabletdriver.enable = true; + hardware.uinput.enable = true; + boot.kernelModules = [ "uinput" ]; + + # Enable PPD for power options + services.power-profiles-daemon.enable = true; + + # Enable AMD GPU graphics acceleration + hardware.graphics = { + enable = true; + enable32Bit = true; # For 32-bit applications/games + }; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how + # to actually do that. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "24.11"; # Did you read the comment? + +} diff --git a/nixos/flake.lock b/nixos/flake.lock new file mode 100644 index 0000000..721c99e --- /dev/null +++ b/nixos/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1765461410, + "narHash": "sha256-AVZ1y5tfTGqf5zJx6uY52KHN2pP9gGF9RMQ3meBVKIg=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "7b34e428f31ce52baabda53e52bf14002e1c0625", + "type": "github" + }, + "original": { + "id": "home-manager", + "type": "indirect" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1764950072, + "narHash": "sha256-BmPWzogsG2GsXZtlT+MTcAWeDK5hkbGRZTeZNW42fwA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f61125a668a320878494449750330ca58b78c557", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1765311797, + "narHash": "sha256-mSD5Ob7a+T2RNjvPvOA1dkJHGVrNVl8ZOrAwBjKBDQo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "09eb77e94fa25202af8f3e81ddc7353d9970ac1b", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs_2" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nixos/flake.nix b/nixos/flake.nix new file mode 100644 index 0000000..b3f8832 --- /dev/null +++ b/nixos/flake.nix @@ -0,0 +1,18 @@ +{ + description = "NixOS configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; + }; + + outputs = inputs@{ nixpkgs, home-manager, ... }: { + nixosConfigurations = { + lusia-laptop = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./configuration.nix + ]; + }; + }; + }; +} diff --git a/nixos/hardware-configuration.nix b/nixos/hardware-configuration.nix new file mode 100644 index 0000000..16f7c07 --- /dev/null +++ b/nixos/hardware-configuration.nix @@ -0,0 +1,59 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/f240d6d8-b1e2-418d-96ed-9b9c11ab4ea9"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; + + boot.initrd.luks.devices."luksroot".device = "/dev/disk/by-uuid/a5725fbc-c25f-4e29-aa8d-3808b85ee586"; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/f240d6d8-b1e2-418d-96ed-9b9c11ab4ea9"; + fsType = "btrfs"; + options = [ "subvol=@home" ]; + }; + + fileSystems."/var/log" = + { device = "/dev/disk/by-uuid/f240d6d8-b1e2-418d-96ed-9b9c11ab4ea9"; + fsType = "btrfs"; + options = [ "subvol=@log" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/532C-C315"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + fileSystems."/swap" = + { device = "/dev/disk/by-uuid/f240d6d8-b1e2-418d-96ed-9b9c11ab4ea9"; + fsType = "btrfs"; + options = [ "subvol=@swap" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nixos/home.nix b/nixos/home.nix new file mode 100644 index 0000000..ff377e5 --- /dev/null +++ b/nixos/home.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +{ + home.username = "lusia"; + home.homeDirectory = "/home/lusia"; + home.stateVersion = "24.11"; + + programs.kitty = { + enable = true; + }; + + programs.home-manager.enable = true; +} diff --git a/noctalia/plugins.json b/noctalia/plugins.json new file mode 100644 index 0000000..6b7a57f --- /dev/null +++ b/noctalia/plugins.json @@ -0,0 +1,15 @@ +{ + "sources": [ + { + "enabled": true, + "name": "Official Noctalia Plugins", + "url": "https://github.com/noctalia-dev/noctalia-plugins" + } + ], + "states": { + "catwalk": { + "enabled": true + } + }, + "version": 1 +} diff --git a/noctalia/settings.json b/noctalia/settings.json new file mode 100644 index 0000000..044e5ce --- /dev/null +++ b/noctalia/settings.json @@ -0,0 +1,477 @@ +{ + "appLauncher": { + "customLaunchPrefix": "", + "customLaunchPrefixEnabled": false, + "enableClipPreview": true, + "enableClipboardHistory": false, + "pinnedExecs": [ + ], + "position": "center", + "showCategories": true, + "sortByMostUsed": true, + "terminalCommand": "kitty -e", + "useApp2Unit": false, + "viewMode": "list" + }, + "audio": { + "cavaFrameRate": 60, + "externalMixer": "pwvucontrol || pavucontrol", + "mprisBlacklist": [ + ], + "preferredPlayer": "", + "visualizerQuality": "high", + "visualizerType": "linear", + "volumeOverdrive": false, + "volumeStep": 5 + }, + "bar": { + "backgroundOpacity": 0, + "capsuleOpacity": 1, + "density": "default", + "exclusive": true, + "floating": false, + "marginHorizontal": 0.25, + "marginVertical": 0.25, + "monitors": [ + ], + "outerCorners": true, + "position": "top", + "showCapsule": true, + "widgets": { + "center": [ + ], + "left": [ + { + "diskPath": "/", + "id": "SystemMonitor", + "showCpuTemp": true, + "showCpuUsage": true, + "showDiskUsage": false, + "showMemoryAsPercent": false, + "showMemoryUsage": true, + "showNetworkStats": true, + "usePrimaryColor": true + }, + { + "hideMode": "hidden", + "hideWhenIdle": false, + "id": "MediaMini", + "maxWidth": 145, + "scrollingMode": "hover", + "showAlbumArt": false, + "showArtistFirst": true, + "showProgressRing": true, + "showVisualizer": false, + "useFixedWidth": false, + "visualizerType": "linear" + } + ], + "right": [ + { + "id": "plugin:catwalk" + }, + { + "hideMode": "alwaysExpanded", + "icon": "heart", + "id": "CustomButton", + "leftClickExec": "bash /home/lusia/Downloads/sync-colors.sh --random", + "leftClickUpdateText": false, + "maxTextLength": { + "horizontal": 10, + "vertical": 10 + }, + "middleClickExec": "", + "middleClickUpdateText": false, + "parseJson": false, + "rightClickExec": "bash /home/lusia/Downloads/sync-colors.sh --random --light", + "rightClickUpdateText": false, + "showIcon": true, + "textCollapse": "", + "textCommand": "", + "textIntervalMs": 3000, + "textStream": false, + "wheelDownExec": "", + "wheelDownUpdateText": false, + "wheelExec": "", + "wheelMode": "unified", + "wheelUpExec": "", + "wheelUpUpdateText": false, + "wheelUpdateText": false + }, + { + "hideWhenZero": true, + "id": "NotificationHistory", + "showUnreadBadge": true + }, + { + "deviceNativePath": "", + "displayMode": "onhover", + "id": "Battery", + "showNoctaliaPerformance": false, + "showPowerProfiles": false, + "warningThreshold": 30 + }, + { + "displayMode": "onhover", + "id": "WiFi" + }, + { + "displayMode": "onhover", + "id": "Bluetooth" + }, + { + "displayMode": "onhover", + "id": "Volume" + }, + { + "displayMode": "onhover", + "id": "Brightness" + }, + { + "customFont": "", + "formatHorizontal": "HH:mm:ss", + "formatVertical": "HH mm - dd MM", + "id": "Clock", + "useCustomFont": false, + "usePrimaryColor": true + }, + { + "colorizeDistroLogo": false, + "colorizeSystemIcon": "none", + "customIconPath": "", + "enableColorization": false, + "icon": "dots", + "id": "ControlCenter", + "useDistroLogo": false + } + ] + } + }, + "brightness": { + "brightnessStep": 5, + "enableDdcSupport": false, + "enforceMinimum": true + }, + "calendar": { + "cards": [ + { + "enabled": true, + "id": "timer-card" + }, + { + "enabled": true, + "id": "weather-card" + }, + { + "enabled": true, + "id": "calendar-header-card" + }, + { + "enabled": true, + "id": "calendar-month-card" + } + ] + }, + "colorSchemes": { + "darkMode": true, + "generateTemplatesForPredefined": true, + "manualSunrise": "06:30", + "manualSunset": "18:30", + "matugenSchemeType": "scheme-neutral", + "predefinedScheme": "Monochrome", + "schedulingMode": "off", + "useWallpaperColors": false + }, + "controlCenter": { + "cards": [ + { + "enabled": true, + "id": "profile-card" + }, + { + "enabled": true, + "id": "shortcuts-card" + }, + { + "enabled": true, + "id": "audio-card" + }, + { + "enabled": true, + "id": "weather-card" + }, + { + "enabled": true, + "id": "media-sysmon-card" + } + ], + "position": "close_to_bar_button", + "shortcuts": { + "left": [ + { + "id": "WiFi" + }, + { + "id": "Bluetooth" + }, + { + "id": "ScreenRecorder" + }, + { + "id": "WallpaperSelector" + } + ], + "right": [ + { + "id": "Notifications" + }, + { + "id": "PowerProfile" + }, + { + "id": "KeepAwake" + }, + { + "id": "NightLight" + } + ] + } + }, + "dock": { + "backgroundOpacity": 1, + "colorizeIcons": false, + "deadOpacity": 0.6, + "displayMode": "always_visible", + "enabled": false, + "floatingRatio": 1, + "inactiveIndicators": false, + "monitors": [ + ], + "onlySameOutput": true, + "pinnedApps": [ + ], + "pinnedStatic": false, + "size": 1 + }, + "general": { + "allowPanelsOnScreenWithoutBar": true, + "animationDisabled": false, + "animationSpeed": 1, + "avatarImage": "/home/lusia/Downloads/lusia.jpg", + "boxRadiusRatio": 1, + "compactLockScreen": true, + "dimmerOpacity": 0.6, + "enableShadows": true, + "forceBlackScreenCorners": true, + "iRadiusRatio": 1, + "language": "", + "lockOnSuspend": true, + "radiusRatio": 1, + "scaleRatio": 1, + "screenRadiusRatio": 1, + "shadowDirection": "bottom_right", + "shadowOffsetX": 2, + "shadowOffsetY": 3, + "showHibernateOnLockScreen": false, + "showScreenCorners": true + }, + "hooks": { + "darkModeChange": "", + "enabled": false, + "wallpaperChange": "" + }, + "location": { + "analogClockInCalendar": false, + "firstDayOfWeek": 1, + "name": "Poznań", + "showCalendarEvents": true, + "showCalendarWeather": true, + "showWeekNumberInCalendar": false, + "use12hourFormat": false, + "useFahrenheit": false, + "weatherEnabled": true, + "weatherShowEffects": true + }, + "network": { + "wifiEnabled": true + }, + "nightLight": { + "autoSchedule": true, + "dayTemp": "6500", + "enabled": false, + "forced": false, + "manualSunrise": "06:30", + "manualSunset": "18:30", + "nightTemp": "4000" + }, + "notifications": { + "backgroundOpacity": 1, + "criticalUrgencyDuration": 15, + "enableKeyboardLayoutToast": true, + "enabled": true, + "location": "top_right", + "lowUrgencyDuration": 3, + "monitors": [ + ], + "normalUrgencyDuration": 8, + "overlayLayer": true, + "respectExpireTimeout": false, + "sounds": { + "criticalSoundFile": "", + "enabled": false, + "excludedApps": "discord,firefox,chrome,chromium,edge", + "lowSoundFile": "", + "normalSoundFile": "", + "separateSounds": false, + "volume": 0.5 + } + }, + "osd": { + "autoHideMs": 2000, + "backgroundOpacity": 1, + "enabled": true, + "enabledTypes": [ + 0, + 1, + 2 + ], + "location": "top_right", + "monitors": [ + ], + "overlayLayer": true + }, + "screenRecorder": { + "audioCodec": "opus", + "audioSource": "default_output", + "colorRange": "limited", + "directory": "/home/lusia/Videos", + "frameRate": 60, + "quality": "very_high", + "showCursor": true, + "videoCodec": "h264", + "videoSource": "portal" + }, + "sessionMenu": { + "countdownDuration": 10000, + "enableCountdown": true, + "position": "center", + "powerOptions": [ + { + "action": "lock", + "command": "", + "countdownEnabled": true, + "enabled": true + }, + { + "action": "suspend", + "command": "", + "countdownEnabled": true, + "enabled": true + }, + { + "action": "reboot", + "command": "", + "countdownEnabled": true, + "enabled": true + }, + { + "action": "logout", + "command": "", + "countdownEnabled": true, + "enabled": true + }, + { + "action": "shutdown", + "command": "", + "countdownEnabled": true, + "enabled": true + }, + { + "action": "hibernate", + "command": "", + "countdownEnabled": true, + "enabled": true + } + ], + "showHeader": true + }, + "settingsVersion": 26, + "systemMonitor": { + "cpuCriticalThreshold": 90, + "cpuPollingInterval": 3000, + "cpuWarningThreshold": 80, + "criticalColor": "", + "diskCriticalThreshold": 90, + "diskPollingInterval": 3000, + "diskWarningThreshold": 80, + "memCriticalThreshold": 90, + "memPollingInterval": 3000, + "memWarningThreshold": 80, + "networkPollingInterval": 3000, + "tempCriticalThreshold": 90, + "tempPollingInterval": 3000, + "tempWarningThreshold": 80, + "useCustomColors": false, + "warningColor": "" + }, + "templates": { + "alacritty": false, + "cava": false, + "code": false, + "discord": false, + "emacs": false, + "enableUserTemplates": true, + "foot": false, + "fuzzel": false, + "ghostty": false, + "gtk": false, + "kcolorscheme": false, + "kitty": false, + "niri": false, + "pywalfox": false, + "qt": false, + "spicetify": false, + "telegram": false, + "vicinae": false, + "walker": false, + "wezterm": false + }, + "ui": { + "fontDefault": "Roboto", + "fontDefaultScale": 1, + "fontFixed": "DejaVu Sans Mono", + "fontFixedScale": 1, + "panelBackgroundOpacity": 1, + "panelsAttachedToBar": true, + "settingsPanelAttachToBar": false, + "tooltipsEnabled": true + }, + "wallpaper": { + "directory": "/home/lusia/Pictures/Wallpapers", + "enableMultiMonitorDirectories": false, + "enabled": false, + "fillColor": "#000000", + "fillMode": "crop", + "hideWallpaperFilenames": false, + "monitorDirectories": [ + ], + "overviewEnabled": false, + "panelPosition": "follow_bar", + "randomEnabled": false, + "randomIntervalSec": 300, + "recursiveSearch": false, + "setWallpaperOnAllMonitors": true, + "transitionDuration": 1500, + "transitionEdgeSmoothness": 0.05, + "transitionType": "random", + "useWallhaven": false, + "wallhavenCategories": "111", + "wallhavenOrder": "desc", + "wallhavenPurity": "100", + "wallhavenQuery": "madoka", + "wallhavenResolutionHeight": "", + "wallhavenResolutionMode": "atleast", + "wallhavenResolutionWidth": "", + "wallhavenSorting": "relevance" + } +} diff --git a/nvim/.stylua.toml b/nvim/.stylua.toml new file mode 100644 index 0000000..ecb6dca --- /dev/null +++ b/nvim/.stylua.toml @@ -0,0 +1,6 @@ +column_width = 120 +line_endings = "Unix" +indent_type = "Spaces" +indent_width = 2 +quote_style = "AutoPreferDouble" +call_parentheses = "None" diff --git a/nvim/LICENSE b/nvim/LICENSE new file mode 100644 index 0000000..fdddb29 --- /dev/null +++ b/nvim/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/nvim/README.md b/nvim/README.md new file mode 100644 index 0000000..769fbdf --- /dev/null +++ b/nvim/README.md @@ -0,0 +1,9 @@ +**This repo is supposed to be used as config by NvChad users!** + +- The main nvchad repo (NvChad/NvChad) is used as a plugin by this repo. +- So you just import its modules , like `require "nvchad.options" , require "nvchad.mappings"` +- So you can delete the .git from this repo ( when you clone it locally ) or fork it :) + +# Credits + +1) Lazyvim starter https://github.com/LazyVim/starter as nvchad's starter was inspired by Lazyvim's . It made a lot of things easier! diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..e861b68 --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,37 @@ +vim.g.base46_cache = vim.fn.stdpath "data" .. "/base46/" +vim.g.mapleader = " " + +-- bootstrap lazy and all plugins +local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim" + +if not vim.uv.fs_stat(lazypath) then + local repo = "https://github.com/folke/lazy.nvim.git" + vim.fn.system { "git", "clone", "--filter=blob:none", repo, "--branch=stable", lazypath } +end + +vim.opt.rtp:prepend(lazypath) + +local lazy_config = require "configs.lazy" + +-- load plugins +require("lazy").setup({ + { + "NvChad/NvChad", + lazy = false, + branch = "v2.5", + import = "nvchad.plugins", + }, + + { import = "plugins" }, +}, lazy_config) + +-- load theme +dofile(vim.g.base46_cache .. "defaults") +dofile(vim.g.base46_cache .. "statusline") + +require "options" +require "autocmds" + +vim.schedule(function() + require "mappings" +end) diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json new file mode 100644 index 0000000..bd5d353 --- /dev/null +++ b/nvim/lazy-lock.json @@ -0,0 +1,29 @@ +{ + "LuaSnip": { "branch": "master", "commit": "73813308abc2eaeff2bc0d3f2f79270c491be9d7" }, + "NvChad": { "branch": "v2.5", "commit": "f107fabe11ac8013dc3435ecd5382bee872b1584" }, + "base46": { "branch": "v3.0", "commit": "db58475d3fd2a16f9b1467d6895e3c4c195ed7dd" }, + "cmp-async-path": { "branch": "main", "commit": "0ed1492f59e730c366d261a5ad822fa37e44c325" }, + "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" }, + "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, + "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, + "conform.nvim": { "branch": "master", "commit": "fbcb4fa7f34bfea9be702ffff481a8e336ebf6ed" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "gitsigns.nvim": { "branch": "main", "commit": "1ee5c1fd068c81f9dd06483e639c2aa4587dc197" }, + "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, + "menu": { "branch": "main", "commit": "7a0a4a2896b715c066cfbe320bdc048091874cc6" }, + "minty": { "branch": "main", "commit": "aafc9e8e0afe6bf57580858a2849578d8d8db9e0" }, + "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, + "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, + "nvim-lspconfig": { "branch": "master", "commit": "ac98db2f9f06a56498ec890a96928774eae412c3" }, + "nvim-tree.lua": { "branch": "master", "commit": "e397756d2a79d74314ea4cd3efc41300e91c0ff0" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-web-devicons": { "branch": "master", "commit": "b8221e42cf7287c4dcde81f232f58d7b947c210d" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, + "ui": { "branch": "v3.0", "commit": "03b9718140375e7f3f5e4f3e04bc2b6c907440ec" }, + "volt": { "branch": "main", "commit": "620de1321f275ec9d80028c68d1b88b409c0c8b1" }, + "which-key.nvim": { "branch": "main", "commit": "b4177e3eaf15fe5eb8357ebac2286d488be1ed00" } +} diff --git a/nvim/lua/autocmds.lua b/nvim/lua/autocmds.lua new file mode 100644 index 0000000..d2db0bb --- /dev/null +++ b/nvim/lua/autocmds.lua @@ -0,0 +1 @@ +require "nvchad.autocmds" diff --git a/nvim/lua/chadrc.lua b/nvim/lua/chadrc.lua new file mode 100644 index 0000000..da64d6c --- /dev/null +++ b/nvim/lua/chadrc.lua @@ -0,0 +1,24 @@ +-- This file needs to have same structure as nvconfig.lua +-- https://github.com/NvChad/ui/blob/v3.0/lua/nvconfig.lua +-- Please read that file to know all available options :( + +---@type ChadrcConfig +local M = {} + +M.base46 = { + theme = "pywal", + + -- hl_override = { + -- Comment = { italic = true }, + -- ["@comment"] = { italic = true }, + -- }, +} + +-- M.nvdash = { load_on_startup = true } +-- M.ui = { +-- tabufline = { +-- lazyload = false +-- } +-- } + +return M diff --git a/nvim/lua/configs/conform.lua b/nvim/lua/configs/conform.lua new file mode 100644 index 0000000..c4de52d --- /dev/null +++ b/nvim/lua/configs/conform.lua @@ -0,0 +1,16 @@ +local options = { + formatters_by_ft = { + lua = { "stylua" }, + rust = { "rustfmt" }, + -- css = { "prettier" }, + -- html = { "prettier" }, + }, + + -- format_on_save = { + -- -- These options will be passed to conform.format() + -- timeout_ms = 500, + -- lsp_fallback = true, + -- }, +} + +return options diff --git a/nvim/lua/configs/lazy.lua b/nvim/lua/configs/lazy.lua new file mode 100644 index 0000000..cd170bd --- /dev/null +++ b/nvim/lua/configs/lazy.lua @@ -0,0 +1,47 @@ +return { + defaults = { lazy = true }, + install = { colorscheme = { "nvchad" } }, + + ui = { + icons = { + ft = "", + lazy = "󰂠 ", + loaded = "", + not_loaded = "", + }, + }, + + performance = { + rtp = { + disabled_plugins = { + "2html_plugin", + "tohtml", + "getscript", + "getscriptPlugin", + "gzip", + "logipat", + "netrw", + "netrwPlugin", + "netrwSettings", + "netrwFileHandlers", + "matchit", + "tar", + "tarPlugin", + "rrhelper", + "spellfile_plugin", + "vimball", + "vimballPlugin", + "zip", + "zipPlugin", + "tutor", + "rplugin", + "syntax", + "synmenu", + "optwin", + "compiler", + "bugreport", + "ftplugin", + }, + }, + }, +} diff --git a/nvim/lua/configs/lspconfig.lua b/nvim/lua/configs/lspconfig.lua new file mode 100644 index 0000000..9a1390c --- /dev/null +++ b/nvim/lua/configs/lspconfig.lua @@ -0,0 +1,34 @@ +require("nvchad.configs.lspconfig").defaults() + +local servers = { "html", "cssls", "rust_analyzer" } +vim.lsp.enable(servers) + +-- Configure rust-analyzer with enhanced settings +vim.lsp.config.rust_analyzer = { + cmd = { "rust-analyzer" }, + filetypes = { "rust" }, + root_markers = { "Cargo.toml", "rust-project.json" }, + settings = { + ["rust-analyzer"] = { + cargo = { + allFeatures = true, + loadOutDirsFromCheck = true, + buildScripts = { + enable = true, + }, + }, + checkOnSave = true, + check = { + command = "clippy", + }, + procMacro = { + enable = true, + }, + diagnostics = { + enable = true, + }, + }, + }, +} + +-- read :h vim.lsp.config for changing options of lsp servers diff --git a/nvim/lua/mappings.lua b/nvim/lua/mappings.lua new file mode 100644 index 0000000..783b78f --- /dev/null +++ b/nvim/lua/mappings.lua @@ -0,0 +1,10 @@ +require "nvchad.mappings" + +-- add yours here + +local map = vim.keymap.set + +map("n", ";", ":", { desc = "CMD enter command mode" }) +map("i", "jk", "") + +-- map({ "n", "i", "v" }, "", " w ") diff --git a/nvim/lua/options.lua b/nvim/lua/options.lua new file mode 100644 index 0000000..738f20b --- /dev/null +++ b/nvim/lua/options.lua @@ -0,0 +1,6 @@ +require "nvchad.options" + +-- add yours here! + +-- local o = vim.o +-- o.cursorlineopt ='both' -- to enable cursorline! diff --git a/nvim/lua/plugins/init.lua b/nvim/lua/plugins/init.lua new file mode 100644 index 0000000..f6c60fc --- /dev/null +++ b/nvim/lua/plugins/init.lua @@ -0,0 +1,65 @@ +return { + { + "stevearc/conform.nvim", + -- event = 'BufWritePre', -- uncomment for format on save + opts = require "configs.conform", + }, + + -- These are some examples, uncomment them if you want to see them work! + { + "neovim/nvim-lspconfig", + config = function() + require "configs.lspconfig" + end, + }, + + -- test new blink + -- { import = "nvchad.blink.lazyspec" }, + + { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { + "vim", "lua", "vimdoc", + "html", "css", "rust", "toml" + }, + }, + }, + + { + "nvim-telescope/telescope.nvim", + opts = { + defaults = { + file_ignore_patterns = {}, -- Don't ignore any patterns by default + }, + pickers = { + find_files = { + hidden = true, + no_ignore = true, -- Show files ignored by .gitignore + no_ignore_parent = true, + }, + }, + }, + }, + + { + "nvim-tree/nvim-tree.lua", + opts = { + filters = { + dotfiles = false, + git_ignored = false, -- Show files ignored by .gitignore + }, + view = { + adaptive_size = false, + }, + renderer = { + highlight_git = true, + icons = { + show = { + git = true, + }, + }, + }, + }, + }, +}