Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

819 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NixOS Jonwin

My NixOS configuration for multiple hosts, built using the dendritic pattern with flake-parts and import-tree.

screenshot

Features

  • 🖥️ Multiple Hosts Support: Easy to configure for different hosts.
  • 🪟 Hyprland + Waybar: Highly configurable window compositor on Wayland.
  • ⚙️ Rofi + jwmenu: Applications launcher and custom system menus.
  • 🏠 Home Manager Integration: Manage user-specific configurations with ease.
  • 🐚 Zsh + Starship: Efficient shell setup with useful aliases.
  • 👻 Ghostty: Fast and feature-rich terminal emulator.
  • ✍️ Neovim: Configured through nvf, see jonwin1/nvf-config.
  • 🔑 YubiKey Login: Fast and secure authentication with YubiKeys.
  • 💾 Full Disk Encryption: YubiKey-based FDE for secure and convenient unlock.
  • Stylix: Unified system theming.

Host Template

TODO

Module Template

Every module exports a NixOS module and may optionally contain a Home Manager module which is imported by the NixOS module, this avoids having to differentiate between NixOS and Home Manager modules when importing.

{ self, imports, ... }: {
  flake.nixosModules.MODULE = { pkgs, lib, config, ... }: {
    home-manager.users.${config.my.username}.imports = [
      self.homeModules.MODULE
    ];

    # NixOS options
  };

  flake.homeModules.MODULE = { pkgs, lib, my, ... }: {
    # my on the line above is equivalent to config.my in nixosModules

    # Home Manager options
  };
}

Installation

https://jonwin.se/posts/yubikey-fde/

TODO

Project Structure

📂 .
├ 📂 modules                  Imported by import-tree
│ ├ 📂 apps                   GUI applications
│ ├ 📂 collections            of core modules and programs
│ ├ 📂 drivers                E.g. Nvidia GPU
│ ├ 📂 hosts
│ │ └ 📂 hostname
│ │   ├ ❄️ configuration.nix  Host-specific nixos and home-manager options
│ │   ├ ❄️ default.nix        Module imports
│ │   ├ ❄️ hardware.nix       Hardware configuration (Generated)
│ │   └ ...                   Host-specific modules
│ ├ 📂 scripts                Custom scripts installed as packages
│ ├ 📂 shell                  Shell and terminal applications
│ ├ 📂 system                 System services and programs (network, audio, wm, ...)
│ ├ ❄️ parts.nix              flake-parts config
│ └ ❄️ template.nix           Module template (as explained previously)
└ ❄️ flake.nix                Main entry point

Contributions

Contributions and suggestions are welcome, and feel free to use anything you find here in your own configuration.

License

This project is licensed under the GPL-3.0 License. See the LICENSE file for details.

Used by

Contributors

Languages