Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 38 additions & 146 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,176 +1,68 @@
###### *<div align="right"><sub>// design by t2</sub></div>*

<div align="center">

[![NixOS Unstable](https://img.shields.io/badge/NixOS-unstable-blue.svg?style=flat-square&logo=NixOS&logoColor=white)](https://nixos.org)
[![Release](https://img.shields.io/github/v/release/richen604/hydenix?style=flat-square)](https://github.com/richen604/hydenix/releases)
[![Last Commit](https://img.shields.io/github/last-commit/richen604/hydenix/main?style=flat-square)](https://github.com/richen604/hydenix/commits/main)

[![Nix Flake Check](https://github.com/richen604/hydenix/actions/workflows/flake-check.yml/badge.svg?style=flat-square)](https://github.com/richen604/hydenix/actions/workflows/flake-check.yml)
[![NixOS Unstable](https://img.shields.io/badge/NixOS-unstable-ebbcba.svg?style=flat-square&logo=NixOS&logoColor=white)](https://nixos.org)
[![Release](https://img.shields.io/github/v/release/richen604/hydenix?style=flat-square&color=c79bf0)](https://github.com/richen604/hydenix/releases)
[![Last Commit](https://img.shields.io/github/last-commit/richen604/hydenix/main?style=flat-square&color=ebbcba)](https://github.com/richen604/hydenix/commits/main)
[![Nix Flake Check](https://img.shields.io/github/actions/workflow/status/richen604/hydenix/flake-check.yml?style=flat-square&color=c79bf0&label=flake%20check)](https://github.com/richen604/hydenix/actions/workflows/flake-check.yml)

</div>

<div align = center>
<a href="https://discord.gg/AYbJ9MJez7">
<img alt="Dynamic JSON Badge" src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscordapp.com%2Fapi%2Finvites%2FmT5YqjaJFh%3Fwith_counts%3Dtrue&query=%24.approximate_member_count&suffix=%20members&style=for-the-badge&logo=discord&logoSize=auto&label=The%20HyDe%20Project&labelColor=ebbcba&color=c79bf0">
</a>
</div>

<!--
<a href="https://discord.gg/AYbJ9MJez7">
<img alt="Dynamic JSON Badge" src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscordapp.com%2Fapi%2Finvites%2FmT5YqjaJFh%3Fwith_counts%3Dtrue&query=%24.approximate_member_count&suffix=%20members&style=for-the-badge&logo=discord&logoSize=auto&label=The%20HyDe%20Project&labelColor=ebbcba&color=c79bf0">

<img alt="Dynamic JSON Badge" src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscordapp.com%2Fapi%2Finvites%2FmT5YqjaJFh%3Fwith_counts%3Dtrue&query=%24.approximate_presence_count&suffix=%20online&style=for-the-badge&logo=discord&logoSize=auto&label=The%20HyDe%20Project&labelColor=ebbcba&color=c79bf0">
-->

<div align="center">

![hyde_banner](https://raw.githubusercontent.com/prasanthrangan/hyprdots/main/Source/assets/hyde_banner.png)

</a>
<br>

<a href="#installation-options"><kbd> <br> Installation <br> </kbd></a>&ensp;
<a href="#upgrading"><kbd> <br> Upgrading <br> </kbd></a>&ensp;
<a href="#troubleshooting--issues"><kbd> <br> Issues <br> </kbd></a>&ensp;
<a href="#faq"><kbd> <br> FAQ <br> </kbd></a>&ensp;
<a href="#contributing"><kbd> <br> Contributing <br> </kbd></a>&ensp;
<a href="https://www.youtube.com/watch?v=2rWqdKU1vu8&list=PLt8rU_ebLsc5yEHUVsAQTqokIBMtx3RFY&index=1"><kbd> <br> Youtube <br> </kbd></a>&ensp;
<a href="https://discord.gg/qWehcFJxPa"><kbd> <br> Discord <br> </kbd></a>
<https://github.com/user-attachments/assets/7f8fadc8-e293-4482-a851-e9c6464f5265>

</div><br><br>
</div>

<video controls src="https://private-user-images.githubusercontent.com/106020512/324331744-7f8fadc8-e293-4482-a851-e9c6464f5265.mp4?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzAxNzIwODEsIm5iZiI6MTczMDE3MTc4MSwicGF0aCI6Ii8xMDYwMjA1MTIvMzI0MzMxNzQ0LTdmOGZhZGM4LWUyOTMtNDQ4Mi1hODUxLWU5YzY0NjRmNTI2NS5tcDQ_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQxMDI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MTAyOVQwMzE2MjFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03YTBiNDVjZThhZjU4NmY1MTc4NTRjYzEyZTBmYjRmZjI0YTY0ZTIyNWU2NTlhMTBkZmIxOWFlOWQ0YzQ5YTAyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.cTLUInzudFw4tmHUS1K32e6hx3umv84Ka2sDCuzrUig" title="https://github.com/prasanthrangan/hyprdots/assets/106020512/7f8fadc8-e293-4482-a851-e9c6464f5265"></video>
<br>

<br><div align="center"><img width="16.5%" alt="NixOS" src="https://github.com/HyDE-Project/HyDE/blob/master/Source/assets/nixos.png?raw=true"/></div>
<img align="right" width="75px" alt="NixOS" src="https://github.com/HyDE-Project/HyDE/blob/master/Source/assets/nixos.png?raw=true"/>

# Hydenix
# hydenix

Hydenix is a Nix & home-manager configuration for [HyDE](https://github.com/HyDE-Project/HyDE).
The nix ecosystem brings a reproducable environment to the HyDE experience; allowing for build-time configuration options, easy updates, and more.
a nixos and home-manager configuration for [HyDE](https://github.com/HyDE-Project/HyDE)

Features:
**features / why nixos? :**

- `hydenix` and `hydenix.hm` (home-manager) options for easy configuration
- Themes are fetched at build-time, for faster setup
- declarative `hydenix` and `hydenix.hm` configuration options
- leveraged module system, easily extend disable or override any module
- close feature parity with [HyDE](https://github.com/HyDE-Project/HyDE)
- every community [hyde-gallery theme](https://github.com/HyDE-Project/hyde-gallery)
- reproducible environments with easy rollbacks
- version control for your desktop

Why Nix?:
## requirements

- Reproducible environment
- Easy to manage packages, dependencies, and configurations
- changes in configuration can be rolled back easily
- home-manager for managing dotfiles
- minimal install of nixos, follow instructions on [nixos iso](https://nixos.org/download/#nixos-iso)

> [!IMPORTANT]
> Experience in functional programming is recommended.
> If you are new to Nix, please refer to the [Nix Resources](docs/faq.md#how-do-i-learn-more-about-nix).
> Feel free to ask questions in discussions or discord.

---

## Requirements

- minimal install of NixOS, follow instructions on [NixOS ISO](https://nixos.org/download/#nixos-iso)
- experimental features enabled:

```bash
# Add to /etc/nixos/configuration.nix
nix.settings.experimental-features = [ "nix-command" "flakes" ];

# then rebuild your system
sudo nixos-rebuild switch
```

- git (`nix-shell -p git`)
> functional programming experience recommended. <br>
> new to nix? see [nix resources](./template/docs/faq.md#how-do-i-learn-more-about-nix) or ask in discussions/discord.

---
## documentation

## Documentation
- [installation](./template/docs/installation.md)
- [upgrading](./template/docs/upgrading.md)
- [module options](./template/docs/options.md)
- [faq](./template/docs/faq.md)
- [troubleshooting & issues](./template/docs/troubleshooting.md)
- [contributing](./template/docs/contributing.md)
- [community configs](./template/docs/community.md)
- [todo - sneak peak of whats coming soon](./TODO.md)

- [Installation Options](#installation-options)
- [FAQ](./docs/faq.md)
- [Troubleshooting & Issues](./docs/troubleshooting.md)
- [Contributing](./docs/contributing.md)
## hydenix vm

## Installation Options

---

> [!CAUTION]
> Templated flake is designed for a minimal install of NixOS.

### 1. Template the Hydenix Flake

1. in a new directory, `nix flake init -t github:richen604/hydenix`
2. edit `configuration.nix` with your preferences for hydenix
- options needing to be changed are marked with `! EDIT`
- (optional) in your template flake folder, review both `./configuration.nix` and `./modules/hm/default.nix` for more options
3. run `sudo nixos-generate-config --show-hardware-config > hardware-configuration.nix`
4. `git init && git add .` (flakes have to be managed via git)
5. run any of the packages in your new `flake.nix`
- for rebuild, use `sudo nixos-rebuild switch --flake .`
6. DON'T FORGET: change your password for all users with `passwd` from initialPassword set in `configuration.nix`

NOTE: After launching hydenix, you can run `hyde-shell reload` to generate cache for remaining themes if you want.

### 2. Trying Out Hydenix with a VM

If your system supports it, the NixOS VM is a great way to try out hydenix without installing it.
If you encounter issues running the VM, refer to the [virtio guide](docs/faq.md#how-do-i-run-hyprland-in-a-vm)
if your system supports it, the nixos vm is a great way to try out hydenix without installing it.
if you encounter issues running the vm, refer to the [virtio guide](./template/docs/faq.md#how-do-i-run-hyprland-in-a-vm)

```bash
# run the flake remotely
nix run github:richen604/hydenix
```

> **note:** any changes require the vm to be rebuilt. run `rm hydenix.qcow2` to remove the old one.

## Upgrading

Hydenix can be upgraded, downgraded, or version locked easy.
in your template flake folder, update hydenix to main using

```bash
nix flake update hydenix
```

or define a specific version in your `flake.nix` template

```nix
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
hydenix = {
# Available inputs:
# Main: github:richen604/hydenix
# Dev: github:richen604/hydenix/dev
# Commit: github:richen604/hydenix/<commit-hash>
# Version: github:richen604/hydenix/v1.0.0
url = "github:richen604/hydenix";
};
};
```

run `nix flake update hydenix` again to load the update, then rebuild your system to apply the changes

## When to Upgrade

```mermaid
graph TD
A[v2.3.1] --> B[MAJOR]
A --> C[MINOR]
A --> D[PATCH]
B --> E[Breaking Changes<br>Review Release Notes for API Changes]
C --> F[New Features<br>Safe to Update]
D --> G[Bug Fixes<br>Safe to Update]

style A fill:#c79bf0,stroke:#ebbcba,stroke-width:2px,color:#000
style B fill:#ebbcba,stroke:#c79bf0,stroke-width:2px,color:#000
style C fill:#ebbcba,stroke:#c79bf0,stroke-width:2px,color:#000
style D fill:#ebbcba,stroke:#c79bf0,stroke-width:2px,color:#000
style E fill:#f6f6f6,stroke:#c79bf0,stroke-width:2px,color:#000
style F fill:#f6f6f6,stroke:#c79bf0,stroke-width:2px,color:#000
style G fill:#f6f6f6,stroke:#c79bf0,stroke-width:2px,color:#000
```

- **Always review [release notes](https://github.com/richen604/hydenix/releases) for major updates (API changes)**
- Update to minor versions for new features
- Keep up with patches for stability

> [!NOTE]
> any changes require the vm to be rebuilt. run `rm hydenix.qcow2` to remove the old one.
</div>
161 changes: 54 additions & 107 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,108 +1,55 @@

# todo / roadmap

## now / notes

- [ ] finish demo-vm for video

## next api update

- [ ] hydenix nixOsModules to nixosModules

## priority

- [ ] refactor hydevm to arch compatible then bump to repo

- [ ] docs: better documented first edits
- [ ] add steps for what to edit first
- [ ] add more detailed driver

- [ ] feat: demo-vm
- [ ] video
- [ ]

- [ ] feat: spicetify theme support? flatpak?

- [ ] chore: review bug template

- [ ] feat: hyprland via home-manager only
- support plugins
- use hyprland flake package
- nixGL
- [ ] binary cache
- [ ] feat: experimental module exports #117

## unorganized

- [ ] BREAKING:make hydenix more extensible without losing the ability to upgrade hyde
- [ ] hyde CORE modules
- map a module hierachy, propose a revised api
- modules that are required for hyde must have assertions.

## iso builder

- [ ] feat: iso builder should give a copy of the iso to the user on install
- [ ] feat: iso builder automated install should have more clear options, not just configuration.nix
- [ ] feat: iso builder should tell user exact steps of auto installer, reflect that in the readme
- [ ] fix: iso builder should prompt to edit hostname in flake.nix
- [ ] refactor: expand iso installer sections to be more clear and concise
- [ ] feat: iso installer section option to clone your own personal flake from github and use that instead of the hyde template
- [ ] feat: Completed iso builder

## config.toml integration

- [ ] feat: hyde config.toml module and options in hyde.nix
- [ ] feat: other program configuration should determine hyde config.toml options
- [ ] feat: extend hyde config.toml options for more nix integration

## hyprland.conf

- [ ] feat: more options in hyprland.nix
- [ ] feat: other program configuration should determine hyprland.conf options eg

## hypridle

- [ ] feat: hypridle module and options

## hyprlock

- [ ] feat: better hyprlock options

## uncategorized

- [ ] feat: cleanupOnDisable activation script and option

## CI

- [ ] ci: fix iso builder release flake check

## Future Enhancements

- [ ] Ecosystem
- [ ] feat: Create sddm-hyprland
- [ ] feat: Integrate hydepanel from rubin
- [ ] feat: Add telegram theme support
- [ ] feat: Add zed theme support
- [ ] feat: Add obsidian theme support
- [ ] feat: Add terminal-emulators support
- [ ] feat: full nixos config & full home-manager config
- [ ] feat: Set NIX-PATH to template flake location

## Non-NixOS

<https://github.com/jpikl/pm> for non-nixos packages
specific scripts for each non-nixos distro options, ideally one script for all packages using pm
nixGL wrapping for all programs, well documented in the configuration as users will need to edit it. combine with any driver setup

## Hyde repo

- [ ] theme makers should be able to precache walls before patching
- [ ] requires arch vm (w/ commit hash param and snapshot functionality)
- [ ] hyde-theme-starter to implement /lib with swwwallcache and wallbash
- whatever generates dcols and wallcaches
- [ ] hyde repo themepatcher implement reading for .cache in theme to cp cache and skip
- [ ] validation
- [ ] themepatcher should still generate on missing cache per wall
- [ ] PR's for all themes to bring cache
- [ ] hydenix implementation (just home.file mutable)
- [ ] FUTURE: wallbash should be a seperate lib
# todo

## now

- docs: restyled docs, moved docs to template/docs
- docs: options.md use hydenix.hm.theme as an example instead of hydenix.hm.hyprland

## next

- feat: hyprland flake packages rather than nixpkgs
- feat: new themes to build
- feat: move hyprlock to hyprland module, swaylock should just be swaylock module
- assertion to not have both enabled
- feat: update hyde
- feat: update.sh for themes, map name to hash (check daily), passThru update.sh caller github action
- <https://github.com/NixOS/nixpkgs/blob/nixos-25.05/pkgs/by-name/ad/adi1090x-plymouth-themes/update.sh>
- feat: vscode-nix-ide part of editors, enabled by default
- feat: hyde config.toml options
- feat: extending more options for feature parity with hyde
- fastfetch
- hyprlock
- rofi
- waybar

## 5.0.0

- refactor: removed hydenix.lib to standardize outputs, hydenix nixOsModules to nixosModules
- fix: nix-index should be a module in hydenix only, its declared twice
- fix: rename nix-index home-manager module whatever new name
- feat: user now owns their nixosSystem, depreciated hydenix-nixpkgs.lib.nixosSystem
- feat: hydenix follows its own nixpkgs, no userPkgs overlays, template hydenix follows nixpkgs by default
- update docs to reflect this

## backlog

- finish demo-vm for video
- feat: assertions for common requirements
- chore: review bug template to make it more clear (easier with scripts?)

## future

- binary cache when i build it

## notes

- using nixos-anywhere to install hydenix:
- must be part of the template flake or a new template flake, as it will be used for the user configuration
- document disko configuration clearly, the issue is ive never used disko
- most likely will need its own video installation guide
- cleanupOnDisable activation script and option
- nh by default?
- docs: documentation generation?
- refactor: revise module hierarchy to be more clear and concise?
- feat: spicetify theme support? flatpak?
Loading