1
0
mirror of https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles.git synced 2025-09-15 09:45:58 +03:00
2023-11-10 21:10:50 +02:00
2023-11-10 17:48:24 +02:00
2023-11-10 18:29:38 +02:00
2023-10-21 21:04:49 +03:00
2023-11-10 21:10:50 +02:00

NixOS & Hyprland with Catppuccin Macchiato Theme Configuration

Showcase Gif

Table of Contents

📖 About

This repository houses my NixOS Linux configuration, featuring the Hyprland window manager and adorned with the stylish Catppuccin Macchiato theme. I rely on this setup as my daily driver for work and programming, primarily in Rust 🦀. Feel free to utilize it in its entirety or borrow specific components for your own configuration.

🚨It's essential to note that this configuration is not minimalistic or lightweight and may require some disk space and knowledge to understand. If you're looking for something simpler, this configuration may not be suitable for you.

🌟 Showcase

The showcased images do not reflect the latest version of the system's appearance. The final setup may vary slightly.

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Showcase Video

🔧 Components

Component Version/Name
Distro NixOS
Kernel Zen
Shell Fish
Display Server Wayland
WM (Compositor) Hyprland
Bar Waybar
Notification Dunst
Launcher Rofi-Wayland
Editor Helix
Terminal WezTerm + Starship
OSD Avizo
Night Gamma Gammastep
Fetch Utility Neofetch
Theme Catppuccin Macchiato
Icons Colloid-teal-dark, Numix-Circle
Font JetBrains Mono + Nerd Font Patch
Player Youtube Music + Spotify
File Browser Thunar
Internet Browser Qutebrowser, Brave + Vimium + NightTab + Stylus
Mimetypes MPV, Imv, Zathura
Image Editor Swappy
Screenshot Grim + Slurp
Recorder Wf-recorder
Color Picker Hyprpicker
Clipboard Wl-clipboard + Cliphist + Clipboard-jh
Idle Swayidle
Lock Swaylock
Logout menu Wlogout
Wallpaper Wpaperd
Graphical Boot Plymouth + Catppuccin-plymouth
Display Manager Greetd + Tuigreet

And many other useful utilities. The full list can be found in the system configuration at /nixos/configuration.nix file.

Features

  • 🔄 Reproducible: Built on NixOS, this configuration can be effortlessly reproduced on other machines, ensuring a consistent setup.

  • 🖌️ Consistent: Nearly every component has been meticulously styled to adhere to the Catppuccin Macchiato theme, providing a visually cohesive experience.

  • Complete: This system is equipped with a wide range of components and utilities, akin to the completeness of operating systems like MacOS or Windows.

  • 🎨 Customizable: Leveraging the power of Linux and Hyprland, this configuration offers extensive customization options, allowing you to tailor your setup to your preferences.

🚀 Installation

  1. Download and Install NixOS from the official site.
  2. Temporarily install ripgrep and fish using the command: nix-shell -p ripgrep fish --run fish. You can also use classic bash and grep for the next step without installing fish and ripgrep.
  3. Run the command rg --hidden FIXME and change/add lines to match your device, swaps, partitions, and file systems in the configuration files (/etc/nixos/configuration.nix & /etc/nixos/hardware-configuration.nix).
  4. To change the default username and/or hostname, run the command rg --hidden 'xnm' to find and fix all instances of the username, and rg --hidden 'isitreal-laptop' for the hostname. Make sure to change the username to match yours to avoid login issues.
  5. Copy all files (with replacements) from the home directory to your $HOME directory in Linux.
  6. Copy all files (with replacements) from the nixos directory to /etc/nixos/. It's recommended not to copy and replace hardware-configuration.nix; only copy it if you have already change it for your hardware.
  7. Run the command sudo nixos-rebuild switch. After this, you will have a complete system. You can also use flakes after first setup by running sudo nixos-rebuild switch --flake /etc/nixos if needed.

⌨️ Keybindings

Main

Key Combination Action
ALT + R Resize windows mode
ALT + M Move windows mode
SUPER + H, J, K, L Change window focus
SUPER + 1..0 Change workspace
SUPER + SHIFT + 1..0 Move window to workspace
SUPER + SHIFT + Q Kill active window
SUPER + SHIFT + F Toggle floating window
SUPER + CTRL + F Toggle full-screen
SUPER + SHIFT + O Toggle split
SUPER + SHIFT + P Toggle pseudo
SUPER + SHIFT + M Exit from hyprland
SUPER + T Launch wezterm
SUPER + D Launch rofi -drun
SUPER + B Launch qutebrowser
SUPER + SHIFT + B Launch brave
SUPER + F Launch thunar
SUPER + ESCAPE Launch wlogout
SUPER + S Launch spotify
SUPER + Y Launch youtube-music
SUPER + SHIFT + D Launch discord
SUPER + SHIFT + T Launch telegram
SUPER + SHIFT + L Launch swaylock
SUPER + SHIFT + S Take screenshot
SUPER + E Launch swappy to edit last taken screenshot
SUPER + R Record screen area (MP4)
SUPER + SHIFT + R Record screen area (GIF)
SUPER + C Color picker
SUPER + V Launch clipboard menu (rofi -dmenu)
SUPER + SHIFT + V Launch clipboard menu (rofi -dmenu) (copy to clipboard)
SUPER + X Launch clipboard deletion item menu (rofi -dmenu)
SUPER + SHIFT + X Clear clipboard
SUPER + U Launch bookmark menu (rofi -dmenu)
SUPER + SHIFT + U Add text from clipboard to bookmark
SUPER + CTRL + U Launch bookmark deletion item menu (rofi -dmenu)
SUPER + SHIFT + A Toggle airplane mode
SUPER + SHIFT + N Toggle notifications
SUPER + SHIFT + Y Toggle bluetooth
SUPER + SHIFT + W Toggle wifi
SUPER + P Toggle play-pause player
SUPER + ] Player next track
SUPER + [ Player previous track

You can find all other keybindings in /home/.config/hypr/hyprland.conf in the bind section. All system fish scripts are located at /home/.config/fish/functions directory.

🦀 Useful info for Rustaceans

Here are some tips to enhance your Rust experience on this system:

  1. Installation Customization: This system utilizes rust-overlay for Rust installation using the Nix approach. To customize the installation, including modifications to compilation targets, components, channels, or profiles, follow these steps:

    • Locate the /nixos/rust-toolchain.toml file and make the necessary adjustments based on your requirements.

    • If you are working on multiple projects with distinct rust-toolchain.toml files or need to switch between stable and nightly Rust versions, consider the following options:

      • Install rustup through configuration.nix and nixpkgs for a system-wide Rust setup. This allows you to manage Rust versions globally through rustup.

      • Alternatively, you can set up a Nix environment using flake.nix and rust-overlay for each project separately. Utilize nix develop to manage project-specific Rust environments.

  2. Troubleshooting Compilation Issues: If you encounter problems during Rust compilation, especially those related to OpenSSL or SQLite (refer here), leverage the rustenv fish function. This function is an alias for the nix-shell -p pkg-config openssl sqlite --run fish command, opening a Nix shell with the necessary dependencies for seamless code compilation. Additionally, if you use Nix shell, compilation will occur in the runtime directory, which might be insufficient for some projects. You can adjust the runtime directory size in configuration.nix under services.logind.extraConfig="RuntimeDirectorySize=4G".

  3. Cross-Compilation: For cross-compilation, consider using tools like zigbuild or cross. Personally, I find zigbuild preferable, but both are valuable options for your cross-compilation needs.

  4. Cargo and Rust Tools: This system comes equipped with a variety of cargo and rust tools to ensure a smooth Rust development experience. Some of these tools include:

    • rust-analyzer
    • cargo-deny
    • cargo-audit
    • cargo-update
    • cargo-edit
    • cargo-outdated
    • cargo-license
    • cargo-tarpaulin
    • cargo-cross
    • cargo-zigbuild
    • cargo-nextest
    • cargo-spellcheck
    • cargo-modules
    • cargo-bloat
    • bacon
  5. Environment Setup: You can set up your Rust project environment on this system using nix develop or nix-shell with default.nix, shell.nix, or flake.nix to create a tailored environment for your Rust project.

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

Description
Linux 🐧 configuration based on NixOS ❄️, Hyprland, and Catppuccin Macchiato theme 😸 for a consistent, complete, and customizable experience. 🚀
Readme MIT 39 MiB
Languages
Shell 29.8%
CSS 27.3%
Nix 21.4%
Python 13.1%
Scheme 4.2%
Other 4.2%