Skip to content

xhos/nix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

613 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

❄️ nix

old screenshots

old setup using aard

all wallpapers can can be found here

main features

  • modular setup, everything is toggleable and switchable
  • easy full system theming with stylix, based on the wallpaper or a base16 scheme
  • secret management with sops-nix
  • touch support with hyprgrass
  • integrated onedrive & protondrive mounts
  • preconfigured web apps
  • fully-themed login screens with sddm and grub

homelab

enrai is my headless optiplex 5050 running a bunch of cool things, ~99% declarative. zsh, impermanence, secrets, all that good stuff:

  • fully declarative *arr stack thanks to upidapi's declarr. (tho i use my own fork of it for some extra features)
  • networking: caddy reverse proxy with cloudflare acme + nat port forwarding over wirguard to the vps running my nix-wg-proxy
  • home assistant: yandex station max controlling wled and wled-album-sync
  • proxmox-nix running 2 vms, one for game servers, other for amnezia vpn (the only not fully declarative part)
  • zipline, wakapi, synthing, glance and more

repo structure

  • flake.nix: main entrypoint, defines system and home configurations
  • lib/: custom Nix library functions and builders (e.g., import-tree)
  • modules/:
    • home/: home-manager modules
      • core/: essential user configurations and host-specific entrypoints (prefixed with _)
      • opt/: optional and toggleable modules (apps, cli tools, bar, wms, etc)
    • nixos/: system-level modules
      • core/: base system configs, and per-host definitions (prefixed with _)
      • opt/: optional and toggleable modules (impermanence, nvidia config, etc)
  • pkgs/: custom packages and derivations

about import-tree and mk-nixos-system

usually, in nix code you have to import each file, or folder if using default.nix one by one. But in my config I am using import-tree pointed at the default.nix files at the top of nixos/ and home/ that look like {inputs, ...}: inputs.import-tree [./core ./opt]. This allows every single file in those 2 folder to be imported automaticly, without adding it to an import list in any other file. No other default.nix files are needed.

Since hosts need to have their own separate thin modules, that should not be imported by others, import-tree ignores any folder that starts with _. This allows my home-manager and nixos entry points to live under modules/home/core/_vyverne/home.nix.

mk-nixos-system is another custom function. It's a helper that returns lib.nixosSystem and takes in the hostname and some other args. Based on that host name, it finds the right entry points for nixos and home-manager.

info

component details
de/wm hyprland
greeter yawn (i made this!)
terminal foot
shell zsh
bar waybar
browser zen
runner rofi
prompt starship
file manager nautilus
notification mako
clipboard manager clipse
fetch fastfetch

hyprlock

name preview sources
Main (Animated) main Hyprlock Style config
assets
scripts
fonts
Alternative (Static) alternative Hyprlock Style config
assets
scripts
fonts

fonts used are:

  • Maratype (credit to @notevencontestplayer on discord)
  • KH Interference
  • Synchro
  • Nimbus Sans L Thin
  • Nimbus Sans Black

themed apps

Note

most of these automatically follow the stylix color scheme

acknowledgments

About

nixos configs for ~5 hosts + homelab

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages