Skip to content

knoopx/nix

Repository files navigation

My NixOS Setup

This is my personal NixOS configuration for a clean, keyboard-focused development machine. I built it to keep things simple, consistent, and distraction-free while coding.

demo.mp4

Try Out

nix run github:knoopx/nix

What I Focus On

  • Minimal clutter: Shell has no widgets and apps take the whole vertical space. Pressing Super reveals the overlay with the widgets.
  • Unified styling: Consistent colors, fonts, and styles across:
    • System GTK/Qt themes and custom Neuwaita icon theme (merged with MoreWaita)
    • Terminal emulators (Kitty, Alacritty)
    • Text editors (VSCode, Helix, Zed)
    • Web browsers (Firefox with custom userstyles)
    • Window manager (Niri with custom color schemes)
    • Desktop shell (Astal with theme-aware widgets)
  • Reproducible: Everything's declarative, so I can set it up the same way anywhere

Software

Main Components

  • Niri: A modern, Wayland-native tiling window manager that provides efficient keyboard-driven window management. It supports custom layouts, workspaces, and seamless integration with the desktop environment for a distraction-free coding experience.
  • Astal Shell: A custom desktop shell built on Astal framework, featuring theme-aware widgets for system monitoring, notifications, and quick access to applications.
  • Vicinae: Application launcher inspired by Raycast
  • Firefox: Web browser optimized for privacy with uBlock Origin for ad-blocking, custom search engines, and userstyles for consistent theming. Includes policies for enhanced security and performance thanks to BetterFox
  • Kitty: GPU-accelerated terminal emulator
  • Fish: The user-friendly command line shell.
  • Hyprlock: Screen locker with custom theme
  • VSCode: Primary code editor. Configured with custom keybindings, themes, and productivity tools for development

Development Environments

The modules/home-manager/packages/dev/ directory contains language-specific development environments, each providing essential tools for programming in that language:

  • Crystal: Compiler, Crystalline language server, Shards package manager, and Mint framework for building web applications
  • Go: Compiler, gopls language server, Delve debugger, and build tools for efficient Go development
  • JavaScript: Node.js runtime, package managers (Yarn, pnpm), TypeScript compiler, and development utilities for modern web development
  • Nix: nixpkgs-fmt formatter, linter, and nixd language server for Nix language development and configuration
  • Python: Interpreter, package managers (pip, poetry), virtual environment tools, and development utilities
  • Ruby: Interpreter, Bundler for dependency management, and development tools for Ruby applications
  • Rust: Compiler, Cargo package manager, and additional tools for Rust development
  • System: C/C++ compilers (GCC, Clang), build tools, and system-level development utilities

How It's Organized

My Machines

  • desktop/: Main workstation featuring:
    • NVIDIA graphics with CUDA support
    • BTRFS filesystem with advanced features
    • Container services (Watchtower for updates)
    • Hardware acceleration for AI models
  • minibook/: Chuwi Minibook X N150 laptop configuration:
    • Hardware-specific drivers and optimizations
    • Power management and battery optimizations
  • vm/: Virtual machine setup for testing
  • live-usb/: Bootable USB configuration for system recovery and installation

Modules

  • modules/nixos/: System-level configurations including:
    • defaults/: Global settings for AI, colors, display, fonts, system, and user
    • services/: System services (Plex Media Server, Traefik, Android backup, auto-scrcpy, etc.)
    • system/: Core system settings (boot, networking, hardware, packages)
    • theming/: Stylix theming configuration
    • wm/: Window manager and desktop environment settings
  • modules/home-manager/: User environment configurations:
    • packages/: User packages and development tools
      • dev/: Language-specific development environments
      • cli.nix: Command-line interface utilities
      • gtk.nix: GTK-related packages
    • programs/: Application configurations (VSCode, Firefox, Kitty, etc.)
    • services/: User services and daemons
    • wm/: Window manager user settings
    • environment/: User environment variables and session settings
  • overlays/: Package customizations and fixes:
  • builders/: Helper functions for creating package derivations
  • lib/: Utility functions for theming, color manipulation, and module loading
  • pkgs/: Custom package definitions (Neuwaita Icon Theme, MoreWaita Icon Theme, Llama Swap, Vicinae, etc.)
  • flake.nix: Main flake with inputs, outputs, and system configurations
  • flake.lock: Dependency lock file for reproducible builds

About

Niri + AGS based desktop environment on top of nixos

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published