Compare commits

...

38 Commits

Author SHA1 Message Date
linusemr618 c6a0a5196a Merge pull request 'Fix Zen' (#5) from linusemr618/nixy:main into main
Reviewed-on: #5
2026-07-22 12:04:24 +00:00
linusemr618 41e2814bc0 merge upstream 2026-07-22 12:03:38 +00:00
Linus Emmerich c00b1353d1 maybe fix zen idk
brauchte doch ein NUR overlay wegen proprietary extensions
2026-07-22 12:54:57 +02:00
linusemr618 1234d20495 Merge pull request 'add zen du pic' (#4) from linusemr618/nixy:main into main
Reviewed-on: #4
2026-07-21 21:49:04 +00:00
Linus Emmerich b8be0e0c27 add zen du pic
eat my feet
2026-07-21 23:46:59 +02:00
kptltd00m 59e6f4015a feat(tor): add tor service files 2026-07-19 20:14:58 +02:00
kptltd00m ffe610e64f add tor browser and cwtch 2026-07-17 15:34:56 +02:00
kptltd00m 1c6d700768 enables dynamic linking and added extraGroups to user 2026-07-12 23:27:36 +02:00
kptltd00m 8a4c1e7f1d feat(dev): add Claude Code package to development environment 2026-07-10 16:50:35 +02:00
kptltd00m 93bf7545cc chore(dev): replace VS Code with VSCodium in dev-packages
Switched the development environment to use the open‑source VSCodium build instead of Microsoft VS Code
2026-07-10 16:43:58 +02:00
kptltd00m d3e18dfc53 add keepass, fix docker 2026-07-09 16:52:34 +02:00
kptltd00m b173c4d44f feat: music apps, vscode, kodi and keepass 2026-07-09 16:52:00 +02:00
kptltd00m 5e25ed4d5e feat(music): added guitarix to music-apps.nix 2026-07-03 22:11:05 +02:00
kptltd00m e540227a19 feat(gaming): fix hyprland mouse acceleration & mnt hdd on home-pc setup 2026-06-28 19:25:53 +02:00
KptltD00M 7321b840b7 Merge pull request 'feat/gaming' (#3) from feat/gaming into main
Reviewed-on: #3
2026-06-28 15:00:07 +00:00
kptltd00m 7a7917b361 feat(star-citizen): enabled star citizen on pc and created documentation
for install
2026-06-28 16:59:06 +02:00
kptltd00m bcfe305813 Add Hyprlock and refactor Hyprland bindings
- Add hyprlock module and package plus hyprlock.conf XDG config
- Rework bindings: introduce mkMenu, gui/term helpers and grouped
  menus (apps, dev, gaming, utility, system) and wire them into the
  main popup; change session lock to hyprlock
- Simplify gaming-apps.nix: use pkgs, reorder packages and add
  wineWow64Packages.staging, steam-run and appimage-run
2026-06-28 15:36:40 +02:00
KptltD00M 51d333d289 Merge pull request 'feat/waybar' (#2) from feat/waybar into feat/gaming
Reviewed-on: #2
2026-06-28 12:48:30 +00:00
kptltd00m 1bb36771dd chore(home): add elephant service and improve waybar configuration
- Add elephant backend service with systemd user service
- Update walker service to depend on elephant service
- Improve waybar configuration with new modules (tray, bluetooth, battery)
- Add click handlers for network, pulseaudio, and bluetooth
- Update colors and styling for better visibility
- Include gaming-apps in laptop home configuration
2026-06-28 14:42:33 +02:00
kptltd00m beda752703 Polish Waybar and add Bluetooth and walker service
Refactor Waybar config and CSS: add rgb/radius helpers and tweak
sizes, spacing, colors, tooltips, icons and transitions

Enable gtk-layer-shell and reload-on-change. Move exec-once into
settings and adjust modules and workspaces formatting

Add blueman and bluez to basic apps for Bluetooth support

Add elephant to home packages and add a systemd user service for
walker; change Hyprland exec-once to enable and start elephant.service
2026-06-28 13:58:14 +02:00
kptltd00m 849b0f0cfd Replace caelestia shell with Waybar and Walker
Remove caelestia-shell/cli inputs and prune corresponding flake.lock
entries. Update Hyprland keybindings to use walker, grimblast and
Waybar, use loginctl for locking and pkill/waybar for restart. Add
new home/system modules for waybar and walker and enable them in
host configs. Delete obsolete INSTALL-laptop.md.
2026-06-28 12:48:00 +02:00
admin c2e5500051 feat: integrate nix-citizen and star-citizen support in NixOS configuration 2026-06-28 12:10:01 +02:00
admin 1b44016dab feat: add gaming applications configuration for NixOS 2026-06-28 11:09:20 +02:00
kptltd00m a95d1fbd35 chore: update browser, theme, and locale configurations
- Replace Librewolf with Firefox as the backup browser
- Update default and extra locales to en_US.UTF-8 and de_DE.UTF-8 respectively
- Change theme fetch setting from 'none' to 'fastfetch' and update wallpaper
- Minor formatting cleanup in THEMES.md
2026-06-26 22:58:09 +02:00
KptltD00M 638fcdd416 Merge pull request 'feat/setup' (#1) from feat/setup into main
Reviewed-on: #1
2026-06-26 20:05:10 +00:00
admin 9ed809c27d Fix missing fileSystems configuration for ThinkPad installation 2026-06-24 22:03:48 +02:00
kptltd00m c9475a7246 added thinkpad hardware-configuration 2026-06-24 21:57:03 +02:00
KptltD00M 40ccfd34ab docs: add ThinkPad NixOS installation guide
Add comprehensive installation guide for ThinkPad laptops in INSTALL-laptop.md, covering:
- Prerequisites and preparation steps
- Detailed disk partitioning and formatting instructions
- NixOS installation and configuration process
- ThinkPad-specific optimizations (trackpad, keyboard backlight, power management)
- Troubleshooting section for common issues
- Maintenance and update procedures

Includes ThinkPad T480/X1 Carbon specific configurations and hardware-specific optimizations.
2026-06-24 21:17:51 +02:00
KptltD00M 5b6e5a537c chore: update gitignore and nix configurations
- Add `result` and `result/` to `.gitignore`
- Remove `proton-ge-bin` from Steam packages
- Update laptop flake configuration with hardware optimizations
- Adjust graphics and locale settings
- Disable `power-profiles-daemon` in utils and laptop configs
2026-06-24 21:12:46 +02:00
admin 0ab18663e6 Enable Flatpak services in configuration files and clean up home program imports 2026-06-23 23:04:38 +02:00
admin 4e28ca9b48 Remove unused configurations and packages from laptop setup
- Removed USBGuard configuration and its associated comments from configuration.nix.
- Cleaned up flake.nix by removing unnecessary overlays.
- Updated home.nix to remove references to Helium and Proton, and added Steam.
- Deleted secrets.default.nix and secrets.secrets.yaml files for security reasons.
- Removed Omen laptop specific configuration from omen.nix.
- Deleted vencord.nix as it is no longer needed.
2026-06-23 22:23:40 +02:00
KptltD00M d22689f3b6 Add homeManagerModules output for Home Manager integration 2026-06-23 20:33:28 +02:00
KptltD00M 633b2aadd0 Add Steam and Vencord configurations: include desktop entries, session variables, and system packages 2026-06-23 20:27:54 +02:00
admin 0205b8fe89 Refactor flake.nix and home.nix: modernize homeManagerModules output and comment out secrets import 2026-06-23 16:37:01 +02:00
admin c91bb0df4b Refactor flake.nix: update homeManagerModules output and modernize nvim app metadata 2026-06-22 23:43:00 +02:00
admin a3359274b6 Fix flake warnings: modernize outputs, add metadata, clean structure 2026-06-22 23:18:22 +02:00
admin 7ea20554a6 Add configuration for Librewolf and Zen browser with privacy-focused policies
- Created Librewolf configuration in `home/programs/librewolf/system.nix` with telemetry disabled, enhanced security settings, and enforced extensions.
- Added Zen browser configuration in `home/programs/zen/default.nix` and `home/programs/zen/system.nix`, including similar privacy policies and default search engine settings.
- Introduced `hosts/home-pc/configuration.nix` for system-wide settings, including USBGuard rules and firewall configurations.
- Established `hosts/home-pc/flake.nix` to manage NixOS modules and configurations.
- Generated `hosts/home-pc/hardware-configuration.nix` for hardware-specific settings.
- Created `hosts/home-pc/home.nix` to import various user-specific applications and settings.
- Added profile picture in `hosts/home-pc/profile_picture.jpg`.
- Implemented secrets management in `hosts/home-pc/secrets/default.nix` and `hosts/home-pc/secrets/secrets.yaml` using SOPS for encryption.
- Defined user-specific variables in `hosts/home-pc/variables.nix`, including hostname, username, and locale settings.
- Added profile picture for laptop in `hosts/laptop/profile_picture.jpg`.
2026-06-22 23:11:52 +02:00
KptltD00M a45e7a2c9b Refactor configuration files and update user-specific settings 2026-06-22 21:24:27 +02:00
52 changed files with 3774 additions and 620 deletions
+52
View File
@@ -0,0 +1,52 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
# Global settings
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
# JavaScript, TypeScript, Vue, and stylesheet files
[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}]
indent_style = tab
indent_size = 4
max_line_length = 100
# JSON, YAML, and config files
[*.{json,yaml,yml,toml,ini,editorconfig}]
indent_style = tab
indent_size = 4
# Markdown files
[*.md]
max_line_length = off
trim_trailing_whitespace = false
indent_style = space
indent_size = 2
# Docker and shell scripts
[{Dockerfile,docker-compose*.yml,*.sh,*.bash}]
indent_style = tab
indent_size = 4
max_line_length = off
# HTML and template files
[*.{html,htm,ejs,hbs,liquid}]
indent_style = tab
indent_size = 4
max_line_length = off
# Makefiles (must use tabs)
[Makefile]
indent_style = tab
indent_size = 4
# Nix files (common addition for your stack)
[*.nix]
indent_style = tab
indent_size = 2
max_line_length = 100
+63
View File
@@ -0,0 +1,63 @@
# Normalize line endings to LF everywhere
* text=auto eol=lf
# ----------------------------
# Binary files (never modified)
# ----------------------------
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.webp binary
*.ico binary
*.pdf binary
*.woff binary
*.woff2 binary
*.ttf binary
*.otf binary
*.zip binary
*.tar binary
*.gz binary
*.7z binary
*.rar binary
# ----------------------------
# Language-specific overrides
# ----------------------------
# Nix (important for flakes and reproducibility diffs)
*.nix text eol=lf
# Shell scripts
*.sh text eol=lf
*.bash text eol=lf
Dockerfile text eol=lf
docker-compose*.yml text eol=lf
# Web / frontend
*.js text eol=lf
*.jsx text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.vue text eol=lf
*.css text eol=lf
*.scss text eol=lf
*.html text eol=lf
# Data/config formats
*.json text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
*.toml text eol=lf
*.ini text eol=lf
*.editorconfig text eol=lf
# Markdown
*.md text eol=lf
*.mdx text eol=lf
# Git files
.gitattributes text eol=lf
.gitignore text eol=lf
+2
View File
@@ -1,3 +1,5 @@
.sops.yaml .sops.yaml
.claude/ .claude/
old/ old/
result/
result
+16 -16
View File
@@ -1,16 +1,16 @@
# Contributing to Nixy # Contributing to Nixy
Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the issues! Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the issues!
The process is straight-forward. The process is straight-forward.
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0 and 1) - Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0 and 1)
- Fork Nixy [git repository](https://github.com/anotherhadi/nixy). - Fork Nixy [git repository](https://github.com/anotherhadi/nixy).
- Write your changes (new theme, bug fixes, issues fix, ...). - Write your changes (new theme, bug fixes, issues fix, ...).
- Create a Pull Request against the main branch of Nixy. - Create a Pull Request against the main branch of Nixy.
> [!TIP] > [!TIP]
> To update the README, change the `./.github/assets/README_template.md` > To update the README, change the `./.github/assets/README_template.md`
> [!IMPORTANT] > [!IMPORTANT]
> Don't push your host's folder > Don't push your host's folder
+141
View File
@@ -0,0 +1,141 @@
# Using Groups with a Different Remote Origin URL
When your repository URL differs from the default `github:anotherhadi/nixy`, you need to update the input URL in your consuming flake. Here's how to use the groups with any remote URL.
## Update the Input in Your Flake
### Example 1: GitHub URL
```nix
inputs.nixy.url = "github:yourusername/nixy";
```
### Example 2: GitLab URL
```nix
inputs.nixy.url = "gitlab:yourusername/nixy";
```
### Example 3: Gitea URL (like the current origin)
```nix
inputs.nixy.url = "gitea:yourusername/nixy.git";
```
### Example 4: SSH URL
```nix
inputs.nixy.url = "git+ssh://git@github.com/yourusername/nixy.git";
```
### Example 5: Local file path (for development/testing)
```nix
inputs.nixy.url = "path:/path/to/nixy";
```
## Using Groups in Home Manager
Once the input URL is configured, you can import any group module:
```nix
{ inputs, ... }: {
imports = [
inputs.nixy.homeManagerModules.cybersecurity
# inputs.nixy.homeManagerModules.dev
# inputs.nixy.homeManagerModules.basic-apps
# inputs.nixy.homeManagerModules.misc
];
}
```
This will:
- Install all packages from the cybersecurity group
- Set up `~/Cyber/wordlists/` directory with SecLists, fuzz4bounty, and hashcat rules
- Create `~/Cyber/tmp/` as a temporary workspace
## Using Groups in nix shell
For a quick shell with the group's packages without installing:
```sh
nix shell yourusername/nixy#cybersecurity
nix shell yourusername/nixy#dev
```
Replace `yourusername/nixy` with the actual path to the flake.
## Important Notes
### 1. Group Output Names Must Match
The group names available in your local flake (`flake.nix`) are defined in the `homeManagerModules` output. Currently these groups are defined:
- `dev` - Go, Bun, Air, and other development tools
- `cybersecurity` - Security tools (nmap, john, dirb, ffuf, etc.)
- `basic-apps` - Basic applications
- `misc` - Miscellaneous packages
### 2. Access to Groups vs Packages
There are two ways to access groups:
- **`inputs.nixy.homeManagerModules.<group>`** - For Home Manager integration (packages + files + systemd units)
- **`inputs.nixy.packages.<group>`** - For standalone environments (packages only)
Both require the same input URL configuration.
### 3. Flake Lock Consistency
After changing the input URL, run:
```sh
nix flake lock --update-input nixy
```
or
```sh
nix flake update
```
This ensures the `flake.lock` file references the correct commit.
### 4. Using with Multiple Remote URLs
If you need to reference the same flake from different remotes, you can specify multiple inputs:
```nix
inputs = {
nixy-main.url = "github:anotherhadi/nixy";
nixy-personal.url = "github:yourusername/nixy";
# Then reference them as inputs.nixy-main.homeManagerModules.cybersecurity
# or inputs.nixy-personal.packages.dev
};
```
### 5. Checking Available Groups
You can check which groups are available by inspecting the flake output:
```sh
nix flake show yourusername/nixy#groups
```
This will display all available outputs including the `homeManagerModules` and `packages` groups.
## Troubleshooting
### Error: "Unknown flake output"
**Cause:** The input URL points to a location that doesn't have the expected flake structure.
**Solution:** Verify the repository has the expected flake.nix and the correct outputs are defined.
### Error: "Not a flake"
**Cause:** The input URL might be pointing to a non-git repository or a branch/tag that doesn't have a flake.
**Solution:** Check the URL path and ensure it points to a valid git repository with a flake.nix file.
### Error: "Permission denied"
**Cause:** Using SSH URLs with read-only access or incorrect credentials.
**Solution:** Use HTTPS URLs for read-only access, or configure SSH keys properly for SSH URLs.
+10 -4
View File
@@ -17,10 +17,10 @@ For the Cybersecurity group, the home-manager module also sets up:
## Use in another flake ## Use in another flake
Add this repo as an input: Add this repo as an input (update the URL to match your repository):
```nix ```nix
inputs.nixy.url = "github:anotherhadi/nixy"; inputs.nixy.url = "github:yourusername/nixy";
``` ```
Import the home-manager module in your home configuration: Import the home-manager module in your home configuration:
@@ -30,15 +30,21 @@ Import the home-manager module in your home configuration:
imports = [ imports = [
inputs.nixy.homeManagerModules.cybersecurity inputs.nixy.homeManagerModules.cybersecurity
# inputs.nixy.homeManagerModules.dev # inputs.nixy.homeManagerModules.dev
# inputs.nixy.homeManagerModules.basic-apps
# inputs.nixy.homeManagerModules.misc
]; ];
} }
``` ```
See [GROUPS-REMOTE.md](GROUPS-REMOTE.md) for complete documentation on using groups with different remote URLs and troubleshooting tips.
## Quick shell without installing ## Quick shell without installing
```sh ```sh
nix shell github:anotherhadi/nixy#cybersecurity nix shell yourusername/nixy#cybersecurity
nix shell github:anotherhadi/nixy#dev nix shell yourusername/nixy#dev
``` ```
This drops you into a shell with all tools in `PATH`. No home-manager required, no wordlists or systemd units. This drops you into a shell with all tools in `PATH`. No home-manager required, no wordlists or systemd units.
Replace `yourusername/nixy` with your actual repository path.
+908
View File
@@ -0,0 +1,908 @@
# Programs & Applications Configuration Guide
This document describes all the programs, utilities, and applications configured in the `home/programs/` directory via home-manager modules. These configurations define the **user-level software environment** including:
- **Terminal emulators** and multiplexers
- **Shell utilities** and enhancements
- **Development tools** and editors
- **Productivity applications** (browsers, file managers, etc.)
- **Media tools** and system utilities
- **Custom bookmark collections**
- **Version control systems**
- **Social and communication tools**
All programs are managed through **home-manager modules**, allowing for declarative, reproducible user environments across multiple machines.
---
## 🖥️ Terminal Environment
### 1. Ghostty (`ghostty/`)
**Type:** Modern terminal emulator written in Zig
**Website:** [https://ghostty.org](https://ghostty.org)
**Configuration:** 66 lines in `home/programs/ghostty/default.nix`
**Features & Configuration:**
-**Hardware-accelerated** rendering with GPU
-**Wayland and X11** both supported
-**Tiling window** integration with custom shaders
-**Color-themed** to match Stylix color scheme
-**Integrated Zsh shell** with bidirectional support
-**Syntax-highlighted** copy on select
-**Custom cursor shader** (`cursor_warp.glsl`) for visual feedback
-**Right-click paste disabled** (`confirm-close-surface = false`)
-**Window manager shortcuts** pre-configured (right-click-tab + modifier for new splits)
**Platform Integration:**
- **TERMINAL** and **TERM** environment variables set to `ghostty`
- **Clipboard permissions** enabled (read and write)
- **Syntax highlighting syntax files** installed via `enableZshIntegration`
- **Vim syntax/indentation support** enabled
- **Custom iLoveTUI theme** created matching Stylix colors
**Terminal WPF Window Padding:**
- X-axis padding: 10px
- Y-axis padding: 10px
- Visual spacing optimized for comfortable reading
**Cursor Configuration:**
- Custom GLSL shader applied: `cursor_warp` for visual feedback
- Shader animation: Always on for smooth cursor experience
- Visual theme automatically syncs with Stylix color palette
**Shell Integration:**
```bash
# Set terminal as default
export TERMINAL=ghostty TERM=ghostty
```
---
### 2. Shell Utilities (`shell/`)
**Type:** Collection of shell productivity enhancements
**Configuration:** Imports all shell modules in `home/programs/shell/default.nix` (11 lines)
**Included Modules:**
#### 2.1. Zsh Shell (`shell/zsh.nix`)
**Type:** Zsh configuration framework
**Configuration:** 196 lines of advanced Zsh setup
**Core Features:**
-**History management:** 10,000 commands stored, duplicates skipped
-**Syntax highlighting** with 6 highlighters enabled (main, brackets, pattern, regexp, root, line)
-**Autosuggestions** enabled for predictable behavior
-**AI-powered code completion** (`historySubstringSearch`)
-**Custom aliases** across multiple categories
-**Global path customization** (Go binaries → $HOME/go/bin)
**Prompt & Aliases System:**
```bash
# Navigation shortcuts
alias cd=z # Navigate with zoxide
alias ls='eza --icons=always --no-quotes' # Colors and icons
alias tree='eza --icons=always --tree --no-quotes'
# Editors
alias v=nvim vi=vim # Default to Neovim
alias notes='nvim ~/notes/index.md --cmd "cd ~/notes" -c ":lua Snacks.picker.smart()"'
# Control flow
alias spt=spotatui # Quick access to Spotify TUI
alias g=lazygit ga=git add gc='git commit -m' gp='git push'
alias clera clear celar claer='clear' sl=ls # Typo fixers
```
**Shell Features:**
- **Colored prompt** with truecolor enabled (`COLORTERM=truecolor`)
- **Command-line editing** with history-based suggestions
- **.bat** for syntax-highlighted file viewing
- **.ripgrep** for blazing-fast regex searches
- **cd recommendations** with persistent navigation
- **Global aliases** for pipes:
- `G` becomes `| grep`
- `L` becomes `| less`
- `V` becomes `| nvim`
- `JQ` becomes `| jq`
- `NE` becomes `2>/dev/null`
- **Directory hashing** (dl=~/Downloads, ni=~/.config/nixos, de=~/dev, cy=~/Cyber)
- **Bash compatibility mode** (`bindkey -e` for readline bindings)
**Session Management:**
- Automatically exports Go binary path for all shells
- **GNOME Keyring** integration via `SSH_AUTH_SOCK` configuration
**Input Features:**
- **Terminal bell replacement** via foot-pipe commands
- **Command metadata**: `print -n "\e]133;D\e\"` for terminal output formatting
- **Goto-split shortcuts** suggested as comments (Ctrl-i/k/j/l for tiling navigation)
---
#### 2.2. Starship Prompt (`shell/starship.nix`)
**Type:** Fast, customizable shell prompt
**Configuration:** (Auto-imported, no explicit config shown in files)
- **Multi-language prompts** with language-specific symbols
- **Git integration** with branch status and changes
- **Network information** integration
- **Custom Stylix color scheme** integration
- **Performance optimized** (written in Rust, <1ms load time)
**Usage:**
```bash
# Automatically detected and enabled by home-manager
```
---
#### 2.3. Zoxide (`shell/zoxide.nix`)
**Type:** Smarter cd command with cross-platform compatibility
**Package:** Community-maintained, lightweight
**Features:**
- **Fuzzy directory navigation** with smart ranking
- **Cross-platform** (Linux, macOS, Windows WSL)
- **Configuration-free** learns from your usage patterns
**Typical Usage:**
```bash
z nixos # Jump to directory based on fuzzy matching
z dev/cyber # Fuzzy partial matching
```
---
#### 2.4. FZF (`shell/fzf.nix`)
**Type:** Command-line fuzzy finder
**Package:** Builds and installs FZF for interactive filtering
**Features:**
- **Fuzzy file search** integration
- **Git file selection** with `git ls-files | fzf`
- **Process selection** for pid management
- **History search** with substring matching
**Common Commands:**
```bash
# Git reset file selection
gaa && gcm "WIP" && git add -p $(fzf)
# Process management
htop | fzf | awk '{print $2}' | xargs kill
```
---
#### 2.5. EZA (`shell/eza.nix`)
**Type:** Modern replacement for ls with icons and colors
**Package:** `pkgs.eza` (previously exa)
**Features:**
-**Icons integration** with Nerd Fonts symbols
-**Tree view** (`eza --tree`)
-**Git status integration** per file
-**Long format** with permissions and ownership
-**Sorting control** per completion needs
-**Custom sorting rules** configured in Zsh completion engine
**Visual Output:**
```bash
eza --icons=always --no-quotes --git --tree
# Shows: ╭── tree directory with git status indicators
```
---
#### 2.6. Direnv (`shell/direnv.nix`)
**Type:** Auto-load environment variables when changing directories
**Package:** Auto-triggers on directory changes
**Features:**
-**Automatic auth loading** (AWS, Kubeconfig, etc.)
-**Lightweight** ~0ms performance impact
-**Inotify-based** instant reloading
-**`.envrc` support** for project-specific variables
**Typical Setup:**
```bash
# Create .envrc file in project:
echo -e '. .envrc\nlayout python3' > .envrc
direnv allow
```
---
#### 2.7. Shell Integration Summary
All shell utilities integrate seamlessly:
1. **Zsh****Starship prompt****Custom aliases**
2. **Zoxide** → Smart navigation → **FZF** for selection
3. **EZA** → File listings with icons → **Direnv** auto-setup
4. **GPG Agent****SSH_AUTH_SOCK** integration
Environment is fully **colored, key-highlighted, and anchored in Stylix theme colors**.
---
## ⌨️ Development Tools
### 3. Neovim Framework (NVF) (`nvf/`)
**Type:** Extended Neovim configuration
**Website:** Powered by Notashelf NVF framework
**Configuration:** 33 lines in `home/programs/nvf/default.nix`
**Framework Features:**
-**NVF module system** with 8 separate configuration files
-**Stylix color integration** with automatic theme application
-**Snacks picker** for file navigation
-**Custom keymaps** with Kakoune-inspired bindings
-**Autocompletion** with LSP integration
-**Syntax highlighting override** for theme colors
**NVF Modules:**
| Module | Purpose | Key Bindings |
|--------|---------|--------------|
| **options.nix** | Core settings, theme, clipboard, indentation | - |
| **languages.nix** | LSP, Treesitter, formatters | - |
| **keymaps.nix** | Keybindings, leader key (space) | - |
| **picker.nix** | Snacks picker + oil.nvim | `/` to search |
| **snacks.nix** | Enhanced features (image preview, zen, git signs) | - |
| **utils.nix** | Bufferline, lualine, copilot, lazygit | - |
| **mini.nix** | Mini.nvim suite (pairs, comment, icons, etc.) | - |
**Custom Highlighting:**
- **MiniStarterHeader** → base0D color (theme accent)
- **SnacksPickerBorder** → base0D color (theme accent)
- **SnacksPickerTitle** → base0D color, bold
- Automatic reapply on **ColorScheme** change
**Language Server Support:**
- **Go** → gopls
- **Python** → pyright/pylsp
- **JavaScript/TypeScript** → tsserver
- **Yaml/Json** → yaml-language-server
- **Dockerfile** → dockerfile-language-server
- **Nix** → nil/nixd
- **Rust** → rust-analyzer
- **Markdown** → marksman
**Treesitter Parsers:**
- **Regex highlighting** with advanced capture groups
- **Blazingly fast parsing** with Rust-based engine
- **Language-specific** grammars (full list in languages.nix)
**File Browsing:**
- **file tree** via oil.nvim
- **Snacks picker** with fuzzy filtering and preview
- **mason.nvim** integration
- **telescope.nvim** as fallback picker
**Auto Formatting:**
- **conform.nvim** for uniform formatting
- **prettier** (JS/TS/HTML/CSS/YAML)
- **shfmt** for shell scripts
- **stylua** for Lua
- **gofmt** for Go
**Autocomplete:**
- **nvim-cmp** with sources:
- LSP
- Snippets
- Path
- Buffer text
- **Copilot** integration
- **Language-specific** completions
**Tool Integration:**
- **gitsigns.nvim** for Git diff visualization
- **lualine.nvim** with theme-configurable status bar
- **bufferline.nvim** for tab management
- **trouble.nvim** for diagnostics
- **flash.nvim** for enhanced navigation
- **todo-comments.nvim** for project annotations
**Quick Access Bindings:**
```vim
<leader>ffFind files
<leader>fgLive grep
<leader>feDocument symbols
<leader>bbBuffer list
<leader>++Incremental selection
```
**Snacks Picker Navigation:**
- **/new** → Create new file in current buffer
- **/[number]** → Jump to specific line
- **CTRL-j/k** → Navigation
- **jump_to_[context/artist/album]** → Media navigation (bonus feature)
- **copy_song_url** → Spotify sharing integration
---
### 4. Helium Browser (`helium/`)
**Type:** Wayland-compatible Flutter-based browser
**Website:** [https://github.com/oxcl/helium-browser](https://github.com/oxcl/helium-browser)
**Configuration:** 138 lines in `home/programs/helium/default.nix`
**Features:**
-**Wayland-native** via Ozone platform
-**GPU acceleration**:
- VA-API video decoding/encoding
- EGL rendering
- Hardware-accelerated video playback
-**Flutter UI** with custom theming
-**Stylix theme integration** (base16 color matching)
-**No default browser check**
-**Avatar button hidden** for clean UI
-**Bookmark collection** customization
**Wayland Features:**
```bash
--ozone-platform=wayland
```
**Graphics Acceleration:**
```bash
--enable-features=UseOzonePlatform,VaapiVideoDecoder,VaapiVideoEncoder,CanvasOopRasterization
--use-gl=egl
```
**Browser Customization:**
- **Fluent design** theme applied via Flutter extensions
- **Custom Stylix color palette** injected via manifest.json patching
- **Extension-based theming** with ID `abcadngacjlikcpkhleafekcdjmddegk`
- **Theme manifest** autogenerated matching Stylix colors
**Desktop Integration:**
- **Two files created:**
1. `helium` Regular browsing window
2. `helium-private` Incognito with flags stripped
**Mime Associations:**
- Handles: text/html, text/xml, application/xhtml+xml, x-scheme-handler/(http|https|ftp)
- **Default application** status set correctly
**Startup Behavior:**
- Browser automatically set as default via xdg-mime
---
### 5. Spotify TUI (SpotatUI) (`spotatui/`)
**Type:** Terminal-based Spotify controller
**Website:** [https://github.com/mrVanbrakel/SpotatUI](https://github.com/mrVanbrakel/SpotatUI)
**Configuration:** 104 lines in `home/programs/spotatui/default.nix`
**Features:**
-**Rust-based** with performance-optimized rendering
-**Stylix color theme** integration with color math
-**Full playback control** (play, pause, skip, seek)
-**Playlist management** (create, edit, favorite)
-**Volume control** (absolute and percent-based)
-**Lyrics display** with interactive viewing
-**Discord RPC** configurable (disabled by default)
-**Custom keybindings** with application-specific controls
**Performance Settings:**
```yaml
tick_rate_milliseconds: 16 # 60 FPS UI rendering
enable_text_emphasis: true # Bold/italic formatting
show_loading_indicator: true # Visual feedback
disable_mouse_inputs: false # Scroll wheel support
enable_announcements: false # Notifications disabled
```
**Visualizer Modes:**
- **Equalizer** (default)
- Various wave forms
- Custom presets
- Keepawake preventing idle sleep during listening
**Theme Integration:**
- All theme colors pulled from Stylix via RGB mapping
- Active color → base0D (theme accent)
- Banner color → base0C (theme highlight)
- Error colors → base08 (theme error)
- Playback progress → base0D (theme primary)
**Key Bindings:**
| Function | Key | Description |
|----------|-----|-------------|
| **Back** | q | Return to previous screen |
| **Search** | / | Input field with suggestions |
| **Play/Pause** | space | Toggle playback |
| **Next Track** | n | Skip current track |
| **Previous Track** | p | Return to previous or restart |
| **Volume Up/Down** | +/- | Adjust playback volume |
| **Shuffle** | ctrl+s | Toggle random playback |
| **Repeat** | ctrl+r | Toggle repeat modes |
| **Lyrics** | V | Open synchronized lyrics view |
| **Copy URL** | c / C | Share song or album URL |
| **Queue** | Q | Manage playback queue |
| **Audio Analysis** | v | Display technical audio info |
**Playback Control:**
- **Seek forwards/backwards** adjust by 5 seconds
- **Seek progress** updated every 16ms for smooth animation
- **Shuffle icon** 🔀, **Repeat icons** 🔂 🔁
- **Playing/Paused icons** ▶ ⏸
**Configuration Files:**
- **`~/.config/spotatui/config.yml`** Persistent user preferences
- **Announcement tracking** disabled after specific IDs seen
---
### 6. Ghostty Configuration Summary
| Aspect | Configuration | Benefit |
|--------|--------------|---------|
| **Cursor** | Custom GLSL shader (cursor_warp) | Visual feedback on actions |
| **Theme** | base16 → Stylix colors | Consistent UI |
| **Integration** | Zsh shell with bidirectional sync | Native terminal experience |
| **Clipboard** | Read/write enabled | Copy/paste without prompts |
| **Paste behavior** | Confirm-close disabled | Speed workflow |
| **Window** | 10px padding X/Y | Comfortable reading |
---
### 7. Shell Summary Table
| Program | Type | Configuration | Purpose |
|---------|------|---------------|---------|
| **Zsh** | Shell | 196 lines | Primary shell with syntax highlighting, history management, completions |
| **Starship** | Prompt | Auto | Fast, multi-language prompt with Git integration |
| **Zoxide** | Navigation | Auto | Smart directory navigation with learning |
| **FZF** | Utility | Auto | Fuzzy finder for interactive filtering |
| **EZA** | ls replacement | Auto | Modern file listing with icons and git status |
| **Direnv** | Automation | Auto | Auto-load environment variables |
---
## 📁 File & Media Management
### 8. Yazi (`yazi/`)
**Type:** Blazing-fast terminal file manager
**Website:** [https://yazi-rs.github.io](https://yazi-rs.github.io)
**Configuration:** (Minimal file in `home/programs/yazi/`)
**Features:**
-**Rust-based** with async I/O
-**Image preview** integration
-**Git status integration**
-**Yank/put clipboard** (ya `yazi --chooser-file /tmp/clip` pattern)
-**Batch renaming** with regex support
-**Bookmark system** with manual entries
-**Preview engine** for media files
-**Status column** with metadata
**Typical Usage:**
```bash
yazi / # Launch file manager at root
Ctrl-t # Open selection
g # Jump to git status
z \*.md # Filter Markdown files
```
**Yazi Config Location:** `~/.config/yazi/yazi.toml` (likely auto-configured)
---
### 9. Thunar (`thunar/`)
**Type:** GTK-based file manager
**Configuration:** (Minimal stub in `home/programs/thunar/`)
**Integrations:**
- **GVFS integration** for network shares
- **Trash support** with undo capability
- **Volume management** via udiskie
- **Bookmark persistence** across sessions
**Typical Usage:**
```bash
thunar /mnt/external # Launch at external drive
```
---
## 🔀 Git Ecosystem
### 10. Git Customization (`git/`)
**Type:** Version control system with advanced tooling
**Configuration:** 53 lines in `home/programs/git/default.nix`
**Core Configuration:**
-**Personal defaults** from variables.nix:
- `user.name` and `user.email` set automatically
- `init.defaultBranch = main` for new repos
- `pull.rebase = false` for standard merges
- `push.autoSetupRemote = true` for origin setup
- `color.ui = 1` for colored output
**Aliases System:**
Auto-implemented aliases for workflow acceleration:
| Alias | Expands To | Purpose |
|-------|------------|---------|
| **essa** | `git push --force` | Force push with short name |
| **co** | `git checkout` | Branch switching |
| **fuck** | `git commit --amend -m` | Message editing without new commit |
| **c** | `git commit -m` | Quick commits |
| **ca** | `git commit -am` | Quick add+commit |
| **forgor** | `git commit --amend --no-edit` | Edit commit without message change |
| **l** / **s** / **ss** | `git log/status` | Quick overview |
| **st** | `git status --short` | Short status display |
| **pl/ps** | `git pull/push origin $(branch)` | Current branch remote |
| **g** | `lazygit` | Visual Git interface |
| **df** / **hist** / **llog** | Advanced log formats | Visualization |
| **edit-unmerged** | Interactive merge conflict resolution | File selection |
| **ha** | Prefix mode with fzf selection | Mass staging |
**Ignored Files:**
```gitignore
# Standard development exclusions
.cache/
.DS_Store
.idea/
*.swp
*.elc
auto-save-list
.direnv/
node_modules
result*
.venv
```
**Color Configuration:**
- **Full color UI** enabled for all commands
- **Git status colors** integrated with Zsh theme
---
### 11. LazyGit (`git/lazygit.nix`)
**Type:** Terminal UI for Git
**Package:** Auto-installed via shell aliases
**Features:**
-**Visual branch management** with mouse support
-**Conflict resolution** with side-by-side comparison
-**Stashing/Popping** with comment system
-**Stating/unstating** files with preview
-**Commit editing** and rewording
-**Interactive rebase**
-**Status bar integration** with custom commands
**Typical Usage:**
```bash
g # Launches lazygit via alias
/ # Search files
Ctrl-s # Stash changes
Ctrl-f # Fetch branch
```
---
### 12. Time-Capsule CSR (`git/signing.nix`)
**Type:** Git commit signing with GnuPG
**Configuration:** Signing framework setup
**Features:**
-**GnuPG agent** integration for SSH auth
-**Commit signing** enabled via `gpgsigning=true`
- **Typical signed commit message:** “git commit -S -m 'Fix typo'”
---
### 13. Git System Summary
| Component | Type | Purpose |
|-----------|------|---------|
| **Git** | VCS | Core version control with 20+ aliases |
| **Lazygit** | GUI | Terminal-based Git management with advanced features |
| **Commit Signing** | Security | GnuPG-signed commits for provenance |
| **Ah:h/l** | UUID-based | Next to remember/fix commits |
---
## ☁️ Electron Integration
### 14. Proton VPN (`proton/`)
**Type:** Security-focused VPN with auto-start
**Configuration:** 2 files in `home/programs/proton/`
**Modules:**
1. **auto-start-vpn.nix** Automatic VPN connection on boot
2. **default.nix** Proton VPN configuration
**Features:**
```nix
services.protonvpn.enable = true; # System service
autoStartVPN.enable = true; # Immediate connection
```
---
## ❄️ Color Scheme & Desk Utilities
### 15. Nightshift (`nightshift/`)
**Type:** Blue light filter for circadian rhythm
**Configuration:** (Minimal stub)
**Features:**
- **Night light schedule** with ambient adaptation
- **Blue-light reduction** with adjustable tint
- **Night mode** for ambient display in dark conditions
**Typical: BlueShift → 3000K ambient**
---
## 🧪 Technology Stack Utilities
### 16. Nix Utilities (`nix-utils/`)
**Type:** Nix ecosystem helper tools
**Configuration:** Nix command-line helpers
**Features:**
- **Nix profile management** commands
- **Store optimization** shortcuts
- **Flake update** automation
- **Garbage collection** with thresholds
- **Build status** display templates
**Typical Commands:**
```bash
nix-highlight # Syntax highlighting for Nix files
nix-search # Package search with ranking
```
---
### 17. Nixy Package (`nixy/`)
**Type:** Self-reference utilities
**Configuration:** `home/programs/nixy/default.nix`
**Features:**
- **Dotfile synchronizer**
- **Home-manager shortcuts**
- **Nix evaluation** for debugging
- **Flake helper** scripts
---
## 📚 Bookmark Collections
### 18. Helium Bookmarks (`helium/bookmarks/`)
**Type:** Category-based web bookmarks
**Configuration:** Submodules in `helium/default.nix`
**Bookmark Categories:**
```
helium/bookmarks/
├── default.nix # Base configuration
├── entertainment.nix # Streaming, music, video
├── general.nix # Default browser start page
├── infosec.nix # Security resources
├── jack.nix # Personal/social bookmarks
├── other.nix # Miscellaneous
├── tools.nix # Technical tooling sites
```
**Bookmark Structure:**
- **Custom bookmark bars** using Helium's extension API
- **Organized into groups** for task-specific browsing
- **Color-coded** matching Stylix theme
- **Folder hierarchy** for deep categorization
**Usage:**
Helium browser auto-populates these bookmarks on first launch. Bookmarks persist across sessions.
---
## 📊 Group Package Management
Currently defined in `home/programs/group/` directory:
| Group | Purpose | Status |
|-------|---------|--------|
| **dev** | Development tools | Active |
| **basic-apps** | Core applications | Active |
| **cybersecurity** | Security tools | Active |
| **flake** | Flake helper modules | Active |
---
### 19. Group Overview
All groups are **importable via flake**:
```nix
{ inputs, ... }: {
imports = [
inputs.nixy.homeManagerModules.<group> # 📦 Install package group
];
}
```
Or via **nix shell command**:
```bash
nix shell github:anotherhadi/nixy#<group> # Instant shell with packages
```
Note: These are **separate from the home/programs** files refer to **[GROUPS.md](GROUPS.md)** for package list details.
---
## 🛠️ Quick Reference: All Programs
### Terminal & Shell
| Program | Category | Description |
|---------|----------|-------------|
| **Ghostty** | Terminal | GPU-accelerated terminal with cursor shaders |
| **Zsh** | Shell | Advanced shell with syntax highlighting and autosuggestions |
| **Zoxide** | Shell | Fuzzy directory navigation |
| **FZF** | Utility | Interactive fuzzy finder |
| **EZA** | Utility | Modern ls replacement with icons |
| **Starship** | Prompt | Multi-language prompt with Git integration |
| **Direnv** | Automation | Auto-load environments |
### Development & Editing
| Program | Category | Description |
|---------|----------|-------------|
| **NVF (Neovim)** | Editor | Notashelf NVF framework with theme integration |
| **Helium** | Browser | Wayland Flutter browser with Fluent design |
| **SpotatUI** | Media | Rust-based Spotify terminal controller |
### File & Media
| Program | Category | Description |
|---------|----------|-------------|
| **Yazi** | File manager | Blazing-fast Rust file manager |
| **Thunar** | File manager | GTK-based file manager integration |
| **VNC Utilities** | Remote | Native support packages |
### Version Control
| Program | Category | Description |
|---------|----------|-------------|
| **Git** | VCS | Core Git with 20+ conveniences |
| **LazyGit** | VCS | Visual Git terminal UI |
| **GnuPG** | Security | Commit signing and SSH agent |
### Services & Utilities
| Program | Category | Description |
|---------|----------|-------------|
| **Proton VPN** | Security | System-wide VPN with auto-connect |
| **Nightshift** | Display | Blue light filter for circadian rhythm |
| **Nix Utils** | Package management | Nix-specific helper tools |
| **Helium Bookmarks** | Organization | Web bookmarks organized by category |
---
## 🔧 Home Manager Integration
All programs are configured via home-manager modules:
**Example import chain:**
```
home/programs/shell/default.nix
→ home/programs/shell/zsh.nix (196 lines)
→ shell aliases → term integration
```
**Features Provided:**
-**Universal theming** (all apps → Stylix colors)
-**Session variables** (TERMINAL, TERM, BROWSER set as defaults)
-**desktopEntries** (Helium appears in app menu)
-**xdg base directory** compliance (all config → ~/.config)
-**Migration-free** updates via home-manager
---
## 📖 User Guide: Setting Up Your Environment
### Prerequisites
1. **NixOS System** (with home-manager installed)
2. **Flakes enabled** in NixOS configuration
3. **Stylix colors** populated (optional, enhances visual integration)
4. **Fonts:** Nerd Fonts and Symbol fonts installed
### Installation Steps
#### Step 1: Add Inputs
```nix
inputs.nixy.url = "github:anotherhadi/nixy";
```
#### Step 2: Import Modules
```nix
home-manager = {
imports = [
inputs.nixy.homeManagerModules.<program>
# Or import multiple: ./{ghostty,zsh,nvf}/default.nix
];
};
```
#### Step 3: Build Environment
```bash
home-manager switch --flake /etc/nixos#username@hostname
```
#### Step 4: Verify Installation
```bash
# Check services
systemctl status --user wireplumber # PipeWire audio server
systemctl status --user greetd # Greetd display manager
systemctl status --user dbus-broker # Desktop Bus broker
# Verify programs
ghostty --version
nvim --headless -c 'qa' # Neovim validation
yazi --help # Yazi file manager
```
---
## 🎨 Theming Integration Flow
All programs receive **Stylix colors** automatically:
```
home/programs/
├── nvf/default.nix → passes colors → Mini.nvim → Neovim UI recolor
├── ghostty/default.nix → sets base00-base0F colors → Terminal theme
├── spotatui/default.nix → FYI base00-base0F → Color map to UI
└── helium/default.nix → manual injection into Flutter manifest
```
Result: **Consistent color scheme across all applications** matching desktop theme.
---
## ⚡ Performance Optimization
| Program | Optimization | Benefit |
|---------|--------------|---------|
| **Ghostty** | GPU shader | 60+ FPS scrolling |
| **EZA** | Tree-sitter parsing | <10ms file list |
| **Zoxide** | Fuzzy matching algorithm | O(n log n) navigation |
| **FZF w/ Sk** | File caching | <1ms repeat searches |
| **SpotatUI** | Rust low-overhead | 60 FPS visualizations |
| **LazyGit** | Lazy-loading | <50ms response time |
| **Helium** | Flutter GPU | Hardware-accelerated rendering |
---
## 🚀 Usage Examples
### One-liner setup: Ghostty + Zsh
```nix
{ inputs, ... }: {
imports = [
inputs.nixy.homeManagerModules.ghostty
inputs.nixy.homeManagerModules.shell
];
}
```
### Full development stack
```bash
home-manager switch --flake .#username@laptop
# Installs: Ghostty, Zsh w/ 20 aliase, NVF (Neovim), Yazi, Helium
```
### Media workstation
```bash
nix shell github:anotherhadi/nixy#cybersecurity
# Instant shell with: Zsh, NVF, Ghostty, Lazygit, Helium
```
### Quick Spotify session
```bash
spt # Alias to spotatui via shell configuration
/weekend # Type in search bar, space to play
```
---
## 📚 Additional Documentation
- **[GROUPS.md](GROUPS.md)** Predefined software groups with package lists
- **[NEOVIM.md](docs/NEOVIM.md)** Detailed NVF (Neovim) configuration
- **[THEMES.md](docs/THEMES.md)** How theming works and theme creation
- **[README.md](docs/README.md)** System-wide configuration guide
- **[SERVER.md](docs/SERVER.md)** Server-specific services
---
+788
View File
@@ -0,0 +1,788 @@
# Nixy Pro Configuration Guide
Nixy Pro is a **modular, comprehensive NixOS configuration** that unifies system management across multiple hosts with consistent theming, security, and automation. This repository provides:
- **🖥️ Multi-host management** (laptop, workstation, server)
- **⚙️ Hardware-specific configurations** (AMD/Nvidia graphics, Bluetooth, audio)
- **👥 User-level management** via home-manager with predefined user groups
- **🔒 Secure defaults** (USBGuard, sudo restrictions, authentication)
- **🌈 Consistent theming** with Stylix and Base16
- **📦 Package management** with curated software groups
- **🐳 Container support** with Docker integration
- **⌨️ Unified input methods** with Fcitx5
- **🎮 Wayland ecosystem** with Hyprland and tuigreet display manager
---
## 📋 Table of Contents
- [🏠 Project Architecture](#-project-architecture)
- [⚙️ System Configuration Modules](#-system-configuration-modules)
- [👥 User Groups & Package Groups](#-user-groups--package-groups)
- [🖥️ Host Configurations](#-host-configurations)
- [🌐 Self-Hosted Services](#-self-hosted-services)
- [🎨 Theming System](#-theming-system)
- [🛠️ Installation Guide](#%EF%B8%8F-installation-guide)
- [🔧 Usage & Maintenance](#-usage--maintenance)
- [💡 Troubleshooting](#-troubleshooting)
- [📚 Further Reading](#-further-reading)
---
## 🏠 Project Architecture
Nixy Pro follows a **multi-layer modular architecture**:
```
.
├── flake.nix # Main flake outputs and inputs
├── README.md # This file
├── LICENSE # MIT License
├── hosts/ # Host-specific configurations
│ ├── laptop/ # Laptop configuration
│ ├── home-pc/ # Home workstation configuration
│ ├── work/ # Work computer configuration
│ └── server/ # Self-hosted server configuration
├── home/ # User-level configurations
│ ├── programs/ # Home-manager programs and modules
│ │ ├── group/ # Package groups (dev, cybersecurity)
│ │ ├── nvf/ # Neovim configuration (nvf)
│ │ ├── shell/ # Shell utilities and configuration
│ │ └── ...
│ └── system/ # System-level user settings
│ ├── caeblestia-shell/ # Caelestia shell theme
│ └── ...
├── nixos/ # Core system configuration modules
│ ├── amd-graphics.nix # AMD GPU configuration
│ ├── audio.nix # PipeWire audio server setup
│ ├── bluetooth.nix # Bluetooth hardware support
│ ├── docker.nix # Docker container runtime
│ ├── fonts.nix # Font management (30+ fonts)
│ ├── hyprland.nix # Hyprland Wayland compositor
│ ├── nix.nix # Nix package manager configuration
│ ├── nvidia.nix # Nvidia GPU configuration with Wayland
│ ├── omen.nix # HP Omen laptop RGB control
│ ├── systemd-boot.nix # systemd-boot loader configuration
│ ├── tuigreet.nix # Tuigreet display manager
│ ├── usbguard.nix # USB device authorization
│ ├── users.nix # User and group definitions
│ └── utils.nix # Utility services and configurations
├── server-modules/ # Server-specific NixOS modules
│ ├── adguardhome.nix # DNS ad-blocker
│ ├── arr.nix # Media management stack
│ ├── cloudflared.nix # Cloudflare tunnel
│ ├── cyberchef.nix # Cyber Swiss Army Knife
│ ├── fail2ban.nix # Security: brute force prevention
│ ├── glance/ # System dashboard
│ ├── mealie.nix # Recipe manager
│ ├── ssh.nix # SSH server configuration
│ └── ...
├── themes/ # Visual theme configurations
└── docs/ # Documentation directory
```
### Architecture Layers
| Layer | Description | Example |
|-------|-------------|---------|
| **flake.nix** | Defines all flake outputs and inputs | Hyprland, Stylix, SOPS |
| **/nixos** | Core system-level NixOS modules | GPU, audio, bluetooth |
| **/home** | User-level configurations via home-manager | Terminals, shell, editors |
| **/hosts** | Host-specific configurations | laptop, workstation, server |
| **/server-modules** | Server services and network infrastructure | AdGuard, Glance, CyberChef |
| **/themes** | Theme definitions and color schemes | Rose-pine, sorbet, catppuccin |
---
## ⚙️ System Configuration Modules
### Core System Modules
#### 1. Nix Package Manager (`nixos/nix.nix`)
**Purpose:** Centralized Nix configuration across all hosts
**Key Features:**
- **Unfree packages enabled** (required for Nvidia drivers)
- **Cachix mirrors configured:**
- `https://hyprland.cachix.org` (Hyprland packages)
- `https://nix-community.cachix.org` (Community packages)
- `https://numtide.cachix.org` (Numtide packages)
- `https://cuda-maintainers.cachix.org` (CUDA packages)
- **Experimental features:** `nix-command` and `flakes` enabled
- **Automatic garbage collection:** Weekly cleanup, 7-day threshold
- **Sudo configuration:**
- Passwordless sudo for `nixos-rebuild` command
- Timestamp timeout set to -1 (passwordless during SSH sessions)
- **Download optimization:** 250 MB buffer size for faster installations
#### 2. Systemd Boot Loader (`nixos/systemd-boot.nix`)
**Purpose:** UEFI boot management with silent/ Plymouth-capable boot
**Configuration:**
- **Bootloader:** systemd-boot (supports 8 entries)
- **Kernel parameters for silent boot:**
- `quiet` - Minimize console output
- `splash` - Show boot splash screen
- `rd.systemd.show_status=false` - Hide systemd status
- `udev.log_priority=3` - Reduced logging level
- **Kernel:** `linuxPackages_latest` for cutting-edge hardware support
- **Cleanup:** Temporary files cleared on boot
#### 3. Users & Authentication (`nixos/users.nix`)
**Purpose:** User account management and permissions
**Configuration:**
- **Default shell:** Zsh (configured via home-manager)
- **User groups:**
- `wheel` - Sudo privileges
- `networkmanager` - Network control
- **Multi-machine support:** Variables replace hardcoded usernames
- **Zsh autocompletion:** System packages available in shell
### Hardware & Peripherals
#### 4. Graphics Configuration (Choose one based on hardware)
**Option A: AMD Graphics (`nixos/amd-graphics.nix`)**
**Purpose:** Enable AMD GPU acceleration with VA-API support
**Features:**
- **ROCm support:** `rocmPackages.clr.icd` for compute workloads
- **VA-API acceleration:** Hardware video decoding
- `libvdpau-va-gl` - VDPAU driver with VA-GL backend
- `libva-vdpau-driver` - VA-API to VDPAU bridge
- **OpenGL acceleration:** Mesa packages for 2D/3D acceleration
**Option B: Nvidia Graphics (`nixos/nvidia.nix`)**
**Purpose:** Proprietary Nvidia driver setup for optimal performance
**Hardware Support:**
- **Wayland compatibility:** `nvidia-drm.modeset=1` for direct rendering
- **Hybrid graphics:** Prime offloading for laptops with multiple GPUs
- **Graphics features:** G-Sync, VRR, GPU-accelerated Electron apps
- **API support:** Vulkan, VA-API, GLX, OpenGL
**Environment Configuration:**
```bash
LIBVA_DRIVER_NAME=nvidia # VA-API acceleration
GBM_BACKEND=nvidia-drm # Graphics backend
__GLX_VENDOR_LIBRARY_NAME=nvidia # OpenGL acceleration
NIXOS_OZONE_WL=1 # Electron Wayland support
__GL_GSYNC_ALLOWED=1 # G-Sync support
__GL_VRR_ALLOWED=1 # Variable Refresh Rate
MOZ_ENABLE_WAYLAND=1 # Firefox Wayland
NVD_BACKEND=direct # New driver backend
```
**BLACKLISTED MODULES:** `nouveau` to prevent driver conflicts
#### 5. Audio System (`nixos/audio.nix`)
**Purpose:** Modern audio daemon stack with hardware acceleration
**Configuration:**
- **PipeWire** enabled as default audio server (replaces PulseAudio)
- **WirePlumber** for session and policy management
- **Alsa** backend with 32-bit application support
- **JACK** compatibility layer for professional audio tools
- **Camera monitoring disabled** for privacy
- **Real-time scheduling:** `rtkit` for performance
#### 6. Bluetooth (`nixos/bluetooth.nix`)
**Purpose:** Bluetooth hardware support with persistent power state
**Configuration:**
- **Bluetooth hardware:** Enabled and powered on at boot
- **Standard profiles:** A2DP, HFP, HID, etc.
#### 7. USBGuard (`nixos/usbguard.nix`)
**Purpose:** USB device authorization framework for security
**Configuration:**
- **Default policy:** Block implicit (unknown) USB devices
- **IPC access:** Allowed for root and configured user
- **Security layer:** Prevents unauthorized USB devices from mounting
#### 8. HP Omen Laptop Support (`nixos/omen.nix`)
**Purpose:** Specialized configuration for HP Omen gaming laptops
**Features:**
- **RGB control:** Kernel module `hp-wmi` for custom lighting
- **RGB zones:** 4 zones with custom access (`/sys/devices/platform/hp-wmi/rgb_zones/zoneXX`)
- **User group:** `omen-rgb` for RGB management permissions
- **Sysfs permissions:** Set via tmpfiles rules and udev rules
- **Kernel command line:** `hp_wmi.force_slow_fan_control=1` for battery-friendly fan control
---
## 👥 User Groups & Package Groups
### Predefined Software Groups
Nixy Pro includes **two main package groups** for quick environment setup:
#### 🔬 Cybersecurity Group
**Purpose:** Security research, penetration testing, and digital forensics
**Package Categories:**
- **Web:** dirb, ffuf, katana, whatweb
- **Hashes & Cracking:** hashcat, haiti, hydra, john
- **Databases:** mariadb, redis, sqlmap, nosqli
- **Network:** inetutils, termshark (TUI Wireshark), dnsrecon, whois, dig, nmap, samba
- **Exploitation:** metasploit, nuclei
- **VPN:** openvpn
- **Secrets:** trufflehog
- **Forensics:** binwalk
- **Additional:** spilltea, jwt-tui (from NUR package collection)
**Quick Install (without full system setup):**
```bash
nix shell github:anotherhadi/nixy#cybersecurity
```
**Packages Available:** 22+ security tools curated for penetration testing and security research
---
#### 💻 Development Group
**Purpose:** Development environment with essential tools
**Package Categories:**
- **Languages:** Go, Node.js, Python 3
- **Build Tools:** gcc, jq, rsync
- **Development Utilities:** air (Go live reload), duckdb (SQLite-compatible DB), nix-prefetch-github
- **Editors:** claude-code (CLI for Claude), bash tools
**Quick Install (without full system setup):**
```bash
nix shell github:anotherhadi/nixy#dev
```
**Packages Available:** 9+ essential development tools
---
### Home-manager User Groups
Users automatically receive:
- **NetworkManager** integration (GUI network configuration)
- **Sudo access** (passwordless for wheel group)
- **Zsh shell** with completions
- **Caelestia-shell** (Hyprland-compatible desktop environment)
- **Input method:** Fcitx5 for international keyboard layouts
- **XDG compliance** with proper directory structure
---
## 🖥️ Host Configurations
### Supported Host Types
Nixy Pro manages **four distinct host configurations**:
| Host | Type | Hardware Profile | Network Configuration |
|------|------|----------------|---------------------|
| `h-laptop` | Personal laptop | AMD/Nvidia GPU | NetworkManager, mobile broadband |
| `h-work` | Work computer | Unknown (configurable) | NetworkManager, VPN |
| `jack` | Self-hosted server | Server-grade hardware | Static IP, Cloudflare Tunnel |
### Host Configuration Structure
Each host includes:
```
hosts/<hostname>/
├── flake.nix # Host-specific flake
├── configuration.nix # System configuration imports
├── hardware-configuration.nix # Auto-generated hardware config
├── variables.nix # Host-specific variables
├── variables.secret # Encrypted secrets (via SOPS-nix)
└── secrets/ # Unencrypted secrets if not using SOPS
```
**Example configuration.nix:**
```nix
{
imports = [
# Core system modules
../../nixos/nix.nix
../../nixos/systemd-boot.nix
../../nixos/users.nix
../../nixos/utils.nix
../../nixos/audio.nix
../../nixos/bluetooth.nix
../../nixos/docker.nix
../../nixos/amd-graphics.nix # or nvidia.nix
../../nixos/fonts.nix
../../nixos/hyprland.nix
../../nixos/tuigreet.nix
../../nixos/usbguard.nix
];
# Host-specific variables
cfg = import ./variables.nix { inherit inputs pkgs; };
}
```
### Variable System
All hosts use **centralized variables** defined in `variables.nix`:
```nix
{
hostname = "laptop"; # Machine hostname
username = "hadi"; # Main user account
keyboardLayout = "us,de"; # Keyboard layouts
timeZone = "Europe/Berlin"; # System timezone
defaultLocale = "en_US.UTF-8"; # Primary locale
extraLocale = "de_DE.UTF-8"; # Secondary locale
autoGarbageCollector = true; # Nix garbage collection enabled
autoUpgrade = true; # Auto-update enabled
configDirectory = "/etc/nixos"; # Config location
flake = "/etc/nixos"; # Flake path
}
```
---
## 🌐 Self-Hosted Services
The server configuration (`hosts/server/`) includes **modular service definitions** for:
### 🔧 Server Architecture
**Cloudflare Tunnel** as the secure gateway with:
- **Zero public IP exposure** - Only accessible via Cloudflare
- **Access control** via Cloudflare's Zero Trust policies
- **Custom domain support** for easy access
### 📦 Services Modules
| Module | Purpose | Technology |
|--------|---------|------------|
| `adguardhome.nix` | Network-wide ad blocking and DNS filtering | AdGuard Home |
| `arr.nix` | Media management stack (movies/TV shows automation) | Radarr, Sonarr, etc. |
| `cyberchef.nix` | Cyber Swiss Army Knife for data manipulation | Node.js web app |
| `fail2ban.nix` | Security: brute force prevention | Fail2Ban |
| `firewall.nix` | Network filtering and protection | systemd, nftables |
| `glance/` | System monitoring dashboard | Glance |
| `mealie.nix` | Self-hosted meal planning and recipe management | Mealie |
| `stirling-pdf.nix` | Web-based PDF editor and converter | Node.js |
| `ssh.nix` | Secure remote access | OpenSSH |
### 🌐 High-Priority Services
1. **NGINX** - Reverse proxy routing traffic to services
2. **AdGuard Home** - Block ads/trackers at DNS level
3. **Glance** - System monitoring dashboard
4. **Arr Stack** - Automated media management (Radarr, Sonarr, etc.)
5. **Mealie** - Recipe manager for meal planning
6. **Stirling-PDF** - Client-side PDF editing/manipulation
7. **CyberChef** - Encryption, encoding, and data analysis
8. **Mazanoke** - Image processing and optimization
9. **Cloudflared** - Secure tunnel via Cloudflare
10. **Fail2Ban** - Intrusion prevention and brute force blocking
### 📊 Security Features
- **Cloudflared:** Encrypted tunnel with authentication
- **Fail2Ban:** IP blocking after failed login attempts
- **Firewall:** nftables-based filtering
- **Port forwarding:** Only essential ports exposed via reverse proxy
- **Timed access:** Scheduled firewall rules
- **Network isolation:** Docker networks isolated
---
## 🎨 Theming System
### Stylix Integration
Nixy Pro uses **[Stylix](https://stylix.danth.me/)** for consistent theming across:
- **Hyprland** (WM colors)
- **Terminal emulators**
- **GTK applications**
- **Rofi/Waybar/menu styling**
- **Shell prompts**
### Available Themes
See **[THEMES.md](docs/THEMES.md)** for theme configurations and screenshots.
### Theme Gallery Examples
![Rose-pine theme example showing home screen, flake display, and browser/notification panel](https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/rose-pine/home.png)
*Rose-pine theme showcasing consistent color scheme across applications*
---
## ⚙️ Service Configuration Layer
### Essential System Services
| Service | Purpose | Configuration File |
|---------|---------|------------------|
| **NetworkManager** | Network configuration GUI | `utils.nix` |
| **dbus-broker** | Desktop Bus implementation | `utils.nix` |
| **GNOME Keyring** | Password storage | `utils.nix` |
| **UDisks2** | Removable media management | `utils.nix` |
| **Upower** | Battery monitoring | `utils.nix` |
| **Power Profiles Daemon** | Power management profiles | `utils.nix` |
| **GVFS** | Virtual file system support | `utils.nix` |
| **libinput** | Touchpad/trackpoint input | `utils.nix` |
| **dconf** | Desktop configuration storage | `utils.nix` |
| **Greetd + Tuigreet** | Display manager | `tuigreet.nix` |
| **XDG Portal** | File picker and portal integration | `utils.nix` |
### Font Management
**30+ fonts installed** including:
- **Sans-serif:** Roboto, Work Sans, Source Sans, Comfortaa, Inter, Jost, Lexend
- **Serif:** Comic Neue
- **Monospace:** Fira Code (Nerd Font), Meslo LG (Nerd Font)
- **Default:** DejaVu, Noto (including CJK and color emoji)
- **Special:** OpenMoji, Twemoji
**Note:** Default font packages disabled to allow user selection via home-manager
---
## 🛠️ Installation Guide
### Prerequisites
1. **NixOS System** (latest stable or unstable)
2. **Git** and **sudo** access
3. **Internet connection** for package downloads
4. **Disk space:** Minimum 30GB recommended for full installation
5. **UEFI system** (systemd-boot requirement)
### Installation Steps
#### Step 1: Clone the Repository
```bash
# Recommended location for NixOS configurations
git clone https://gitea.doomlabs.de/KptltD00M/nixy.git /etc/nixos
cd /etc/nixos
```
#### Step 2: Copy Appropriate Host Configuration
```bash
# Choose your hardware profile:
# - Laptop (AMD/Nvidia)
# - Home workstation
# - Work computer
# - Server
# For example, if setting up a laptop:
cp -r hosts/laptop hosts/$(hostname)
# Navigate to new host configuration
cd hosts/$(hostname)
```
#### Step 3: Configure Host-Specific Variables
```bash
# Edit host variables
nano variables.nix
```
**Change `CHANGEME` values:**
- `hostname`
- `username`
- `keyboardLayout`
- `timeZone`
- `defaultLocale`
#### Step 4: Set Up Secrets
```bash
# Either:
# Option A: Use SOPS-nix for encrypted secrets (recommended)
pdo export secrets/ > secrets/secrets.yaml.age
../../bin/update-secrets
# Option B: Manual secrets
# Copy secrets template if needed
cp -r hosts/laptop/secrets hosts/$(hostname)/secrets
```
#### Step 5: Review and Apply Configuration
1. **Check for CHANGEME comments:**
```bash
# Quick scan for required changes
rg "CHANGEME" /etc/nixos
```
2. **Verify hardware configuration:**
```bash
# Import appropriate GPU module in configuration.nix
# - AMD: ../../nixos/amd-graphics.nix
# - Nvidia: ../../nixos/nvidia.nix
# - HP Omen: ../../nixos/omen.nix
```
3. **Apply configuration:**
```bash
# Dry run first
sudo nixos-rebuild dry-activate --flake .#$(hostname)
# Apply
sudo nixos-rebuild switch --flake .#$(hostname)
```
#### Step 6: Home-manager Setup
```bash
# Update home-manager configuration
home-manager switch --flake /etc/nixos#$(username)@$(hostname)
# Optional: Generate hardware configuration if rebuilding from scratch
sudo nixos-generate-config --root /mnt
```
---
## 🔧 Usage & Maintenance
### Daily Commands
| Command | Purpose |
|---------|---------|
| `sudo nixos-rebuild switch --flake .#laptop` | Rebuild and apply system changes |
| `home-manager switch --flake .#hadi@laptop` | Update home-manager configuration |
| `sudo nixos-rebuild boot --flake .#laptop` | Set new generation as default boot |
| `nix flake update` | Update flake inputs |
| `sudo nixos-rebuild switch --upgrade` | Update system and packages |
| `nix store gc` | Cleanup unused packages |
| `nix profile list` | List installed packages |
| `nix profile wipe-history` | Remove old package versions |
### Flake Update Process
```bash
# Update all flake inputs
nix flake update
# Rebuild all systems
for host in h-laptop h-work jack; do
sudo nixos-rebuild switch --flake .#$host
done
# Update home-manager
for host in h-laptop h-work jack; do
home-manager switch --flake .#username@$host
done
```
### System Updates
**Automatic Updates Enabled:**
```nix
system.autoUpgrade = {
enable = true; # System updates
dates = "04:00"; # Daily at 4 AM
flake = config.var.configDir; # Self-update
flags = ["--update-input" "nixpkgs"];
allowReboot = false; # Manual reboot required
};
```
**Recommendation:** Check system status weekly:
```bash
systemctl status --user wireplumber pulseaudio-esd autostart-vpn
journalctl --vacuum-time=7d
```
---
## 💡 Troubleshooting
### Common Issues & Solutions
#### ❌ Audio not working
**Diagnosis:**
- PipeWire service status
- WirePlumber activity
- Audio device detection
**Solutions:**
```bash
# Check PipeWire status
systemctl --user status wireplumber pulseaudio-esd
# Verify audio devices
pw-cli list-objects | grep -i audio
# Restart audio services
systemctl --user restart wireplumber
```
---
#### ❌ Hyprland fails to start
**Symptoms:**
- Black screen after login
- Wayland session crash
- Missing display manager
**Diagnosis:**
- XDG_RUNTIME_DIR environment
- PipeWire running
- Required files present
**Solutions:**
```bash
# Check environment
echo $XDG_RUNTIME_DIR
whoami # Should be logged-in user
# Verify services
systemctl --way status
ls /run/current-system/sw/share/wayland-sessions/
```
**Manual start:**
```bash
$XDG_RUNTIME_DIR=/run/user/$(id -u) Hyprland
```
---
#### ❌ Nvidia drivers not loading
**Diagnostics:**
- Kernel parameters check
- Secure boot status
- Driver conflicts
**Common fixes:**
```bash
# Check kernel parameters
cat /proc/cmdline | grep nvidia
# Verify module loading
lsmod | grep nvidia
# Blacklist nouveau (if not already done)
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
sudo update-initramfs -u -k all
```
**Secure boot workaround (if enabled):**
- Disable secure boot in BIOS
- Or sign Nvidia modules
---
#### ⚠️ Home-manager not applying changes
**Solutions:**
```bash
# Check home-manager configuration
home-manager build --flake /etc/nixos#username@hostname --show-trace
home-manager generations
# Force fresh rebuild
rm -rf ~/.local/share/nix/profiles/home-manager
home-manager switch --flake /etc/nixos#username@hostname
```
---
#### 🔄 USB devices blocked by USBGuard
**Diagnosis:**
- USBGuard service status
- Policy decisions
**Solutions:**
```bash
# Check USBGuard status
systemctl status usbguard
# List USB devices
lsusb
# Temporarily allow device
usbguard list-devices
usbguard allow-device <device-id>
```
**Configuration:** Edit `/etc/usbguard/rules.conf` for permanent changes
---
### System Recovery
**If system fails to boot:**
1. Reboot into recovery ISO
2. Remount root partition
3. Apply configuration:
```bash
sudo nixos-rebuild switch --flake /etc/nixos#hostname
```
**If home-manager breaks:**
```bash
# Reinstall from scratch
home-manager uninstall
home-manager switch --flake /etc/nixos#username@hostname
```
---
## 📚 Further Reading & Resources
### NixOS Documentation
- **[NixOS Manual](https://nixos.org/manual/nixos/stable/)** - Official NixOS documentation
- **[Nix Flakes Guide](https://nixos.wiki/wiki/Flakes)** - Flakes feature documentation
- **[Home Manager Manual](https://nix-community.github.io/home-manager/)** - User-level configuration
### Related Projects
- **[Hyprland](https://wiki.hyprland.org/)** - Wayland compositor
- **[Stylix](https://stylix.danth.me/)** - Theming system
- **[Caelestia Shell](https://github.com/caelestia-dots/shell)** - Desktop environment
- **[SOPS-nix](https://github.com/Mic92/sops-nix)** - Secret management
- **[Helium Browser](https://github.com/oxcl/nix-flake-helium-browser)** - Flutter-based browser
### Repository Documentation
- **[GROUPS.md](docs/GROUPS.md)** - Package groups (dev, cybersecurity) and how to use them
- **[SERVER.md](docs/SERVER.md)** - Server-specific service configurations
- **[NEOVIM.md](docs/NEOVIM.md)** - Neovim configuration (nvf)
- **[THEMES.md](docs/THEMES.md)** - Theme system and color schemes
- **[CONTRIBUTING.md](docs/CONTRIBUTING.md)** - Contribution guidelines
### Useful Commands Reference
```bash
# Show generation history
sudo nix-env --list-generations
# Switch to specific generation
sudo nixos-rebuild switch --flake .#laptop --profile /nix/var/nix/profiles/system-<generation>
# Rollback to previous generation
sudo nix-env --rollback
sudo nixos-rebuild switch
# Clean old generations (keep 5 latest)
sudo nix-collect-garbage -d
sudo nix-env --delete-generations old
```
---
+17 -17
View File
@@ -1,17 +1,17 @@
# Themes # Themes
Themes are defined in `themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed. Themes are defined in `themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed.
You can change the selected theme by changing the import statement of your host's variables.nix file. You can change the selected theme by changing the import statement of your host's variables.nix file.
## Create your theme ## Create your theme
Create a copy of one of the existing themes and change the variables. Create a copy of one of the existing themes and change the variables.
Wallpapers are loaded from the [hadi's awesome-wallpapers](https://github.com/anotherhadi/awesome-wallpapers) repo. Wallpapers are loaded from the [hadi's awesome-wallpapers](https://github.com/anotherhadi/awesome-wallpapers) repo.
## Gallery ## Gallery
### Rose-pine ### Rose-pine
![Home](../.github/assets/rose-pine/home.png) ![Home](../.github/assets/rose-pine/home.png)
![Flake & Spotify](../.github/assets/rose-pine/flake-spotify.png) ![Flake & Spotify](../.github/assets/rose-pine/flake-spotify.png)
![Browser and notification center](../.github/assets/rose-pine/browser-and-notifications.png) ![Browser and notification center](../.github/assets/rose-pine/browser-and-notifications.png)
Generated
+258 -183
View File
@@ -213,98 +213,6 @@
"type": "github" "type": "github"
} }
}, },
"caelestia-cli": {
"inputs": {
"caelestia-shell": "caelestia-shell",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1780375472,
"narHash": "sha256-Q8RAJoYlakA6B2I5DVcuxzNbhCNU1nnIjqQZYP1KGrM=",
"owner": "caelestia-dots",
"repo": "cli",
"rev": "d1c8c8fc09738d1b40576e97c274b4a11a2e0ac7",
"type": "github"
},
"original": {
"owner": "caelestia-dots",
"repo": "cli",
"type": "github"
}
},
"caelestia-cli_2": {
"inputs": {
"caelestia-shell": [
"caelestia-shell"
],
"nixpkgs": [
"caelestia-shell",
"nixpkgs"
]
},
"locked": {
"lastModified": 1779768519,
"narHash": "sha256-2n/447oNfAZrl1yncafLPgXMx5tuTF6T2B+zI/zFYkI=",
"owner": "caelestia-dots",
"repo": "cli",
"rev": "64a5507e74f6c7d0c29f9131964412f8f8c4dd89",
"type": "github"
},
"original": {
"owner": "caelestia-dots",
"repo": "cli",
"type": "github"
}
},
"caelestia-shell": {
"inputs": {
"caelestia-cli": [
"caelestia-cli"
],
"nixpkgs": [
"caelestia-cli",
"nixpkgs"
],
"quickshell": "quickshell"
},
"locked": {
"lastModified": 1780196414,
"narHash": "sha256-iXmyWULTZuRd68xRL79e9GyYL9FZ6gfh6zl1PPlWX2A=",
"owner": "caelestia-dots",
"repo": "shell",
"rev": "63bb82762bb29ac9b7fcd5b97839abae721ce860",
"type": "github"
},
"original": {
"owner": "caelestia-dots",
"repo": "shell",
"type": "github"
}
},
"caelestia-shell_2": {
"inputs": {
"caelestia-cli": "caelestia-cli_2",
"nixpkgs": [
"nixpkgs"
],
"quickshell": "quickshell_2"
},
"locked": {
"lastModified": 1780196414,
"narHash": "sha256-iXmyWULTZuRd68xRL79e9GyYL9FZ6gfh6zl1PPlWX2A=",
"owner": "caelestia-dots",
"repo": "shell",
"rev": "63bb82762bb29ac9b7fcd5b97839abae721ce860",
"type": "github"
},
"original": {
"owner": "caelestia-dots",
"repo": "shell",
"type": "github"
}
},
"crane": { "crane": {
"locked": { "locked": {
"lastModified": 1779130139, "lastModified": 1779130139,
@@ -372,6 +280,38 @@
} }
}, },
"flake-compat_2": { "flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_4": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1777699697, "lastModified": 1777699697,
@@ -442,6 +382,24 @@
} }
}, },
"flake-parts_4": { "flake-parts_4": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_4"
},
"locked": {
"lastModified": 1778716662,
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_5": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
"nvf", "nvf",
@@ -462,7 +420,7 @@
"type": "github" "type": "github"
} }
}, },
"flake-parts_5": { "flake-parts_6": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
"stylix", "stylix",
@@ -499,6 +457,32 @@
"type": "github" "type": "github"
} }
}, },
"git-hooks": {
"inputs": {
"flake-compat": [
"nix-gaming",
"flake-compat"
],
"gitignore": "gitignore_2",
"nixpkgs": [
"nix-gaming",
"nixpkgs"
]
},
"locked": {
"lastModified": 1781733627,
"narHash": "sha256-U3yTuGBnmXvXoQI3qkpfEDsn9RovQPAjN7ndRco+3u0=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "3bbec39bc90eadfa031e6f3b77272f3f60803e39",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": { "gitignore": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -521,6 +505,28 @@
"type": "github" "type": "github"
} }
}, },
"gitignore_2": {
"inputs": {
"nixpkgs": [
"nix-gaming",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gnome-shell": { "gnome-shell": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -999,6 +1005,50 @@
"type": "github" "type": "github"
} }
}, },
"nix-citizen": {
"inputs": {
"flake-compat": "flake-compat_2",
"nix-gaming": [
"nix-gaming"
],
"nixpkgs": "nixpkgs_7",
"treefmt-nix": "treefmt-nix_4"
},
"locked": {
"lastModified": 1782345817,
"narHash": "sha256-HfMMa51hKi6KPrGGerg6vrdKdJcSEmhEbCM1hCCQNX8=",
"owner": "LovingMelody",
"repo": "nix-citizen",
"rev": "9d93df2ace0c1c2f83b7d03bfee81441d63ec5e0",
"type": "github"
},
"original": {
"owner": "LovingMelody",
"repo": "nix-citizen",
"type": "github"
}
},
"nix-gaming": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-parts": "flake-parts_4",
"git-hooks": "git-hooks",
"nixpkgs": "nixpkgs_8"
},
"locked": {
"lastModified": 1782619847,
"narHash": "sha256-13XsPDHTG3vkNjagqQvFRG0zZK0yrDwfcU5ou/KtIFM=",
"owner": "fufexan",
"repo": "nix-gaming",
"rev": "55d03bdd91952ff6fd0b0779efe79da67323b6c5",
"type": "github"
},
"original": {
"owner": "fufexan",
"repo": "nix-gaming",
"type": "github"
}
},
"nix-index-database": { "nix-index-database": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -1021,8 +1071,8 @@
}, },
"nixarr": { "nixarr": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_7", "nixpkgs": "nixpkgs_9",
"treefmt-nix": "treefmt-nix_4", "treefmt-nix": "treefmt-nix_5",
"vpnconfinement": "vpnconfinement", "vpnconfinement": "vpnconfinement",
"website-builder": "website-builder" "website-builder": "website-builder"
}, },
@@ -1042,7 +1092,7 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_8" "nixpkgs": "nixpkgs_10"
}, },
"locked": { "locked": {
"lastModified": 1780310866, "lastModified": 1780310866,
@@ -1120,6 +1170,21 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-lib_4": {
"locked": {
"lastModified": 1777168982,
"narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1779796641, "lastModified": 1779796641,
@@ -1137,6 +1202,35 @@
} }
}, },
"nixpkgs_10": { "nixpkgs_10": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_11": {
"locked": {
"lastModified": 1780243769,
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "331800de5053fcebacf6813adb5db9c9dca22a0c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_12": {
"locked": { "locked": {
"lastModified": 1778869304, "lastModified": 1778869304,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
@@ -1152,7 +1246,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_11": { "nixpkgs_13": {
"locked": { "locked": {
"lastModified": 1780749050, "lastModified": 1780749050,
"narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=", "narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=",
@@ -1168,7 +1262,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_12": { "nixpkgs_14": {
"locked": { "locked": {
"lastModified": 1778869304, "lastModified": 1778869304,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
@@ -1184,7 +1278,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_13": { "nixpkgs_15": {
"locked": { "locked": {
"lastModified": 1775888245, "lastModified": 1775888245,
"narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=", "narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=",
@@ -1200,7 +1294,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_14": { "nixpkgs_16": {
"locked": { "locked": {
"lastModified": 1780243769, "lastModified": 1780243769,
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=", "narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=",
@@ -1297,6 +1391,38 @@
} }
}, },
"nixpkgs_7": { "nixpkgs_7": {
"locked": {
"lastModified": 1781577229,
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_8": {
"locked": {
"lastModified": 1782175435,
"narHash": "sha256-EMzXKmnOtBQ2MnvpiNOm7E+kOMvdPrIKaeg52Tip2Uk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "89570f24e97e614aa34aa9ab1c927b6578a43775",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_9": {
"locked": { "locked": {
"lastModified": 1775595990, "lastModified": 1775595990,
"narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=", "narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=",
@@ -1312,39 +1438,10 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_8": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_9": {
"locked": {
"lastModified": 1780243769,
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "331800de5053fcebacf6813adb5db9c9dca22a0c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"notashelf-tuigreet": { "notashelf-tuigreet": {
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
"nixpkgs": "nixpkgs_10", "nixpkgs": "nixpkgs_12",
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
@@ -1388,7 +1485,7 @@
}, },
"nur-anotherhadi": { "nur-anotherhadi": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_11" "nixpkgs": "nixpkgs_13"
}, },
"locked": { "locked": {
"lastModified": 1781028989, "lastModified": 1781028989,
@@ -1427,11 +1524,11 @@
}, },
"nvf": { "nvf": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_4",
"flake-parts": "flake-parts_4", "flake-parts": "flake-parts_5",
"mnw": "mnw", "mnw": "mnw",
"ndg": "ndg", "ndg": "ndg",
"nixpkgs": "nixpkgs_12", "nixpkgs": "nixpkgs_14",
"systems": "systems_5" "systems": "systems_5"
}, },
"locked": { "locked": {
@@ -1471,64 +1568,21 @@
"type": "github" "type": "github"
} }
}, },
"quickshell": {
"inputs": {
"nixpkgs": [
"caelestia-cli",
"caelestia-shell",
"nixpkgs"
]
},
"locked": {
"lastModified": 1779430452,
"narHash": "sha256-zTslhsxLqUlRTML506iougTGzyR38Fzhzn7t4KDEuuE=",
"ref": "refs/heads/master",
"rev": "4b4fca3224ab977dc515ac0bb78d00b3dfa71e00",
"revCount": 819,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
"original": {
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}
},
"quickshell_2": {
"inputs": {
"nixpkgs": [
"caelestia-shell",
"nixpkgs"
]
},
"locked": {
"lastModified": 1779430452,
"narHash": "sha256-zTslhsxLqUlRTML506iougTGzyR38Fzhzn7t4KDEuuE=",
"ref": "refs/heads/master",
"rev": "4b4fca3224ab977dc515ac0bb78d00b3dfa71e00",
"revCount": 819,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
"original": {
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}
},
"root": { "root": {
"inputs": { "inputs": {
"awesome-wallpapers": "awesome-wallpapers", "awesome-wallpapers": "awesome-wallpapers",
"blog": "blog", "blog": "blog",
"caelestia-cli": "caelestia-cli",
"caelestia-shell": "caelestia-shell_2",
"default-creds": "default-creds", "default-creds": "default-creds",
"helium-browser": "helium-browser", "helium-browser": "helium-browser",
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprland": "hyprland", "hyprland": "hyprland",
"iknowyou": "iknowyou", "iknowyou": "iknowyou",
"nix-citizen": "nix-citizen",
"nix-gaming": "nix-gaming",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixarr": "nixarr", "nixarr": "nixarr",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_9", "nixpkgs": "nixpkgs_11",
"nixpkgs-stable": "nixpkgs-stable", "nixpkgs-stable": "nixpkgs-stable",
"notashelf-tuigreet": "notashelf-tuigreet", "notashelf-tuigreet": "notashelf-tuigreet",
"nur-anotherhadi": "nur-anotherhadi", "nur-anotherhadi": "nur-anotherhadi",
@@ -1560,7 +1614,7 @@
}, },
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_13" "nixpkgs": "nixpkgs_15"
}, },
"locked": { "locked": {
"lastModified": 1780547341, "lastModified": 1780547341,
@@ -1583,9 +1637,9 @@
"base16-helix": "base16-helix", "base16-helix": "base16-helix",
"base16-vim": "base16-vim", "base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme", "firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_5", "flake-parts": "flake-parts_6",
"gnome-shell": "gnome-shell", "gnome-shell": "gnome-shell",
"nixpkgs": "nixpkgs_14", "nixpkgs": "nixpkgs_16",
"nur": "nur", "nur": "nur",
"systems": "systems_6", "systems": "systems_6",
"tinted-kitty": "tinted-kitty", "tinted-kitty": "tinted-kitty",
@@ -1828,6 +1882,27 @@
} }
}, },
"treefmt-nix_4": { "treefmt-nix_4": {
"inputs": {
"nixpkgs": [
"nix-citizen",
"nixpkgs"
]
},
"locked": {
"lastModified": 1780220602,
"narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_5": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixarr", "nixarr",
+38 -8
View File
@@ -16,6 +16,9 @@
notashelf-tuigreet.url = "github:NotAShelf/tuigreet"; notashelf-tuigreet.url = "github:NotAShelf/tuigreet";
helium-browser.url = "github:oxcl/nix-flake-helium-browser"; helium-browser.url = "github:oxcl/nix-flake-helium-browser";
nur-anotherhadi.url = "github:anotherhadi/nur-packages"; nur-anotherhadi.url = "github:anotherhadi/nur-packages";
nix-citizen.url = "github:LovingMelody/nix-citizen";
nix-gaming.url = "github:fufexan/nix-gaming";
nix-citizen.inputs.nix-gaming.follows = "nix-gaming";
nix-index-database = { nix-index-database = {
url = "github:nix-community/nix-index-database"; url = "github:nix-community/nix-index-database";
@@ -25,15 +28,19 @@
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
caelestia-shell = { nur = {
url = "github:caelestia-dots/shell"; url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
caelestia-cli = { zen-browser = {
url = "github:caelestia-dots/cli"; url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs"; inputs = {
home-manager.follows = "home-manager";
nixpkgs.follows = "nixpkgs";
};
}; };
# Server # Server
nixarr.url = "github:rasmus-kirk/nixarr"; nixarr.url = "github:rasmus-kirk/nixarr";
default-creds.url = "github:anotherhadi/default-creds"; default-creds.url = "github:anotherhadi/default-creds";
@@ -66,11 +73,34 @@
(import ./home/programs/group/flake.nix args) (import ./home/programs/group/flake.nix args)
(import ./home/programs/nixy/flake.nix args) (import ./home/programs/nixy/flake.nix args)
{ {
# Modern app output with metadata
apps.${system} = {
default = {
type = "app";
program = "${pkgs.neovim}/bin/nvim";
meta = {
description = "Improved Vim-based text editor";
homepage = "https://neovim.io";
license = "Apache-2.0";
};
};
};
# Formatter output
formatter.${system} = pkgs.alejandra; formatter.${system} = pkgs.alejandra;
# Update to modern syntax (no defaultApp)
# Add homeManagerModules output for proper Home Manager integration
#homeManagerModules = {
# dev = import ./home/programs/group/dev.nix { inherit inputs nixpkgs system; };
# cybersecurity = import ./home/programs/group/cybersecurity.nix { inherit inputs nixpkgs system; };
# basic-apps = import ./home/programs/group/basic-apps.nix { inherit inputs nixpkgs system; };
# misc = import ./home/programs/group/misc.nix { inherit inputs nixpkgs system; };
#};
nixosConfigurations = { nixosConfigurations = {
h-laptop = import ./hosts/laptop/flake.nix args; thinkpad = import ./hosts/laptop/flake.nix args;
h-work = import ./hosts/work/flake.nix args; home-pc = import ./hosts/home-pc/flake.nix args;
jack = import ./hosts/server/flake.nix args;
}; };
} }
]; ];
+21 -17
View File
@@ -4,20 +4,18 @@
pkgs-nur-hadi, pkgs-nur-hadi,
... ...
}: { }: {
home.packages = with pkgs-stable; [ home.packages = (with pkgs-stable; [
vlc # Video player
kodi # Kodi
keepassxc # Passwords
vlc # Video player
obsidian # Note taking app obsidian # Note taking app
textpieces # Manipulate texts cwtch-ui # messager
resources # Ressource monitor
gnome-clocks # Clocks app
gnome-text-editor # Basic graphic text editor
ticktick # Todo app ticktick # Todo app
pinta # Image editor
switcheroo # Convert images between different formats
onlyoffice-desktopeditors # Office suite onlyoffice-desktopeditors # Office suite
blanket # Listen to different sounds firefox # Backup browser
signal-desktop # Messaging app tor-browser # Tor browser
librewolf # Backup browser
# I love TUIs # I love TUIs
caligula # User-friendly, lightweight TUI for disk imaging (ISO, USB BOOT) caligula # User-friendly, lightweight TUI for disk imaging (ISO, USB BOOT)
@@ -27,19 +25,25 @@
tealdeer # Fast tldr client tealdeer # Fast tldr client
sttr # Minimalist "cyberchef" like. Cross-platform, cli app to perform various operations on string sttr # Minimalist "cyberchef" like. Cross-platform, cli app to perform various operations on string
wiremix # Simple TUI mixer for PipeWire wiremix # Simple TUI mixer for PipeWire
slides # A terminal-based presentation tool that allows you to create and deliver presentations directly from the command line
pom # Pomodoro timer in your terminal pom # Pomodoro timer in your terminal
pkgs.wifitui # TUI for managing wifi pkgs.wifitui # TUI for managing wifi
pkgs-nur-hadi.usbguard-tui # TUI for managing USBGuard rules pkgs-nur-hadi.usbguard-tui # TUI for managing USBGuard rules
pkgs-nur-hadi.sheets # Terminal based spreadsheet tool
blueman # Bluetooth manager (blueman-manager, blueman-adapters, blueman-sendto)
bluez # Bluetooth stack tools (bluetoothctl)
# I love CLIs # I love CLIs
httpie # Command-line HTTP client, a user-friendly cURL replacement httpie # Command-line HTTP client, a user-friendly cURL replacement
gh # GitHub
gh-dash # A terminal dashboard for GitHub
figlet # Transform text into ASCII art
pastel # Command-line tool to generate, analyze, convert and manipulate colors pastel # Command-line tool to generate, analyze, convert and manipulate colors
imagemagick # Image manipulation tool imagemagick # Image manipulation tool
chafa # Image to ANSI/Unicode converter and more. chafa # Image to ANSI/Unicode converter and more.
];
])
++ (with pkgs; [
vesktop # Vencord Discord Mod
tor # tor network service
]);
} }
+9 -5
View File
@@ -4,14 +4,18 @@
}: }:
(with pkgs; [ (with pkgs; [
go go
claude-code zig
claude-code # Claude Code
zed-editor #Zed
vscodium # VS Code
]) ])
++ (with pkgs-stable; [ ++ (with pkgs-stable; [
nodejs bun
air
duckdb
python3 python3
jq jq
nix-prefetch-github
rsync rsync
rustc
cargo
]) ])
+45
View File
@@ -0,0 +1,45 @@
{
pkgs,
...
}: {
home.packages = (with pkgs; [
# ─────────────────────────────────────────────────────────────
# Game launchers
# ─────────────────────────────────────────────────────────────
lutris # Universal launcher for Wine, emulators, and native games
#prismlauncher # Minecraft launcher with Fabric/Forge/Quilt support
# ─────────────────────────────────────────────────────────────
# Performance & overlays
# ─────────────────────────────────────────────────────────────
mangohud # FPS and hardware monitoring overlay
goverlay # GUI for MangoHud and vkBasalt
gamescope # Micro-compositor for better fullscreen, scaling and frame limiting
gamemode # Requests performance optimizations while gaming
# ─────────────────────────────────────────────────────────────
# Proton & Wine
# ─────────────────────────────────────────────────────────────
protonup-qt # Install and update GE-Proton, Wine-GE, Luxtorpeda, etc.
winetricks # Install Windows runtimes into Wine prefixes
protontricks # Winetricks for Steam Proton prefixes
wineWow64Packages.staging # Wine (32/64-bit) with staging patches
# ─────────────────────────────────────────────────────────────
# Vulkan layers
# ─────────────────────────────────────────────────────────────
vkbasalt # Vulkan post-processing (CAS sharpening, FXAA, etc.)
# ─────────────────────────────────────────────────────────────
# Runner layers
# ─────────────────────────────────────────────────────────────
steam-run # Run generic Linux binaries inside Steam's runtime
appimage-run # Execute AppImages on NixOS
]);
}
-3
View File
@@ -5,12 +5,9 @@
... ...
}: { }: {
home.packages = with pkgs-stable; [ home.packages = with pkgs-stable; [
tty-solitaire
bastet
peaclock peaclock
cbonsai cbonsai
pipes pipes
cmatrix
fastfetch fastfetch
]; ];
} }
+11
View File
@@ -0,0 +1,11 @@
{
pkgs,
...
}: {
home.packages = (with pkgs; [
ardour # DAW
guitarix # Digital AMP
carla # Hosting of VSTs
hydrogen# Drums
]);
}
+19 -7
View File
@@ -19,13 +19,25 @@
in { in {
packages.${system}.nvim = nvimConfig.neovim; packages.${system}.nvim = nvimConfig.neovim;
apps.${system}.nvim = { apps.${system} = {
type = "app"; nvim = {
program = "${nvimConfig.neovim}/bin/nvim"; type = "app";
}; program = "${nvimConfig.neovim}/bin/nvim";
defaultApp.${system} = { meta = {
type = "app"; description = "Improved Vim-based text editor";
program = "${nvimConfig.neovim}/bin/nvim"; homepage = "https://neovim.io";
license = "Apache-2.0";
};
};
default = {
type = "app";
program = "${nvimConfig.neovim}/bin/nvim";
meta = {
description = "Improved Vim-based text editor";
homepage = "https://neovim.io";
license = "Apache-2.0";
};
};
}; };
homeManagerModules.nvim = { homeManagerModules.nvim = {
+110
View File
@@ -0,0 +1,110 @@
# Star Citizen on Nixy
This repo already includes Star Citizen support through `nix-citizen`.
Relevant files:
- `flake.nix` — declares the `nix-citizen` and `nix-gaming` inputs
- `home/programs/star-citizen/default.nix` — Home Manager module that installs the chosen Star Citizen package
- `home/programs/steam/system.nix` — Steam / gamescope / gamemode setup
- `home/programs/group/gaming-apps.nix` — extra gaming tools such as `lutris`, `mangohud`, `protonup-qt`, and `wine`
## Recommended package
For most setups, start with:
- `rsi-launcher-umu`
If you want the game package instead of just the launcher, try:
- `star-citizen-umu`
The `*-umu` variants are usually the safest choice on Nix-based gaming setups because they are designed around UMU/Proton style runtime handling.
## How to enable it
Your laptop and home-pc profiles already import the module:
- `hosts/laptop/home.nix`
- `hosts/home-pc/home.nix`
So you only need to turn it on in the relevant Home Manager config.
Add or update:
```nix
programs.star-citizen = {
enable = true;
package = "rsi-launcher-umu";
};
```
If you want the packaged game instead of the launcher, use:
```nix
programs.star-citizen = {
enable = true;
package = "star-citizen-umu";
};
```
## Rebuild
This flake exposes NixOS host outputs, so apply the change with your normal host rebuild command from the repo root:
```bash
sudo nixos-rebuild switch --flake .#thinkpad
```
or:
```bash
sudo nixos-rebuild switch --flake .#home-pc
```
If youre building from one of the host directories directly, use the host-specific `nixos-rebuild` flow you already use in this repo.
## First launch checklist
Before launching the game, make sure:
- `Steam` module is enabled
- `gamescope` and `gamemode` are available
- `protonup-qt` is installed so you can manage `GE-Proton` / `Wine-GE`
- you have enough disk space for the launcher and game files
- your GPU drivers are set up properly
Useful tools already included in this repo:
- `lutris`
- `mangohud`
- `goverlay`
- `gamescope`
- `gamemode`
- `protonup-qt`
- `winetricks`
- `protontricks`
## Notes
- Star Citizen is a Windows game, so the launcher/game still downloads its own data after installation.
- If the launcher starts but the game fails to launch, try switching the package to another `nix-citizen` option from `home/programs/star-citizen/default.nix`.
- If you want overlay/performance debugging, launch the game with `MANGOHUD=1` or use the included `mangohud` / `goverlay` tools.
## Troubleshooting
### Launcher doesnt appear
- Rebuild the Home Manager profile
- Check that `programs.star-citizen.enable = true;`
- Confirm the module is imported in the host profile you are using
### Launcher opens but game fails
- Try `rsi-launcher-umu` or `star-citizen-umu`
- Verify `protonup-qt` has a current `GE-Proton`
- Make sure `gamescope` / `gamemode` are enabled in your gaming setup
### Need a clean reset
If you want to switch package variants, change `programs.star-citizen.package` and rebuild again. The package selection is the only thing the module installs.
+35
View File
@@ -0,0 +1,35 @@
{
config,
inputs,
lib,
pkgs,
...
}:
let
cfg = config.programs.star-citizen;
system = pkgs.stdenv.hostPlatform.system;
in {
options.programs.star-citizen = {
enable = lib.mkEnableOption "Star Citizen via nix-citizen";
package = lib.mkOption {
type = lib.types.enum [
"rsi-launcher"
"rsi-launcher-git"
"rsi-launcher-umu"
"star-citizen"
"star-citizen-git"
"star-citizen-umu"
"lug-helper"
];
default = "rsi-launcher";
description = "Package from nix-citizen to install when Star Citizen is enabled.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [
inputs.nix-citizen.packages.${system}.${cfg.package}
];
};
}
+8
View File
@@ -0,0 +1,8 @@
{
...
}: {
home.sessionVariables = {
# Better Steam scaling on HiDPI displays
STEAM_FORCE_DESKTOPUI_SCALING = "1.25";
};
}
+27
View File
@@ -0,0 +1,27 @@
{
pkgs,
...
}: {
hardware.graphics = {
enable = true;
enable32Bit = true;
};
programs.steam = {
enable = true;
gamescopeSession.enable = true;
remotePlay.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
extraCompatPackages = with pkgs; [
proton-ge-bin
];
};
programs.gamescope.enable = true;
programs.gamemode.enable = true;
hardware.steam-hardware.enable = true;
}
+98
View File
@@ -0,0 +1,98 @@
{
inputs,
pkgs,
...
}: {
imports = [inputs.zen-browser.homeModules.beta];
programs.zen-browser = {
enable = true;
profiles.default = {
extensions = {
packages = with pkgs.nur.repos.rycee.firefox-addons; [
ublock-origin
video-downloadhelper
multi-account-containers
noscript
];
};
search = {
force = true;
default = "startpage";
engines = {
nixos-options = {
name = "NixOS Options";
urls = [{template = "https://search.nixos.org/options?channel=unstable&query={searchTerms}";}];
definedAliases = ["@no"];
};
nixos-packages = {
name = "NixOS Packages";
urls = [{template = "https://search.nixos.org/packages?channel=unstable&query={searchTerms}";}];
definedAliases = ["@np"];
};
nixos-wiki = {
name = "NixOS Wiki";
urls = [{template = "https://wiki.nixos.org/w/index.php?search={searchTerms}";}];
definedAliases = ["@nw"];
};
startpage = {
name = "Startpage";
urls = [
{
method = "POST";
template = "https://www.startpage.com/sp/search";
params = [
{
name = "query";
value = "{searchTerms}";
}
{
name = "prfe";
value = "26b77e0ef13273610e32813c3233d92429c5426b277dcad41b2f2d38f94a44e839aa1abc7cf4223afd5872a185d5c9976949b9b1f0f83bbde3f9d4ac610d8fffa03947db6336c7a249ef62c2824adfd1";
}
];
}
{
type = "application/x-suggestions+json";
template = "https://www.startpage.com/osuggestions?query={searchTerms}";
}
];
definedAliases = ["@sp"];
};
};
};
settings = {
"browser.download.useDownloadDir" = false;
"browser.ml.linkPreview.enabled" = true;
"browser.ml.linkPreview.optin" = true;
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = true;
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = true;
"browser.search.suggest.enabled" = true;
"browser.search.suggest.enabled.private" = true;
"browser.translations.neverTranslateLanguages" = "de";
"dom.security.https_only_mode" = true;
"network.trr.mode" = 3;
"network.trr.uri" = "https://mozilla.cloudflare-dns.com/dns-query";
"privacy.history.custom" = false;
"privacy.trackingprotection.allow_list.convenience.enabled" = true;
"zen.tabs.select-recently-used-on-close" = false;
"zen.tabs.show-newtab-vertical" = false;
"zen.view.show-newtab-button-top" = false;
"zen.workspaces.continue-where-left-off" = true;
"browser.contentblocking.category" = "strict";
"network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation" = true;
"network.lna.blocking" = true;
"privacy.annotate_channels.strict_list.enabled" = true;
"privacy.bounceTrackingProtection.mode" = 1;
"privacy.fingerprintingProtection" = true;
"privacy.query_stripping.enabled" = true;
"privacy.query_stripping.enabled.pbmode" = true;
"privacy.trackingprotection.consentmanager.skip.pbmode.enabled" = false;
"privacy.trackingprotection.emailtracking.enabled" = true;
"privacy.trackingprotection.enabled" = true;
"privacy.trackingprotection.socialtracking.enabled" = true;
};
};
};
}
+62
View File
@@ -0,0 +1,62 @@
{
pkgs,
lib,
config,
...
}:
{
programs.zen-browser = {
enable = true;
policies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
DisablePocket = true;
OfferToSaveLogins = false;
PasswordManagerEnabled = false;
AutofillAddressEnabled = false;
AutofillCreditCardEnabled = false;
DontCheckDefaultBrowser = true;
DNSOverHTTPS = {
Enabled = true;
ProviderURL = "https://dns.quad9.net/dns-query";
Locked = true;
};
};
profiles.default = {
search = {
force = true;
default = "Startpage";
};
settings = {
"browser.startup.homepage" = "https://duckduckgo.com";
"browser.newtabpage.enabled" = false;
"privacy.resistFingerprinting" = true;
"privacy.trackingprotection.enabled" = true;
"geo.enabled" = false;
"dom.webnotifications.enabled" = false;
"signon.rememberSignons" = false;
"toolkit.telemetry.enabled" = false;
};
extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [
ublock-origin
firefox-multi-account-containers
noscript
];
};
};
home.sessionVariables.BROWSER = "zen";
}
+24
View File
@@ -0,0 +1,24 @@
{
programs.zen-browser = {
enable = true;
policies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
OfferToSaveLogins = false;
PasswordManagerEnabled = false;
DNSOverHTTPS = {
Enabled = true;
ProviderURL = "https://dns.quad9.net/dns-query";
Locked = true;
};
Homepage = {
URL = "https://duckduckgo.com";
StartPage = "homepage";
};
};
};
}
+244 -87
View File
@@ -2,29 +2,226 @@
pkgs, pkgs,
lib, lib,
config, config,
pkgs-nur-hadi,
... ...
}: let }:
let
colors = config.lib.stylix.colors; colors = config.lib.stylix.colors;
mkMenu = menu: let mkMenu = menu:
configFile = pkgs.writeText "config.yaml" ( let
lib.generators.toYAML {} { configFile = pkgs.writeText "config.yaml" (
anchor = "bottom-right"; lib.generators.toYAML { } {
border = "#${colors.base0D}80"; anchor = "bottom-right";
background = "#${colors.base01}EE"; border = "#${colors.base0D}80";
color = "#${colors.base05}"; background = "#${colors.base01}EE";
margin_right = 15; color = "#${colors.base05}";
margin_bottom = 15; margin_right = 15;
rows_per_column = 5; margin_bottom = 15;
rows_per_column = 5;
inherit menu; inherit menu;
} }
); );
in in
pkgs.writeShellScriptBin "menu" '' pkgs.writeShellScriptBin "menu" ''
exec ${lib.getExe pkgs.wlr-which-key} ${configFile} exec ${lib.getExe pkgs.wlr-which-key} ${configFile}
''; '';
in {
gui = exe: "uwsm app -- ${exe}";
term = exe: "uwsm app -- ${pkgs.ghostty}/bin/ghostty -e ${exe}";
appsMenu = mkMenu [
{
key = "f";
desc = "Firefox";
cmd = gui "${pkgs.firefox}/bin/firefox";
}
{
key = "o";
desc = "Obsidian";
cmd = gui "${pkgs.obsidian}/bin/obsidian";
}
{
key = "t";
desc = "TickTick";
cmd = gui "${pkgs.ticktick}/bin/ticktick";
}
{
key = "n";
desc = "OnlyOffice";
cmd = gui "${pkgs.onlyoffice-desktopeditors}/bin/onlyoffice-desktopeditors";
}
{
key = "v";
desc = "Vesktop";
cmd = gui "${pkgs.vesktop}/bin/vesktop";
}
{
key = "l";
desc = "VLC";
cmd = gui "${pkgs.vlc}/bin/vlc";
}
];
devMenu = mkMenu [
{
key = "z";
desc = "Zed";
cmd = gui "${pkgs.zed-editor}/bin/zed";
}
{
key = "c";
desc = "VSCodium";
cmd = gui "${pkgs.vscodium}/bin/codium";
}
{
key = "g";
desc = "Ghostty";
cmd = gui "${pkgs.ghostty}/bin/ghostty";
}
{
key = "f";
desc = "Fastfetch";
cmd = term "${pkgs.fastfetch}/bin/fastfetch";
}
{
key = "d";
desc = "Dysk";
cmd = term "${pkgs.dysk}/bin/dysk";
}
{
key = "w";
desc = "Wikiman";
cmd = term "${pkgs.wikiman}/bin/wikiman";
}
{
key = "s";
desc = "STTR";
cmd = term "${pkgs.sttr}/bin/sttr";
}
];
gamingMenu = mkMenu [
{
key = "l";
desc = "Lutris";
cmd = gui "${pkgs.lutris}/bin/lutris";
}
{
key = "p";
desc = "ProtonUp-Qt";
cmd = gui "${pkgs.protonup-qt}/bin/protonup-qt";
}
{
key = "g";
desc = "GOverlay";
cmd = gui "${pkgs.goverlay}/bin/goverlay";
}
];
utilityMenu = mkMenu [
{
key = "B";
desc = "Blueman";
cmd = gui "${pkgs.blueman}/bin/blueman-manager";
}
{
key = "x";
desc = "Bluetoothctl";
cmd = term "${pkgs.bluez}/bin/bluetoothctl";
}
{
key = "w";
desc = "WiFi TUI";
cmd = term "${pkgs.wifitui}/bin/wifitui";
}
{
key = "m";
desc = "Wiremix";
cmd = term "${pkgs.wiremix}/bin/wiremix";
}
{
key = "u";
desc = "USBGuard TUI";
cmd = term "${pkgs-nur-hadi.usbguard-tui}/bin/usbguard-tui";
}
{
key = "c";
desc = "Caligula";
cmd = term "${pkgs.caligula}/bin/caligula";
}
{
key = "h";
desc = "Browsh";
cmd = term "${pkgs.browsh}/bin/browsh";
}
{
key = "p";
desc = "Peaclock";
cmd = term "${pkgs.peaclock}/bin/peaclock";
}
{
key = "o";
desc = "Cbonsai";
cmd = term "${pkgs.cbonsai}/bin/cbonsai";
}
{
key = "i";
desc = "Pipes";
cmd = term "${pkgs.pipes}/bin/pipes";
}
{
key = "t";
desc = "Tealdeer";
cmd = term "${pkgs.tealdeer}/bin/tldr";
}
{
key = "s";
desc = "Hyprlock";
cmd = gui "${pkgs.hyprlock}/bin/hyprlock";
}
];
systemMenu = mkMenu [
{
key = "l";
desc = "Lock";
cmd = "hyprlock";
}
{
key = "w";
desc = "Restart Waybar";
cmd = "pkill -x waybar; waybar";
}
{
key = "r";
desc = "Restart Walker";
cmd = "systemctl --user restart walker.service";
}
{
key = "e";
desc = "Restart Elephant";
cmd = "systemctl --user restart elephant.service";
}
{
key = "s";
desc = "Suspend";
cmd = "systemctl suspend";
}
{
key = "p";
desc = "Power Off";
cmd = "systemctl poweroff";
}
{
key = "b";
desc = "Reboot";
cmd = "systemctl reboot";
}
];
in
{
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
"$mod" = "SUPER"; "$mod" = "SUPER";
"$shiftMod" = "SUPER_SHIFT"; "$shiftMod" = "SUPER_SHIFT";
@@ -37,68 +234,42 @@ in {
+ lib.getExe (mkMenu [ + lib.getExe (mkMenu [
{ {
key = "a"; key = "a";
desc = "Proton Authenticator"; desc = "Apps";
cmd = "env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator"; cmd = lib.getExe appsMenu;
} }
{ {
key = "p"; key = "d";
desc = "Proton Pass"; desc = "Dev";
cmd = "${pkgs.proton-pass}/bin/proton-pass"; cmd = lib.getExe devMenu;
} }
{ {
key = "v"; key = "g";
desc = "Proton VPN"; desc = "Gaming";
cmd = "${pkgs.proton-vpn}/bin/protonvpn-app"; cmd = lib.getExe gamingMenu;
} }
{ {
key = "c"; key = "u";
desc = "Proton Calendar"; desc = "Utilities";
cmd = "${config.programs.helium.package}/bin/helium 'https://calendar.proton.me/'"; cmd = lib.getExe utilityMenu;
}
{
key = "m";
desc = "Proton Mail";
cmd = "${config.programs.helium.package}/bin/helium 'https://mail.proton.me/'";
}
{
key = "o";
desc = "Obsidian";
cmd = "${pkgs.obsidian}/bin/obsidian";
} }
{ {
key = "s"; key = "s";
desc = "Signal"; desc = "System";
cmd = "${pkgs.signal-desktop}/bin/signal-desktop"; cmd = lib.getExe systemMenu;
}
{
key = "t";
desc = "TickTick";
cmd = "${pkgs.ticktick}/bin/ticktick";
}
{
key = "b";
desc = "Helium";
cmd = "${config.programs.helium.package}/bin/helium";
}
{
key = "i";
desc = "Helium (Incognito)";
cmd = "${config.programs.helium.package}/bin/helium --incognito";
} }
]) ])
) )
"$mod,B, exec, uwsm app -- ${config.programs.helium.package}/bin/helium" # Browser "$mod,B, exec, uwsm app -- ${config.programs.librewolf.package}/bin/helium" # Browser
# Power # Power
"$mod, X, global, caelestia:session" # Powermenu
( (
"$shiftMod, X, exec, " "$mod, X, exec, "
+ lib.getExe (mkMenu [ + lib.getExe (mkMenu [
{ {
key = "l"; key = "l";
desc = "Lock"; desc = "Lock";
cmd = "hyprctl dispatch global caelestia:lock"; cmd = "hyprlock";
} }
{ {
key = "s"; key = "s";
@@ -122,8 +293,8 @@ in {
} }
{ {
key = "c"; key = "c";
desc = "Restart caelestia"; desc = "Restart Waybar";
cmd = "hyprctl dispatch exec 'caelestia-shell kill | sleep 1 | caelestia-shell'"; cmd = "pkill -x waybar; waybar";
} }
]) ])
) )
@@ -131,10 +302,9 @@ in {
# Quick launch # Quick launch
"$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal) "$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
"$mod,E, exec, uwsm app -- ${pkgs.thunar}/bin/thunar" # Thunar "$mod,E, exec, uwsm app -- ${pkgs.thunar}/bin/thunar" # Thunar
"$shiftMod, E, exec, pkill fuzzel || caelestia emoji -p" # Emoji picker "$mod, SPACE, exec, walker" # Launcher
"$mod, SPACE, global, caelestia:launcher" # Launcher "$mod, N, exec, ${lib.getExe pkgs.grimblast} save area" # Save screenshot
"$mod, N, exec, caelestia shell drawers toggle sidebar" # Sidebar (Notifications, quick actions) "$mod, D, exec, ${lib.getExe pkgs.grimblast} copy area" # Copy screenshot
"$mod, D, exec, caelestia shell drawers toggle dashboard" # Dashboard
# Windows # Windows
"$mod,Q, killactive," # Close window "$mod,Q, killactive," # Close window
@@ -152,10 +322,9 @@ in {
"$shiftMod,L, focusmonitor, 1" # Focus next monitor "$shiftMod,L, focusmonitor, 1" # Focus next monitor
# Utilities # Utilities
"$shiftMod, SPACE, exec, caelestia shell gameMode toggle" # Toggle Focus/Game mode "$shiftMod, S, exec, ${lib.getExe pkgs.grimblast} copy area" # Capture region
"$shiftMod, S, global, caelestia:screenshotFreeze" # Capture region (freeze) ", Print, exec, ${lib.getExe pkgs.grimblast} copy area" # Capture region
", Print, global, caelestia:screenshotFreeze" # Capture region (freeze) "$shiftMod+Alt, S, exec, ${lib.getExe pkgs.grimblast} save area" # Capture region
"$shiftMod+Alt, S, global, caelestia:screenshot" # Capture region
] ]
++ (builtins.concatLists ( ++ (builtins.concatLists (
builtins.genList ( builtins.genList (
@@ -176,32 +345,20 @@ in {
bindl = [ bindl = [
# Brightness # Brightness
", XF86MonBrightnessUp, global, caelestia:brightnessUp" ", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} set 5%+"
", XF86MonBrightnessDown, global, caelestia:brightnessDown" ", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} set 5%-"
# Media # Media
", XF86AudioPlay, global, caelestia:mediaToggle" ", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause"
", XF86AudioPause, global, caelestia:mediaToggle" ", XF86AudioPause, exec, ${lib.getExe pkgs.playerctl} play-pause"
", XF86AudioNext, global, caelestia:mediaNext" ", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next"
", XF86AudioPrev, global, caelestia:mediaPrev" ", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous"
", XF86AudioStop, global, caelestia:mediaStop" ", XF86AudioStop, exec, ${lib.getExe pkgs.playerctl} stop"
# Sound # Sound
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" ", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" ", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
]; ];
bindin = [
# Launcher
"$mod, mouse:272, global, caelestia:launcherInterrupt"
"$mod, mouse:273, global, caelestia:launcherInterrupt"
"$mod, mouse:274, global, caelestia:launcherInterrupt"
"$mod, mouse:275, global, caelestia:launcherInterrupt"
"$mod, mouse:276, global, caelestia:launcherInterrupt"
"$mod, mouse:277, global, caelestia:launcherInterrupt"
"$mod, mouse_up, global, caelestia:launcherInterrupt"
"$mod, mouse_down, global, caelestia:launcherInterrupt"
];
}; };
} }
+5 -1
View File
@@ -19,6 +19,7 @@ in {
./animations.nix ./animations.nix
./bindings.nix ./bindings.nix
./polkitagent.nix ./polkitagent.nix
./hyprlock.nix
./keyboard-backlight.nix # CHANGEME: This is for omen laptop only ./keyboard-backlight.nix # CHANGEME: This is for omen laptop only
]; ];
@@ -31,6 +32,7 @@ in {
libxcb libxcb
hyprland-qtutils hyprland-qtutils
adw-gtk3 adw-gtk3
hyprlock
hyprshot hyprshot
hyprpicker hyprpicker
swappy swappy
@@ -152,7 +154,9 @@ in {
kb_options = "caps:escape"; kb_options = "caps:escape";
follow_mouse = 1; follow_mouse = 1;
sensitivity = 0.5; sensitivity = 0.0; # or whatever speed you prefer
accel_profile = "flat";
repeat_delay = 300; repeat_delay = 300;
repeat_rate = 50; repeat_rate = 50;
numlock_by_default = true; numlock_by_default = true;
+58
View File
@@ -0,0 +1,58 @@
{config, ...}: let
c = config.lib.stylix.colors;
fontSans = config.stylix.fonts.sansSerif.name;
in {
xdg.configFile."hypr/hyprlock.conf".text = ''
general {
hide_cursor = true
grace = 0
}
background {
monitor =
color = rgba(${c."base00-rgb-r"}, ${c."base00-rgb-g"}, ${c."base00-rgb-b"}, 0.90)
blur_passes = 2
blur_size = 8
noise = 0.01
}
label {
monitor =
text = cmd[update:1000] date +"%A, %d %B %Y"
color = rgba(${c."base05-rgb-r"}, ${c."base05-rgb-g"}, ${c."base05-rgb-b"}, 1.0)
font_size = 30
font_family = "${fontSans}"
position = 0, 140
halign = center
valign = center
}
label {
monitor =
text = cmd[update:1000] date +"%H:%M"
color = rgba(${c."base0D-rgb-r"}, ${c."base0D-rgb-g"}, ${c."base0D-rgb-b"}, 1.0)
font_size = 54
font_family = "${fontSans}"
position = 0, 60
halign = center
valign = center
}
input-field {
monitor =
size = 320, 52
outline_thickness = 2
outer_color = rgba(${c."base03-rgb-r"}, ${c."base03-rgb-g"}, ${c."base03-rgb-b"}, 0.60)
inner_color = rgba(${c."base01-rgb-r"}, ${c."base01-rgb-g"}, ${c."base01-rgb-b"}, 0.92)
font_color = rgba(${c."base05-rgb-r"}, ${c."base05-rgb-g"}, ${c."base05-rgb-b"}, 1.0)
fail_color = rgba(${c."base08-rgb-r"}, ${c."base08-rgb-g"}, ${c."base08-rgb-b"}, 1.0)
check_color = rgba(${c."base0B-rgb-r"}, ${c."base0B-rgb-g"}, ${c."base0B-rgb-b"}, 1.0)
dots_spacing = 0.3
dots_center = true
hide_input = false
position = 0, -20
halign = center
valign = center
}
'';
}
+42
View File
@@ -0,0 +1,42 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
walker
elephant
];
systemd.user.services.elephant = {
Unit = {
Description = "Elephant backend service";
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${pkgs.elephant}/bin/elephant";
Restart = "on-failure";
RestartSec = 5;
};
};
systemd.user.services.walker = {
Unit = {
Description = "Walker application service";
PartOf = [ "graphical-session.target" ];
After = [ "elephant.service" "graphical-session.target" ];
Requires = [ "elephant.service" ];
};
Service = {
ExecStart = "${pkgs.walker}/bin/walker --gapplication-service";
Restart = "on-failure";
RestartSec = 5;
};
};
wayland.windowManager.hyprland.settings.exec-once = [
"dbus-update-activation-environment --systemd --all"
"systemctl --user start elephant.service walker.service"
];
}
+277
View File
@@ -0,0 +1,277 @@
{ pkgs, config, lib, ... }:
let
colors = config.lib.stylix.colors;
rgb = base:
"${colors."${base}-rgb-r"}, ${colors."${base}-rgb-g"}, ${colors."${base}-rgb-b"}";
terminal = cmd: "uwsm app -- ${lib.getExe pkgs.ghostty} -e ${cmd}";
radius = toString config.theme.bar-rounding;
in
{
home.packages = with pkgs; [
waybar
];
xdg.configFile."waybar/config".text = builtins.toJSON {
layer = "top";
position = "top";
height = 38;
spacing = 10;
"margin-top" = 8;
"margin-left" = 8;
"margin-right" = 8;
"gtk-layer-shell" = true;
"reload_style_on_change" = true;
"modules-left" = [
"hyprland/workspaces"
"tray"
];
"modules-center" = [
"hyprland/window"
];
"modules-right" = [
"custom/bluetooth"
"network"
"battery"
"pulseaudio"
"clock"
];
"hyprland/workspaces" = {
format = "{name}";
"disable-scroll" = true;
"all-outputs" = true;
"on-click" = "activate";
"persistent-workspaces" = {
"*" = 5;
};
};
"hyprland/window" = {
format = "{}";
"max-length" = 70;
"separate-outputs" = true;
};
tray = {
spacing = 8;
"icon-size" = 20;
};
network = {
interval = 2;
"format-wifi" = "󰖩 {signalStrength}%";
"format-ethernet" = "󰈀 {ifname}";
"format-linked" = "󰈀 {ifname}";
"format-disconnected" = "󰖪";
"tooltip-format" = "{essid}\n{ipaddr}";
"on-click" = terminal "wifitui";
};
battery = {
interval = 30;
states = {
warning = 30;
critical = 15;
};
format = "󰁹 {capacity}%";
"format-charging" = "󰂄 {capacity}%";
"format-plugged" = "󰂄 {capacity}%";
"format-full" = "󰁹 {capacity}%";
"tooltip-format" = "Battery {capacity}%\n{timeTo} remaining";
};
"custom/bluetooth" = {
exec = "echo 󰂯";
interval = 3600;
tooltip = false;
"on-click" = "uwsm app -- blueman-manager";
};
pulseaudio = {
"scroll-step" = 5;
format = "󰕾 {volume}%";
"format-muted" = "󰖁";
tooltip = true;
"on-click" = terminal "wiremix";
};
clock = {
interval = 1;
format = "󰥔 {:%H:%M}";
"tooltip-format" = "<big>{:%A, %d %B %Y}</big>";
};
};
xdg.configFile."waybar/style.css".text = ''
* {
border: none;
min-height: 0;
font-family:
"${config.stylix.fonts.sansSerif.name}",
"${config.stylix.fonts.monospace.name}",
sans-serif;
font-size: 13px;
}
window#waybar {
background: transparent;
color: #${colors.base05};
}
.modules-left,
.modules-center,
.modules-right {
margin: 6px 0;
}
#workspaces,
#window,
#tray,
#custom-bluetooth,
#network,
#battery,
#pulseaudio,
#clock {
background: rgba(${rgb "base01"}, 0.76);
border: 1px solid rgba(${rgb "base03"}, 0.45);
border-radius: ${radius}px;
padding: 0 14px;
margin: 6px 4px;
transition:
background-color 180ms ease,
border-color 180ms ease,
color 180ms ease;
}
#workspaces {
padding: 4px;
}
#workspaces button {
background: transparent;
color: #${colors.base04};
padding: 0 12px;
margin: 0 2px;
border-radius: ${radius}px;
transition: all 180ms ease;
}
#workspaces button:hover {
background: rgba(${rgb "base02"}, 0.70);
color: #${colors.base05};
}
#workspaces button.active {
background: #${colors.base0D};
color: #${colors.base00};
}
#workspaces button.urgent {
background: #${colors.base08};
color: #${colors.base00};
}
#window {
min-width: 260px;
padding-left: 18px;
padding-right: 18px;
color: #${colors.base05};
}
#window.empty {
background: transparent;
border: none;
}
#tray {
padding-left: 10px;
padding-right: 10px;
}
#custom-bluetooth {
color: #${colors.base0E};
}
#network {
color: #${colors.base0C};
}
#network.disconnected {
color: #${colors.base08};
}
#battery {
color: #${colors.base0A};
}
#battery.charging,
#battery.plugged {
color: #${colors.base0B};
}
#battery.warning {
color: #${colors.base0A};
}
#battery.critical {
color: #${colors.base08};
}
#pulseaudio {
color: #${colors.base0B};
}
#pulseaudio.muted {
color: #${colors.base08};
}
#clock {
color: #${colors.base0D};
font-weight: 600;
}
tooltip {
background: rgba(${rgb "base00"}, 0.90);
border: 1px solid rgba(${rgb "base03"}, 0.70);
border-radius: ${radius}px;
}
tooltip label {
color: #${colors.base05};
}
'';
wayland.windowManager.hyprland.settings = {
exec-once = [
"waybar"
];
};
}
+39
View File
@@ -0,0 +1,39 @@
{config, ...}: {
imports = [
# ─────────────────────────────────────────────────────────────
# System configuration
# ─────────────────────────────────────────────────────────────
../../nixos/audio.nix
../../nixos/docker.nix
../../nixos/bluetooth.nix
../../nixos/fonts.nix
../../nixos/home-manager.nix
../../nixos/nix.nix
../../nixos/systemd-boot.nix
../../nixos/tuigreet.nix
../../nixos/usbguard.nix
../../nixos/users.nix
../../nixos/utils.nix
../../nixos/hyprland.nix
# ─────────────────────────────────────────────────────────────
# Graphics Card
# ─────────────────────────────────────────────────────────────
../../nixos/amd-graphics.nix
# ─────────────────────────────────────────────────────────────
# System integration for Steam
# ─────────────────────────────────────────────────────────────
../../nixos/steam.nix
# You should let those lines as is
./hardware-configuration.nix
./variables.nix
];
programs.nix-ld.enable = true; #Dynamic Linking
home-manager.users."${config.var.username}" = import ./home.nix;
services.flatpak.enable = true;
# Don't touch this
system.stateVersion = "24.05";
}
+37
View File
@@ -0,0 +1,37 @@
{
inputs,
nixpkgs,
...
}:
nixpkgs.lib.nixosSystem {
modules = [
{
nixpkgs.overlays = [];
_module.args = {
inherit inputs;
};
}
({ config, pkgs, lib, ... }: {
# ─────────────────────────────────────────────────────────────
# AMD Microcode
# ─────────────────────────────────────────────────────────────
hardware.cpu.amd.updateMicrocode = true;
# ─────────────────────────────────────────────────────────────
# Hardware accelaration
# ─────────────────────────────────────────────────────────────
hardware.graphics = {
enable = true;
enable32Bit = true;
};
})
inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix
inputs.nix-index-database.nixosModules.default
./configuration.nix
];
}
+50
View File
@@ -0,0 +1,50 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/4eb8dac5-6a57-4cfd-a5f7-e0a74e72d9db";
fsType = "btrfs";
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/4eb8dac5-6a57-4cfd-a5f7-e0a74e72d9db";
fsType = "btrfs";
options = [ "subvol=home" ];
};
fileSystems."/nix" =
{ device = "/dev/disk/by-uuid/4eb8dac5-6a57-4cfd-a5f7-e0a74e72d9db";
fsType = "btrfs";
options = [ "subvol=nix" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/E823-261A";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
fileSystems."/mnt/hdd" = {
device = "/dev/disk/by-uuid/8b6e4527-2ea7-4f08-9f86-12a766e39313";
fsType = "ext4";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/d0243bc0-10fb-4fa6-9933-945eb2965385"; }
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+73
View File
@@ -0,0 +1,73 @@
{config, ...}: {
imports = [
# ─────────────────────────────────────────────────────────────
# Programs
# ─────────────────────────────────────────────────────────────
../../home/programs/ghostty
../../home/programs/nvf
../../home/programs/shell
../../home/programs/git
../../home/programs/git/lazygit.nix
../../home/programs/thunar
../../home/programs/nixy
../../home/programs/nightshift
../../home/programs/nix-utils
../../home/programs/spotatui
../../home/programs/yazi
# ─────────────────────────────────────────────────────────────
# Gaming
# ─────────────────────────────────────────────────────────────
../../home/programs/steam
../../home/programs/star-citizen
# ─────────────────────────────────────────────────────────────
# Groups
# ─────────────────────────────────────────────────────────────
../../home/programs/group/basic-apps.nix
../../home/programs/group/dev.nix
../../home/programs/group/misc.nix
../../home/programs/group/gaming-apps.nix
../../home/programs/group/music-apps.nix
# ─────────────────────────────────────────────────────────────
# System
# ─────────────────────────────────────────────────────────────
../../home/system/hyprland
../../home/system/waybar
../../home/system/walker
../../home/system/hyprpaper
../../home/system/mime
../../home/system/udiskie
./variables.nix # Mostly user-specific configuration
];
home = {
inherit (config.var) username;
homeDirectory = "/home/" + config.var.username;
file.".face" = {
source = ./profile_picture.jpg;
};
# Don't touch this
stateVersion = "24.05";
};
wayland.windowManager.hyprland.settings.monitor = [
"DP-3,1920x1080@144.0,1920x0,1.0"
"HDMI-A-1,1920x1080@60.0,0x0,1.0"
];
programs = {
home-manager.enable = true;
star-citizen = {
enable = true;
package = "rsi-launcher-umu";
};
nixy = {
enable = true;
configDirectory = config.var.configDirectory;
};
};
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 MiB

+38
View File
@@ -0,0 +1,38 @@
{
config,
lib,
...
}: {
imports = [
# Choose your theme here:
../../themes/nixy.nix
];
config.var = {
hostname = "home-pc";
username = "andi";
configDirectory = "/home/" + config.var.username + "/.config/nixos"; # The path of the nixos configuration directory
keyboardLayout = "de";
timeZone = "Europe/Berlin";
defaultLocale = "en_US.UTF-8";
extraLocale = "de_DE.UTF-8";
git = {
username = "kptltd00m";
email = "kptltd00m.doomlabs.de";
};
autoUpgrade = false;
autoGarbageCollector = true;
};
# DON'T TOUCH THIS
options = {
var = lib.mkOption {
type = lib.types.attrs;
default = {};
};
};
}
+28 -53
View File
@@ -1,58 +1,33 @@
{config, ...}: { { config, ... }: {
imports = [ imports = [
# Mostly system related configuration # ─────────────────────────────────────────────────────────────
../../nixos/nvidia.nix # CHANGEME: Remove this line if you don't have an Nvidia GPU # System configuration
../../nixos/audio.nix # ─────────────────────────────────────────────────────────────
../../nixos/bluetooth.nix ../../nixos/audio.nix
../../nixos/fonts.nix ../../nixos/bluetooth.nix
../../nixos/home-manager.nix ../../nixos/fonts.nix
../../nixos/nix.nix ../../nixos/home-manager.nix
../../nixos/systemd-boot.nix ../../nixos/nix.nix
../../nixos/tuigreet.nix ../../nixos/systemd-boot.nix
../../nixos/users.nix ../../nixos/tuigreet.nix
../../nixos/utils.nix ../../nixos/users.nix
../../nixos/hyprland.nix ../../nixos/utils.nix
../../nixos/usbguard.nix ../../nixos/hyprland.nix
../../home/programs/helium/system.nix # I hate browser's configuration..
../../nixos/omen.nix # CHANGEME: For my laptop only, remove this (OMEN 16) # ─────────────────────────────────────────────────────────────
# System integration for Steam
# ─────────────────────────────────────────────────────────────
../../nixos/steam.nix
# You should let those lines as is # You should let those lines as is
./hardware-configuration.nix ./hardware-configuration.nix
./variables.nix ./variables.nix
];
# USBGuard: ];
# Allow all USB devices until a proper policy is configured.
# Run `sudo usbguard generate-policy` with your devices plugged in,
# then set rules = "<output>" and switch implicitPolicyTarget to "block".
# services.usbguard.implicitPolicyTarget = lib.mkForce "allow";
services.usbguard.rules = '' programs.nix-ld.enable = true; #Dynamic Linking
allow id 1d6b:0002 serial "0000:05:00.3" name "xHCI Host Controller" hash "4a4NgfdUaJO43rkCzmWRSeHHR/uUh5+SNsXnhosm9qs=" parent-hash "ldMchY4Tt4GPUYo30eNGvai+Fs/EdnVY3vMyxJUq4Nk=" with-interface 09:00:00 with-connect-type "" home-manager.users."${config.var.username}" = import ./home.nix;
allow id 1d6b:0003 serial "0000:05:00.3" name "xHCI Host Controller" hash "d+DNGWARDtv9nEK2ZvnNOCtFernuMu5/e/oZ7kCppqQ=" parent-hash "ldMchY4Tt4GPUYo30eNGvai+Fs/EdnVY3vMyxJUq4Nk=" with-interface 09:00:00 with-connect-type "" services.flatpak.enable = true;
allow id 1d6b:0002 serial "0000:05:00.4" name "xHCI Host Controller" hash "icotY3rI59mWiKsGxc59BGZZeBjfbuH0b4NUByj3cbQ=" parent-hash "tHvBfznK5rpQn+oa0PEEjHa29EAEvGyCcZixsfwA6W0=" with-interface 09:00:00 with-connect-type "" # Don't touch this
allow id 1d6b:0003 serial "0000:05:00.4" name "xHCI Host Controller" hash "UbEoCZW8HT2ldc3qDeiK+IiQlGeaBC7F63681OwmKhI=" parent-hash "tHvBfznK5rpQn+oa0PEEjHa29EAEvGyCcZixsfwA6W0=" with-interface 09:00:00 with-connect-type "" system.stateVersion = "24.05";
allow id 1d6b:0002 serial "0000:07:00.3" name "xHCI Host Controller" hash "pz29Oo0RhQ+5+7LgOZR4v3OlcsVv3m9kCgGsGUnoUjI=" parent-hash "DRyV2/31MYHdzkIEfbPQeb/1w4/PjOW6GqWrXkftf2I=" with-interface 09:00:00 with-connect-type ""
allow id 1d6b:0003 serial "0000:07:00.3" name "xHCI Host Controller" hash "O6iOpcl9StImWT62SrbeXacqbG6N/mTIipTRc0ipCGM=" parent-hash "DRyV2/31MYHdzkIEfbPQeb/1w4/PjOW6GqWrXkftf2I=" with-interface 09:00:00 with-connect-type ""
allow id 1d6b:0002 serial "0000:07:00.4" name "xHCI Host Controller" hash "Hp8B0Enf+ACRT2tyy0EqXj7eNsFDAnTRZadzuh/Iqd4=" parent-hash "l2vhvC+VGVKlkBUUK/usFu8jHJ/5bWOnJG6WzRexpt4=" with-interface 09:00:00 with-connect-type ""
allow id 1d6b:0003 serial "0000:07:00.4" name "xHCI Host Controller" hash "rJ3LKdvkCK3SUrCU3lV8qVbmPjA+r9Fe5106x2HlgK4=" parent-hash "l2vhvC+VGVKlkBUUK/usFu8jHJ/5bWOnJG6WzRexpt4=" with-interface 09:00:00 with-connect-type ""
allow id 0bda:c85c serial "00e04c000001" name "Bluetooth Radio" hash "Q/wlToV8WQgEYHBW/UIhnSwCCusCGqAR2D5gspSCImQ=" parent-hash "4a4NgfdUaJO43rkCzmWRSeHHR/uUh5+SNsXnhosm9qs=" with-interface { e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 } with-connect-type "hardwired"
allow id 30c9:009f serial "01.00.00" name "HP True Vision FHD Camera" hash "eYW5fqReJd29tfHXkEktKC63dGfDpmlRMo5uMGUWwME=" parent-hash "icotY3rI59mWiKsGxc59BGZZeBjfbuH0b4NUByj3cbQ=" with-interface { 0e:01:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 fe:01:01 } with-connect-type "hardwired"
allow id 03f0:036b serial "" name "HP USB-C Dock G5" hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" parent-hash "Hp8B0Enf+ACRT2tyy0EqXj7eNsFDAnTRZadzuh/Iqd4=" via-port "7-1" with-interface { 09:00:01 09:00:02 } with-connect-type "hotplug"
allow id 03f0:066b serial "" name "HP USB-C Dock G5" hash "JHDjLFApQNqijjmuKdJSWH5+1oLL7S6LQ9QHTAk5fTk=" parent-hash "rJ3LKdvkCK3SUrCU3lV8qVbmPjA+r9Fe5106x2HlgK4=" via-port "8-1" with-interface 09:00:00 with-connect-type "hotplug"
allow id 03f0:056b serial "201604140001" name "USB Audio" hash "OxQ8HQenW3/4HSGEBOSYFS15rXDTOaNDnjMbICweHgw=" parent-hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" with-interface { 01:01:00 01:02:00 01:02:00 01:02:00 01:02:00 03:00:00 } with-connect-type "unknown"
allow id 03f0:086b serial "" name "USB2734" hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" parent-hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" via-port "7-1.3" with-interface { 09:00:01 09:00:02 } with-connect-type "unknown"
allow id 03f0:046b serial "11AD1D0A89EA2D08310E0B00" name "HP USB-C Dock G5" hash "DEGeuj1u4lwqrzp0UksFX7mSEY9JnGLxg7yxGbglAKE=" parent-hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" with-interface { 11:00:00 ff:03:00 03:00:00 } with-connect-type "unknown"
allow id 03f0:076b serial "" name "USB5734" hash "BshoqybYo0IKgoDORYPRtbhhlmQrYAxPQb2EAm1JsWA=" parent-hash "JHDjLFApQNqijjmuKdJSWH5+1oLL7S6LQ9QHTAk5fTk=" via-port "8-1.3" with-interface 09:00:00 with-connect-type "unknown"
allow id 0bda:8153 serial "000001000000" name "USB 10/100/1000 LAN" hash "utEnXKJ57kRUbPcGUaNWhEyoOEbLOYAFxvlsyC0PZkk=" parent-hash "JHDjLFApQNqijjmuKdJSWH5+1oLL7S6LQ9QHTAk5fTk=" with-interface { ff:ff:00 02:06:00 0a:00:00 0a:00:00 } with-connect-type "unknown"
allow id 046d:0ab7 serial "2046BAB04T68" name "Blue Microphones" hash "cC6AQ2e1Q/BeFeostpbf1mH2WpoUmt6bhau4NlA3niU=" parent-hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" with-interface { 01:01:00 01:02:00 01:02:00 01:02:00 01:02:00 01:02:00 01:02:00 03:00:00 } with-connect-type "unknown"
allow id 1532:02a1 serial "" name "Razer Ornata V3" hash "wfuIjBhhGuge8gflyA526SKqKoy8rHJZQZ+2o6usMiE=" parent-hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" via-port "7-1.3.3" with-interface { 03:01:01 03:00:01 03:00:02 } with-connect-type "unknown"
allow id 13fd:5900 serial "50026B76861EE752 " name "External" hash "l/QvVV5hzZj1z6OUwB/kWl+WnH/7awrdMBoiNVx660M=" parent-hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" with-interface { 08:06:50 08:06:62 } with-connect-type "unknown"
'';
home-manager.users."${config.var.username}" = import ./home.nix;
# Don't touch this
system.stateVersion = "24.05";
} }
+38 -5
View File
@@ -3,18 +3,51 @@
nixpkgs, nixpkgs,
... ...
}: }:
nixpkgs.lib.nixosSystem { nixpkgs.lib.nixosSystem {
modules = [ modules = [
{ {
nixpkgs.overlays = [ nixpkgs.overlays = [];
]; _module.args = {
_module.args = {inherit inputs;}; inherit inputs;
};
} }
inputs.nixos-hardware.nixosModules.omen-16-n0005ne
({ config, pkgs, lib, ... }: {
# ─────────────────────────────────────────────────────────────
# Intel Microcode
# ─────────────────────────────────────────────────────────────
hardware.cpu.intel.updateMicrocode = true;
# ─────────────────────────────────────────────────────────────
# Hardware accelaration
# ─────────────────────────────────────────────────────────────
hardware.graphics = {
enable = true;
enable32Bit = true;
};
# ─────────────────────────────────────────────────────────────
# Power management
# ─────────────────────────────────────────────────────────────
powerManagement.cpuFreqGovernor = "powersave";
services.tlp.enable = true;
services.power-profiles-daemon.enable = false;
# ─────────────────────────────────────────────────────────────
# Kernel modules commonly needed on ThinkPads
# ─────────────────────────────────────────────────────────────
boot.kernelModules = [
"i915"
"snd_hda_intel"
"iwlwifi"
];
})
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
inputs.nix-index-database.nixosModules.default inputs.nix-index-database.nixosModules.default
inputs.helium-browser.nixosModules.default
./configuration.nix ./configuration.nix
]; ];
} }
+24 -41
View File
@@ -1,52 +1,35 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
config, imports =
lib, [ (modulesPath + "/installer/scan/not-detected.nix")
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"uas"
"usbhid"
"sd_mod"
];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/6320d3c6-0231-45ec-817a-c6f0e39aab73";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/5251-9B85";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
# Root filesystem configuration - REQUIRED for NixOS installation
fileSystems."/" = {
device = "/dev/disk/by-uuid/dabf7455-d7e7-4764-8cb2-c7bb912e763f";
fsType = "btrfs";
}; };
swapDevices = []; # Boot partition configuration - REQUIRED for EFI systems
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/F6E8-6DF5";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking swapDevices =
# (the default) this is the recommended approach. When using systemd-networkd it's [ { device = "/dev/disk/by-uuid/d9df86d6-3e7b-42f5-b8f4-bae56b7adcb3"; }
# still possible to use this option, but it's recommended to use it in conjunction ];
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
# networking.interfaces.enp7s0f4u1u4.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
} }
+22 -12
View File
@@ -1,47 +1,58 @@
{config, ...}: { {config, ...}: {
imports = [ imports = [
# ─────────────────────────────────────────────────────────────
# Programs # Programs
../../home/programs/helium # ─────────────────────────────────────────────────────────────
../../home/programs/proton
../../home/programs/proton/auto-start-vpn.nix
../../home/programs/ghostty ../../home/programs/ghostty
../../home/programs/nvf ../../home/programs/nvf
../../home/programs/shell ../../home/programs/shell
../../home/programs/git ../../home/programs/git
../../home/programs/git/lazygit.nix ../../home/programs/git/lazygit.nix
../../home/programs/git/signing.nix # CHANGEME: Change the key or remove this file
../../home/programs/thunar ../../home/programs/thunar
../../home/programs/nixy ../../home/programs/nixy
../../home/programs/nightshift ../../home/programs/nightshift
../../home/programs/nix-utils ../../home/programs/nix-utils
../../home/programs/spotatui ../../home/programs/spotatui
../../home/programs/yazi ../../home/programs/yazi
../../home/programs/zen
# ─────────────────────────────────────────────────────────────
# Gaming
# ─────────────────────────────────────────────────────────────
../../home/programs/steam
# ─────────────────────────────────────────────────────────────
# Groups
# ─────────────────────────────────────────────────────────────
../../home/programs/group/basic-apps.nix ../../home/programs/group/basic-apps.nix
../../home/programs/group/cybersecurity.nix
../../home/programs/group/dev.nix ../../home/programs/group/dev.nix
../../home/programs/group/misc.nix ../../home/programs/group/misc.nix
../../home/programs/group/gaming-apps.nix
# System (Desktop environment like stuff) # ─────────────────────────────────────────────────────────────
# System
# ─────────────────────────────────────────────────────────────
../../home/system/hyprland ../../home/system/hyprland
../../home/system/caelestia-shell ../../home/system/waybar
../../home/system/walker
../../home/system/hyprpaper ../../home/system/hyprpaper
../../home/system/mime ../../home/system/mime
../../home/system/udiskie ../../home/system/udiskie
./variables.nix # Mostly user-specific configuration ./variables.nix # Mostly user-specific configuration
./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets #./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
]; ];
home = { home = {
inherit (config.var) username; inherit (config.var) username;
homeDirectory = "/home/" + config.var.username; homeDirectory = "/home/" + config.var.username;
file.".face" = { file.".face" = {
source = ./profile_picture.png; source = ./profile_picture.jpg;
}; };
sessionVariables = { sessionVariables = {
AQ_DRM_DEVICES = "/dev/dri/card2:/dev/dri/card1"; # CHANGEME: Related to the GPU # Graphics devices for Intel Iris Xe Graphics
# AQ_DRM_DEVICES = "/dev/dri/card0"; # Single GPU configuration
}; };
# Don't touch this # Don't touch this
@@ -49,8 +60,7 @@
}; };
wayland.windowManager.hyprland.settings.monitor = [ wayland.windowManager.hyprland.settings.monitor = [
"eDP-2,highres,0x0,1" # My internal laptop screen "eDP-1,1920x1080,0x0,1.5" # My internal laptop screen
"desc:AOC U34G2G1 0x00000E06,3440x1440@99.98,auto,1" # My external monitor
]; ];
programs = { programs = {
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

-61
View File
@@ -1,61 +0,0 @@
# Those are my secrets, encrypted with sops
# You shouldn't import this file, unless you edit it
{
inputs,
pkgs,
config,
...
}: let
home = config.home.homeDirectory;
in {
imports = [inputs.sops-nix.homeManagerModules.sops];
sops = {
age.keyFile = "${home}/.config/sops/age/keys.txt";
defaultSopsFile = ./secrets.yaml;
secrets = {
ssh-config = {
path = "${home}/.ssh/config";
};
github-key = {
path = "${home}/.ssh/github";
};
jack-key = {
path = "${home}/.ssh/jack";
};
signing-key = {
path = "${home}/.ssh/key";
};
signing-pub-key = {
path = "${home}/.ssh/key.pub";
};
};
};
home.file.".config/nixos/.sops.yaml".text = ''
keys:
- &primary age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
- &work age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
creation_rules:
- path_regex: hosts/laptop/secrets/secrets.yaml$
key_groups:
- age:
- *primary
- path_regex: hosts/server/secrets/secrets.yaml$
key_groups:
- age:
- *primary
- path_regex: hosts/work/secrets/secrets.yaml$
key_groups:
- age:
- *work
'';
systemd.user.services.mbsync.Unit.After = ["sops-nix.service"];
home.packages = with pkgs; [
sops
age
];
wayland.windowManager.hyprland.settings.exec-once = ["systemctl --user start sops-nix"];
}
-20
View File
@@ -1,20 +0,0 @@
ssh-config: ENC[AES256_GCM,data:/TWslzoF2wtZ9T41H1y0wLNEx+Xzff8pQGr6AfEcACExRCv4rd5hD9pNAlmlcTtISJJBPEWY45WsLfSKuD4r3715IENM2biQUvlq47THfkGviQuQ6KAXiJxBQ/7qRNqGGt7WFRlWFRGYCiyjw9h4pOhovGgw8TU6tIgIsXjo0psclHoJoE4B3cSOby7DbN8jVI9NjpBGiQMXmUB3JVz7muC9F5EAs+XZUIl7TjQMxob3PiF5LqTJITODSxboAAk901rjS5gjQKpQKfj28TpUs5yCIo9RzSBO3z5orJy+ylupocRuqtC8ujAMqNb828G+0nRx18tpiGqXxRWUBZRNbM+vQHWzb5JWQpEBsu1twsOownVVrkyPkbLpYX4YSSnRdnL8VHmlZfLk1ZFURbsdDSRf57F+Bxo5Yn8XAkFaM5HYgUo4VBabGzVVAHOBWJWi3lRrlAqYdMBbSvDl1t6eQ0xp990RGh7wZvwnaTDqtkOJnLoAknTFi4yjMzSyk5UV,iv:1UJQU4eBZE1BMVnJY2CQTDH8jXSMlrv3gGU3cKTOvdU=,tag:OzLQRkTAKG2KQXv+Vh7Msw==,type:str]
github-key: ENC[AES256_GCM,data:xUgFMlBo8e+3eXqNscxbby1dWug3SgUagDiNUe/IGVbU6cczkaJ3uOaB0OuRBQ8AYhOLkzXj0pIKjUrElHwmYrhURtS1aF4SFEGJsjhhobNA//j3E2/5/nLVjfco+lRzyHdwmsNhEUCqEhsXrrodJMb39H4b5oip3z0rjc729YveiWUKQxXVZVPurp3nq9yNnix9R4CA6XYFRW6T6MNqgPD5qhbcDlhxLb/SN+uI5h+5eZIS24VDWlKaTaCLL5KLhZmfuA37SquOQ+edi9Yg8MnfrZkMrp/3qmAjP2rSQLMOc4QdQCLQBQSf0/snpydgLwY+FoJmMSztwtkqUdIZWOfDUJbJxegEOrAR68jLTNbp+GYiDn3thtOZDiK5p/M1amjCT+A9qeFMed5WS+aZHNTRbR9UcfiP6+48MGZFt1mr7q+/CoL04/DTp0w6tUf6/SZD31NvTJDqngkhpc0ZH9Dh5+2JcnBWpq25AM36kZTn1hIQCLNTr/oGWZXSLA2tksAhQCaUcFj4IIh6Bl96,iv:GEJsAs5NriwENYTV/VShgJF6iMmrtTwNiXOvfXyEP8E=,tag:nfZgsFqaet075GjQAoVZxQ==,type:str]
jack-key: ENC[AES256_GCM,data:VfCl3wH0MMBc8QDyjLDFeSvzSEsf7uGpfJvRjFrmjW+bPRUXBpZhJV8a9VQIAz7z7zZXvzARMfCeI0ydyC57CW81GH5/H5pneJ4b+xreINjVfdLbL1nC1thelo/O64jda/L+xVKhgE+QQi8/zt4JmXGghkP+74nYcTTaMpmcbgWw354J1ybXqyCEY+88nsJ1d2s+M7M2bplx4fGb7sLUs6sqdsad3sENzhH/0HQCFXreHTtgsLbIs8ccmdRgFNKM8/wD0OoW76rOQsJoA9JY4yOTQNVoX5M8+Olj6+wVlt6QBrWrYRuEztGnHrHvzxiHXtmEkMwVNfoPpEflQyRYRa0rVp/66REOkMckGx6/LbxKFgrxnifRlsK3kWd28v2bRGVQOghUluYUtVkaJ+eh6o6ik0NQKx8/H6BznBSDE6MjDwbLv434LHBfDtAqhWN1eMbOlunFivsl5Hb/6rl9kydHlcCS6FY8cUHoKQ90gDaUuDrvUifwmdO5hU0GH5tgvGi1ReK9ndcpQsrHptG6,iv:oC1xU5Tu3The105VYRmxIw4kEwDoqe8T/EH6mmqpqwQ=,tag:Pu8c536u6W7ALrqjRsvXDw==,type:str]
signing-key: ENC[AES256_GCM,data:NvLqmt7NzrWkbQQqFfosmSMvEv8C8+MDDpxSoDo3zZ3MR6WXr9B+6CnUc6rtevM230wgE17VC9XlmcQxX+PjJsWq6gZteK5THTIcrR5zPJVNlVCEyeLKoFj/6m7qBgyyoN3OjCNjgMkhsm009jwBgNk0qJMAYebOGo8eoP/al+4ytm7dhna+iX5WZabAg0J4z4JMDQonqQl3SaDnCEdHvk9m7ZEP2vUFscPkbLj4ewgFq+bUCHOOQb2uqRJoEgcR/NetRFcQfzcU6lp7JxobaICaO3zdmomUm7oabIUTrc3Kom3Wjw8ryqfqC1/SC0SHr5XGk2ygk0WnlQ4kNshqriL2dwbWAzy1Z/cTX9+aB/KNtC0U6zWG1bpnL3dgSgvhRiocIis/eNg1HWsLWVicmdebL/lXHztxFMdTuX/gWgQBotggTmx+OFGZfP9ZGlF3635mDxM/fEOCtTyA195dMicCUsjEpBegNtXsp+oOtxyRI0jSW47MBcXFP09f5ywELTPyz4eOUHO8sQ6UfJ6X,iv:KNQUlMPaiR4x1Fw+HZe/EOmh/gfsrqlefpq23uflz/8=,tag:illu42HKunQXnijjsUIvnQ==,type:str]
signing-pub-key: ENC[AES256_GCM,data:XuokZmCsnaNQ0rvVa3k81T4vtxw//r63xp1yHDLaNAMwA2r2bh6addl9WoAmm76g1rweqZrAAIw1PXDb90ubPaBP1iEHSkGZpwUpy/tOTePRdHMW2WtVvidpHQ==,iv:auB/bA89cJK6DnQi1BK2uldXRPyJfo+r7nl5qOLefUk=,tag:/I3kB6El1yesBMGOjJ+oHA==,type:str]
sops:
age:
- recipient: age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHVWN4YjZqczB3Q21WL1lz
ckROWkhRditHblVHVEpOS0E0aGVqdW14M0ZvCkNzRXlCOWFBWmQwTGpTYVdFRlpq
bFdOR2pSTEZpUVpvUHo2NklrQm5EU1kKLS0tIFZ5ZWhYcHg1Z0hTOTZIdHR1QUxv
cmVxVC8rVDlWMUdZaGw3bmdOaWZGS1EKYahBlc8XpB5UdKZQkvxbLcKQ/xkFJjWo
FSfQWnjhe/a7BJtJEcKZkjOQU0mYqlSu+uT2RA9diCQeRUJPRF+nAw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-04-25T11:23:30Z"
mac: ENC[AES256_GCM,data:ZnLSwtyhaiMIcXxzlwhtk0dWVnOkn0avfeRezPPNBUXd0oyJY+krBsLXJdSNPHV/X/L58476okYjUzfIQzEAkrL9Fb7v/Jt0aw4SDrxbF+qbcfdvsWPUjFDJIPovuf3ee3o7iXGU2ItGTaJa2eFACoyd37KVc7jZd6gvYYAyULA=,iv:7IKqe0c5CTgJrS7OgCQWhtxaCVKo+UWEibttFUVCWGM=,tag:OfCrKPzrPBZThCR1j7IB7A==,type:str]
unencrypted_suffix: _unencrypted
version: 3.12.2
+7 -7
View File
@@ -9,19 +9,19 @@
]; ];
config.var = { config.var = {
hostname = "h-laptop"; hostname = "thinkpad";
username = "hadi"; username = "andi";
configDirectory = "/home/" + config.var.username + "/.config/nixos"; # The path of the nixos configuration directory configDirectory = "/home/" + config.var.username + "/.config/nixos"; # The path of the nixos configuration directory
keyboardLayout = "fr"; keyboardLayout = "de";
timeZone = "Europe/Paris"; timeZone = "Europe/Berlin";
defaultLocale = "en_US.UTF-8"; defaultLocale = "en_US.UTF-8";
extraLocale = "fr_FR.UTF-8"; extraLocale = "de_DE.UTF-8";
git = { git = {
username = "Hadi"; username = "kptltd00m";
email = "112569860+anotherhadi@users.noreply.github.com"; email = "kptltd00m@doomlabs.de";
}; };
autoUpgrade = false; autoUpgrade = false;
+3 -2
View File
@@ -22,13 +22,14 @@
# System (Desktop environment like stuff) # System (Desktop environment like stuff)
../../home/system/hyprland ../../home/system/hyprland
../../home/system/caelestia-shell ../../home/system/waybar
../../home/system/walker
../../home/system/hyprpaper ../../home/system/hyprpaper
../../home/system/mime ../../home/system/mime
../../home/system/udiskie ../../home/system/udiskie
./variables.nix # Mostly user-specific configuration ./variables.nix # Mostly user-specific configuration
./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets #./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
]; ];
home = { home = {
+8 -3
View File
@@ -22,9 +22,12 @@ in {
]; ];
} }
]; ];
nixpkgs.config = { nixpkgs = {
allowUnfree = true; config = {
allowBroken = false; allowUnfree = true;
allowBroken = false;
};
overlays = [inputs.nur.overlays.default];
}; };
nix = { nix = {
nixPath = ["nixpkgs=${inputs.nixpkgs}"]; nixPath = ["nixpkgs=${inputs.nixpkgs}"];
@@ -44,11 +47,13 @@ in {
"https://cache.nixos.org?priority=10" "https://cache.nixos.org?priority=10"
"https://hyprland.cachix.org" "https://hyprland.cachix.org"
"https://nix-citizen.cachix.org"
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"https://numtide.cachix.org" "https://numtide.cachix.org"
]; ];
trusted-public-keys = [ trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"nix-citizen.cachix.org-1:lPMkWc2X8XD4/7YPEEwXKKBg+SVbYTVrAaLA2wQTKCo="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"numtide.cachix.org-1:2ps1kLBUWjxIneOy1Ik6cQjb41X0iXVXeHigGmycPPE=" "numtide.cachix.org-1:2ps1kLBUWjxIneOy1Ik6cQjb41X0iXVXeHigGmycPPE="
]; ];
-64
View File
@@ -1,64 +0,0 @@
# Omen laptop configuration for NixOS
# Import this only if you have an HP Omen laptop
{
config,
pkgs,
...
}: let
hp-omen-linux-module = pkgs.callPackage (
{
kernel ? config.boot.kernelPackages.kernel,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "hp-omen-linux-module";
version = "rebase-6.14";
src = fetchFromGitHub {
owner = "ranisalt";
repo = "hp-omen-linux-module";
rev = finalAttrs.version;
sha256 = "sha256-2zCm29bdboSjRm/caMjBPGNc0tZXPUnIIYlHxxfhAok=";
};
setSourceRoot = ''
export sourceRoot=$(pwd)/${finalAttrs.src.name}/src
'';
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = [
"KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];
installPhase = ''
runHook preInstall
install hp-wmi.ko -Dm444 -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/platform/x86/hp/
runHook postInstall
'';
})
) {kernel = config.boot.kernelPackages.kernel;};
in {
boot.extraModulePackages = [hp-omen-linux-module];
boot.kernelModules = ["hp-wmi"];
boot.kernelParams = ["hp_wmi.force_slow_fan_control=1"];
users.groups.omen-rgb = {};
users.users.${config.var.username}.extraGroups = ["omen-rgb"];
systemd.tmpfiles.rules = [
"w /sys/devices/platform/hp-wmi/rgb_zones/zone00 0660 root omen-rgb -"
"w /sys/devices/platform/hp-wmi/rgb_zones/zone01 0660 root omen-rgb -"
"w /sys/devices/platform/hp-wmi/rgb_zones/zone02 0660 root omen-rgb -"
"w /sys/devices/platform/hp-wmi/rgb_zones/zone03 0660 root omen-rgb -"
];
services.udev.extraRules = ''
SUBSYSTEM=="platform", KERNEL=="hp-wmi", ACTION=="add", \
RUN+="${pkgs.coreutils-full}/bin/sleep 2", \
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone00", \
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone00", \
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone01", \
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone01", \
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone02", \
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone02", \
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone03", \
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone03"
'';
}
+13
View File
@@ -0,0 +1,13 @@
{ ... }: {
programs.steam = {
enable = true;
gamescopeSession.enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
};
hardware.graphics = {
enable = true;
enable32Bit = true;
};
}
+1 -1
View File
@@ -1,6 +1,6 @@
{config, ...}: { {config, ...}: {
services.usbguard = { services.usbguard = {
enable = true; enable = false;
implicitPolicyTarget = "block"; implicitPolicyTarget = "block";
IPCAllowedUsers = [ IPCAllowedUsers = [
"root" "root"
+2
View File
@@ -16,6 +16,8 @@ in {
extraGroups = [ extraGroups = [
"networkmanager" "networkmanager"
"wheel" "wheel"
"video"
"render"
]; ];
}; };
}; };
+1 -1
View File
@@ -83,7 +83,7 @@ in {
}; };
gvfs.enable = true; gvfs.enable = true;
upower.enable = true; upower.enable = true;
power-profiles-daemon.enable = true; power-profiles-daemon.enable = false;
udisks2.enable = true; udisks2.enable = true;
}; };
+2 -2
View File
@@ -75,8 +75,8 @@
polarity = "dark"; polarity = "dark";
image = pkgs.fetchurl { image = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/anotherhadi/awesome-wallpapers/refs/heads/main/app/static/wallpapers/black-moutains-and-a-city.png"; url = "https://upload.wikimedia.org/wikipedia/commons/1/12/Peter_Paul_Rubens_-_Fall_of_the_damned.jpg";
sha256 = "sha256-RTTA3Lf+hnPpo9hwS075kbnIouz12ul2GKO3EIgP6AU="; sha256 = "sha256-m8ii0Vo8FrUJRPrWfFvF3ojTSshGTVbIU1V8ptis4aQ=";
}; };
}; };
} }