SkillAgentSearch skills...

Linux Nixos Hyprland Config Dotfiles

Linux 🐧 configuration based on NixOS ❄️, Hyprland, and Catppuccin Macchiato theme 😸 for a consistent, complete, and customizable experience. 🚀

Install / Use

npx skills add XNM1/linux-nixos-hyprland-config-dotfiles

Installs into whichever agent you are using.

README

<div align="center"><img src="home/.config/fastfetch/logo_nixos.png"></div> <h1 align="center">NixOS & Hyprland with Catppuccin Macchiato Theme Configuration</h1> <div align="center">

nixos nixpkgs linux kernel hyprland rust

</div>

Showcase Gif

Table of Contents

📖 About

This repository houses my NixOS Linux ❄️ flake 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.

[!NOTE] 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.

This system leverages cutting-edge channels and versions of software to provide you with the latest updates and features. Notably, it utilizes:

  • flake (An experimental feature of the Nix package manager)
  • ~~nur (The Nix User Repository)~~ *currently disabled
  • nixpkgs: unstable
  • rust: stable version

This approach ensures that you stay on the forefront of technology, receiving the most recent software advancements promptly.

[!WARNING] However, it's important to note that this emphasis on bleeding-edge software may impact the stability of the system.

[!IMPORTANT] Please note that the system utilizes Podman instead of Docker for containerization due to various reasons, primarily related to security (rootless and daemonless containers), easier migration to Kubernetes, availability of pods, compatibility with systemd, and better security for distrobox. If you prefer to use Docker instead of Podman, you can make the switch by commenting out the Podman section in the nixos/virtualisation.nix file and uncommenting the Docker section. More details on Docker configuration in NixOS can be found here.

[!NOTE] The system enables AppArmor and additional hardening through kernel LSMs, along with security services such as Fail2Ban and USBGuard. Firejail is also preinstalled for sandboxing desktop applications.

You have the flexibility to customize these configurations according to your needs by modifying the respective configuration files.

🌟 Showcase

[!IMPORTANT] 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 | Kitty + Starship | | OSD | Avizo | | Night Gamma | Hyprsunset | | Fetch Utility | Fastfetch | | Theme | Catppuccin Macchiato | | Icons | Colloid-teal-dark, Numix-Circle | | Font | JetBrains Mono + Nerd Font Patch | | Player | Pear Desktop + Spotify | | File Browser | Thunar + Yazi | | Internet Browser | Qutebrowser, Brave + Vimium + NightTab + Stylus | | Mimetypes | MPV, Imv, Zathura | | Image Editor | Swappy | | Screenshot | Grim + Slurp | | Recorder | Wl-screenrec | | Color Picker | Hyprpicker | | Clipboard | Wl-clipboard + Cliphist + Wl-clip-persist | | Idle | Hypridle | | Lock | Hyprlock | | Logout menu | Wlogout | | Wallpaper | Hyprpaper | | Graphical Boot | Plymouth + Catppuccin-plymouth | | Display Manager | Greetd + Tuigreet | | Containerization | Podman | | Mesh VPN | Tailscale |

And many other useful utilities. The full list can be found in the system configuration files at nixos directory.

✨ 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.

🔗 Tailscale

Tailscale is enabled through nixos/vpn.nix, with the tailscale CLI installed. Routing features are disabled, and the configured Tailscale UDP port is allowed through the firewall.

After rebuilding the system, authenticate the machine and verify its connection:

sudo tailscale up
tailscale status

🚀 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, peripherals, file systems, etc. in the configuration files.

[!IMPORTANT] Ensure that you configure USBGuard in the nixos/usb.nix file to avoid potential issues. By default, USBGuard blocks all USB devices, which can lead to the disabling of crucial hardware components such as the integrated camera, bluetooth, wifi, etc. To configure USBGuard properly, add your trusted USB devices to the configuration. You can obtain a list of all connected devices by using the lsusb command from the usbutils package.

[!WARNING] Failure to configure USBGuard appropriately may result in the inability to connect any USB devices to your machine. If needed, you can also disable USBGuard altogether by setting services.usbguard.enable to false in the configuration:services.usbguard.enable = false;. This step ensures that USBGuard is not actively blocking any USB devices.

[!IMPORTANT] Remember to update the monitor settings in the Hyprland configuration file located at home/.config/hypr/hyprland.conf.

[!IMPORTANT] Also, important: If you use disk encryption with LUKS and want to use encrypted swap, you need to enable swap on LUKS. This is usually auto-generated in /etc/nixos/configuration.nix as the boot.initrd.luks.devices."luks-...".device = "/dev/disk/by-uuid/..."; code block, if you set this option up during the NixOS installation process. You can simply copy this snippet to either nixos/swap.nix, nixos/hardware-configuration.nix, or nixos/configuration.nix (Personally, I prefer to copy it to hardware-configuration.nix). Alternatively, you can set it up manually or use swap encryption with a random key.

  1. 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.

[!IMPORTANT] Make sure to change the username to match yours set during installation to avoid login issues.

[!IMPORTANT] Also, don't forget to delete or change to my git settings in home/.gitconfig, home/projects/.gitconfig.personal, home/.ssh/config, and home/work/.gitconfig.work files, as they are configured for my personal use.

  1. For the first rebuild, enable nix-command and flakes temporarily if your current system does not already have them (more here). After the first successful rebuild, this repo keeps both feat

Related Skills

View on GitHub
GitHub Stars929
CategoryDevelopment
Updated1d ago
Forks54

Languages

Shell

Security Score

100/100

Audited on Aug 7, 2026

No findings