Skip to content

Personal config files for NixOS. See my other rices in the link below!

License

Notifications You must be signed in to change notification settings

datsfilipe/dotfiles

Repository files navigation

datsfilipe dotfiles

GitHub Repo stars GitHub issues

Preview

Structure

.
├── assets
├── hosts
│   ├── dtsf-laptop
│   └── dtsf-pc
├── lib
├── modules
│   ├── core
│   │   ├── boot
│   │   ├── nix
│   │   ├── security
│   │   ├── shell
│   │   ├── system
│   │   └── user
│   ├── desktop
│   │   ├── addons
│   │   ├── display-manager
│   │   ├── fonts
│   │   ├── wallpaper
│   │   └── wms
│   ├── editors
│   ├── hardware
│   │   ├── audio
│   │   ├── bluetooth
│   │   ├── monitors
│   │   └── nvidia
│   ├── programs
│   ├── secrets
│   ├── themes
│   └── wallpaper
├── outputs
│   └── x86_64-linux
│       └── src
├── pkgs
├── scripts
├── templates
└── vars

General directories

  • assets: images and other assets used in the readme.
  • hosts: hosts definitions (entry points for configurations).
  • lib: utility functions, including the recursive module scanner (file.nix).
  • modules: feature-based configuration modules (Vertical Slices).
    • core: base system definitions (boot, nix settings, security).
    • desktop: window managers (niri, i3, sway), addons (waybar, rofi), and desktop-specific configs.
    • editors: text editor configurations (neovim).
    • hardware: hardware abstraction (audio, bluetooth, nvidia).
    • programs: gui apps, cli tools, and terminal emulators.
    • secrets: secrets module using sops.
    • themes: centralized theming logic.
    • wallpaper: wallpaper definition.
  • outputs: outputs of the config.
  • pkgs: custom packages and scripts.
  • scripts: maintenance and utility scripts.
  • templates: flake templates.
  • vars: global variables used in the config.

General slices

The repository now uses a Vertical Slice architecture. Instead of separating by layer (home/system), files are organized by feature.

  • File Naming Convention:
    • os.nix: Contains NixOS configurations (services, drivers, portals, users).
    • user.nix: Contains Home Manager configurations (programs, dotfiles, themes).
    • default.nix: Shared logic or variables.
  • Module Categories:
    • core: Essential system components required for the OS to function.
    • desktop: Everything related to the graphical environment.
    • hardware: Hardware-specific configurations.
    • programs: User-facing applications.
    • themes: Theming logic applicable to both OS and User layers.

Usage

  • To add a new host, create a host definition in hosts/. You can now toggle features by importing the scanner and enabling specific modules (e.g., modules.desktop.wms.niri.system.enable = true).
  • nixos-generate-config can be used to generate a new host hardware configuration file.
  • This repository submodules use ssh url's, so you need to update it as needed.
  • flake.nix should never be edited manually, as it is generated by just generate-flake using templates/flake.template.nix.

Star History

Star History Chart

Sponsor this project