Skip to content

JakeNeau/Jake-Neau-NixOS-Config

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


NixOS Logo

Jake Neau's NixOS Configuration

A complete system configuration for my systems for use with the Nix package manager
Report Bug · Request Feature

demo_video.mp4
Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact

About The Project

This is my NixOS config to fully define any system I want to build. It include configuration for installing anything on a fully-featured system of mine, and the Home Manager configs for editing the configuration of installed software. The usage of Home Manager in this project is to the point that some would call it dogmatic, but it makes all config reproducible between systems. The configuration is organized with the Dendritic Pattern on top of flake-parts: every .nix file under modules/ is a feature, auto-imported by import-tree, and hosts (modules/hosts/) and users (modules/users/) are themselves features composed of smaller ones. flake.nix is auto-generated by flake-file — declare inputs in a feature's flake-file.inputs and run nix run .#write-flake. See .claude/skills/nix-config/ for the full guide.

(back to top)

Core Design Principles

  • You should avoid all package managers except the Nix Package Manager
  • Any program configuration that is possible through home manager should be done through home manager
  • Prefer configuration implementations that fully utilize flakes

Built With

  • Nix
  • NixOS

(back to top)

Getting Started

This is intended to run on a NixOS system currently. Check back in the future for other environments like MacOS.

Prerequisites

Install a NixOS from an image file. You will need a usb to flash the image onto, and a program to etch the image onto the USB. On *nix systems, dd can be used:

  dd if=/path/to/your/isofile of=/your/usb/disk bs=8M status=progress

Installation

  1. Clone the repo into /etc/nixos/
    cd /etc/nixos/
    rm -f configuration.nix
    git clone https://github.com/jakeneau/Jake-Neau-NixOS-Config.git
    mv ./Jake-Neau-NixOS-Config/* .
    rm -rf ./Jake-Neau-NixOS-Config
  2. Copy keys.txt into secrets/ to decrypt password hash
  3. Build the system
    sudo nixos-rebuild switch --flake /etc/nixos/

(back to top)

Usage

The Niri Window Manager is used as the graphical interface for the system. Here are a few of the common shortcuts I have configured

  • Mod + Space: Open application launcher
  • Mod + q: Open new terminal emulator
  • Mod + c: Close focused window

Additionally Fish is used for interactive shells. Here are some shortcuts I have configures with fish.

  • nrr: Rebuild the system and push to GitHub with a default update status message
  • nr "message": Rebuild the system and push to GitHub with the message "message", a generation number is appended
  • nr: Amend the last commit and push to GitHub with the same message byt a new generation number

(back to top)

Roadmap

  • Get the Niri Window Manager looking nicer
    • Find a way to make screens take up an exactly 16:9 form factor on ultrawides
    • Re-enable Noctalia Shell for beautiful bars and widgets
    • Fix wallpapers that broke after moving from Hyprland
  • Move repository to the Dendritic Pattern
  • The hardware-configuration.nix file needs to be tracked despite being different on different machines, find a way around this for multi-environment
  • Configure a cut-down environment for laptops
  • Configure Nix Darwin environment for MacOS development
  • Configure NixOS-WSL environment for Windows development (still debating this one)
  • Update the README with SOPS specific instructions

(back to top)

Contributing

If you seriously want to spend your time contributing to someone else's system configuration, I'm not going to stop you. All contributions are welcome if they adhere to the principles of the project.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement"

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Top contributors:

contrib.rocks image

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Jake Neau - jakeneau@proton.me

Project Link: https://github.com/JakeNeau/Jake-Neau-NixOS-Config

(back to top)

About

My NixOS configuration files that fully define my system

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages