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-dotfilesInstalls into whichever agent you are using.
README

Table of Contents
- About
- Showcase
- Components
- Features
- Tailscale
- Installation
- Keybindings
- Useful aliases in Fish Shell
- AI Tools and Services
- Useful info for Rustaceans
- Yubikey on NixOS
- License
📖 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 thenixos/virtualisation.nixfile 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.
🔧 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
- Download and Install NixOS from the official site.
- 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. - Run the command
rg --hidden FIXMEand 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.nixfile 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 thelsusbcommand from theusbutilspackage.
[!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.enabletofalsein 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.nixas theboot.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 eithernixos/swap.nix,nixos/hardware-configuration.nix, ornixos/configuration.nix(Personally, I prefer to copy it tohardware-configuration.nix). Alternatively, you can set it up manually or use swap encryption with a random key.
- To change the default username and/or hostname, run the command
rg --hidden 'xnm'to find and fix all instances of the username, andrg --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, andhome/work/.gitconfig.workfiles, as they are configured for my personal use.
- For the first rebuild, enable
nix-commandandflakestemporarily if your current system does not already have them (more here). After the first successful rebuild, this repo keeps both feat
Related Skills
node-connect
385.5kDiagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures.
blender-python-addon
40.5kBlender Python add-on rules for operators, panels, properties, registration, testing, and API-safe scripting
flutter-development-guidelines-cursorrules-prompt-file
40.5kCursor rules for Flutter development with MVVM architecture, Riverpod state management, Material widgets, and Dart style guidelines.
commit-push-pr
140.7kCommit, push, and open a PR
