Skip to content

JMoogs/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My NixOS + home-manager dotfiles

NixOS version: Unstable

The main thing this does beyond a standard NixOS setup is a single-variable theme system — themingModule.theme is the only value you change to switch themes, and home/theming/getTheme.nix propagates it everywhere (GTK, Neovim, Waybar CSS, Kitty, Zellij, Rofi, Dunst, Hyprland borders, lock screen wallpaper). Each theme is also baked into the bootloader as a separate entry via NixOS specialisations.

Setup

General

Desktop

Utilities

  • File manager: Yazi
  • System monitor: Bottom
  • Media player: mpv with sponsorblock, MPRIS, quality menu
  • Image viewer: kitten icat
  • PDF viewer: Firefox

Notable bits

  • Neovim is configured entirely through NixVim — the whole thing is a Nix module. LSPs: clangd, nil_ls, pyright, rust_analyzer, hls, metals, ts_ls, eslint, tinymist, jsonls.
  • Discord plugins and themes are managed declaratively via Nixcord (Vencord on Vesktop).
  • pkgs/wayland-push-to-talk-fix.nix is a custom Nix package wrapping a C tool that remaps a mouse button to a virtual keypress, needed for Discord PTT on Wayland where button passthrough doesn't work natively.
  • userOptions.device in flake.nix gates monitor layout, workspace bindings, battery widget, idle timeouts, and package lists — the same config targets both PC and laptop.
  • scripts/shells/ has per-language Nix dev shells for Rust, Python, C++, and Haskell. Enter any with dev (nix-shell --command fish).
  • Waybar workspace labels are Japanese kanji (一二三…).

Structure

flake.nix              userOptions (theme, device, nvidia, wm)
configuration.nix      system-level config
home.nix               home-manager entry point
home/
  theming/
    theming.nix        NixOS option: themingModule.theme
    getTheme.nix       maps theme name → all per-app configs
  hypr/                Hyprland + hyprlock + hypridle
  wm/                  Waybar + per-theme CSS + cava
  shell/               Fish, Kitty, Zellij
  neovim.nix
  discord.nix
modules/
  nvidia.nix           NVIDIA Wayland (explicit sync, VAAPI, container toolkit)
  jellyfin.nix         Jellyfin + Sonarr + Bazarr
hosts/main/            hardware config, bootloader, kernel (r8125 driver)
pkgs/                  custom package derivations
scripts/
  wallpaper_lutgen.sh  applies palette LUTs to source wallpapers via lutgen
  shells/              per-language nix-shells

Installation

This config expects the repo at /etc/nixos — theme asset paths and the Zellij theme directory are hardcoded there.

sudo git clone <repo> /etc/nixos
sudo nixos-rebuild switch --flake /etc/nixos#Jeremy-nixos

To change theme, set theme in flake.nix ("frappe", "latte", or "dracula") and rebuild. The three themes are also available as separate bootloader entries without editing anything.

To target laptop instead of PC, set device = "laptop" in flake.nix.

Wallpapers (requires lutgen in $PATH, run from the wallpapers/ directory):

bash ../scripts/wallpaper_lutgen.sh

Source images go in wallpapers/originals/ (or wallpapers/originals/anime/). Already-converted files are skipped.

About

My NixOS config

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors