This commit is contained in:
2025-09-13 23:16:22 +02:00
commit 5057e1effa
179 changed files with 20524 additions and 0 deletions

25
LICENSE.md Normal file
View File

@@ -0,0 +1,25 @@
# 📜 License
### ZaneyOS is licensed under the MIT License.
## MIT License
**Copyright (c) 2025 Tyler Kelley**
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the <strong> "Software" </strong>), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.**

66
cheatsheets/README.md Normal file
View File

@@ -0,0 +1,66 @@
# Cheatsheets Index (ddubsOS)
These documents cover both general usage and the specific configuration as defined in the NixOS configuration "ddubsOS".
- General use: Practical, task-focused tips and top workflows.
- ddubsOS specifics: Notes reflecting how tools are configured in this repository (modules/home/*) so behavior matches your system.
## 🔗 Quick Links
- Emacs
- [Getting Started Top 10](emacs/emacs.getting-started.top10.md)
- [File Explorer](emacs/emacs.file-explorer.cheatsheet.md)
- [Code Completion](emacs/emacs.code-completion.cheatsheet.md)
- [Magit (Git)](emacs/emacs.magit.cheatsheet.md)
- [Markdown](emacs/emacs.markdown.cheatsheet.md)
- Ghostty
- [Ghostty Cheatsheet](ghostty/ghostty.cheatsheet.md)
- Tmux
- [Tmux Cheatsheet](tmux/tmux.cheatsheet.md)
- Alacritty
- [Alacritty Cheatsheet](alacritty/alacritty.cheatsheet.md)
- Kitty
- [Kitty Cheatsheet](kitty/kitty.cheatsheet.md)
- WezTerm
- [WezTerm Cheatsheet](wezterm/wezterm.cheatsheet.md)
- Hyprland
- [Keybindings](hyprland/hyprland.binds.cheatsheet.md)
- [Window Rules](hyprland/hyprland.windowrules.cheatsheet.md)
- Yazi
- [Keymap](yazi/yazi.keymap.cheatsheet.md)
## 📚 How to use
- Browse the area you care about (e.g., Emacs, Ghostty).
- Start with the “getting started” or “top tips” docs for quick wins.
- Refer to tool-specific cheatsheets for day-to-day commands, then cross-check any ddubsOS-specific settings.
## 📂 Directory Tree
```
cheatsheets/
├── emacs/
│ ├── emacs.code-completion.cheatsheet.md
│ ├── emacs.file-explorer.cheatsheet.md
│ ├── emacs.getting-started.top10.md
│ ├── emacs.magit.cheatsheet.md
│ └── emacs.markdown.cheatsheet.md
├── ghostty/
│ └── ghostty.cheatsheet.md
├── tmux/
│ └── tmux.cheatsheet.md
├── alacritty/
│ └── alacritty.cheatsheet.md
├── kitty/
│ └── kitty.cheatsheet.md
├── wezterm/
│ └── wezterm.cheatsheet.md
├── hyprland/
│ ├── hyprland.binds.cheatsheet.md
│ └── hyprland.windowrules.cheatsheet.md
└── yazi/
└── yazi.keymap.cheatsheet.md
```
## 🛠️ Notes
- Ghostty cheatsheet reflects bindings from modules/home/terminals/ghostty.nix (ddubsOS).
- Emacs docs follow the same markdown style for consistency and quick scanning.

View File

@@ -0,0 +1,23 @@
# Alacritty on ddubsOS — Summary & Cheatsheet
## 🚀 Summary of modules/home/terminals/alacritty.nix
- Program
- Alacritty enabled.
- Font family (default): Maple NF; size: 15.
- Styles configured: Regular, Bold, Italic, Bold Italic.
---
## ⚙️ Default Options (as configured)
Font
- normal: Maple NF Regular
- bold: Maple NF Bold
- italic: Maple NF Italic
- bold_italic: Maple NF Bold Italic
- size: 15
Notes
- Uses lib.mkDefault for font family, so other modules can override.

View File

@@ -0,0 +1,128 @@
# Doom Emacs Code Completion & Lookup Cheatsheet
## 🚀 **What You Have (Like nvim-cmp + blink.cmp)**
If your Doom config includes:
- **Company Mode** - Auto-completion framework
- **LSP Mode** - Language Server Protocol support
- **Tree-sitter** - Advanced syntax parsing
- **Lookup tools** - Documentation and definition lookup
## ⌨️ **Code Completion (Company)**
### **Auto-completion Controls:**
- `TAB` or `C-SPC` - **Accept completion**
- `C-n` / `j` - **Next completion** (evil mode)
- `C-p` / `k` - **Previous completion** (evil mode)
- `C-w` - **Show documentation** for completion
- `C-s` - **Search/filter completions**
- `ESC` or `C-g` - **Cancel completion**
### **Manual Completion:**
- `M-/` - **Complete at point** (manual trigger)
- `C-M-/` - **Expand abbreviation**
## 🔍 **Code Lookup & Navigation**
### **Go to Definition/References:**
- `gd` - **Go to definition** (evil mode)
- `gD` - **Go to declaration**
- `gr` - **Go to references**
- `SPC c d` - **Find definition**
- `SPC c D` - **Find references**
- `SPC c i` - **Find implementations**
### **Documentation Lookup:**
- `K` - **Lookup documentation** (evil mode)
- `SPC c k` - **Lookup documentation**
- `SPC c K` - **Lookup in docsets**
- `C-h f` - **Describe function**
- `C-h v` - **Describe variable**
### **Symbol Navigation:**
- `SPC c j` - **Jump to symbol in buffer**
- `SPC c J` - **Jump to symbol in project**
- `SPC s i` - **Search for symbol**
## 🛠️ **LSP Features (Language Server)**
### **LSP Actions:**
- `SPC c a` - **Code actions** (refactor, fix, etc.)
- `SPC c r` - **Rename symbol**
- `SPC c f` - **Format buffer/region**
- `SPC c o` - **Organize imports**
### **Error Navigation:**
- `]e` - **Next error**
- `[e` - **Previous error**
- `SPC c x` - **List errors**
### **LSP Info:**
- `SPC c l` - **LSP menu**
- `SPC c h` - **Show hover info**
- `SPC c s` - **Show signature**
## 🎯 **Language-Specific Features**
### **C/C++ (clang-tools)**
- Full completion for functions, variables, types
- Go to definition across files
- Error checking and diagnostics
- Code formatting with clang-format
### **Nix (nil LSP)**
- Nix language completion
- Function documentation
- Syntax checking
- Go to definition for Nix expressions
### **JSON (vscode-json-languageserver)**
- Schema-based completion
- Validation and error checking
- Go to definition in JSON files
## ⚡ **Pro Tips**
### **Fuzzy Search Everything:**
- `SPC f f` - **Find files**
- `SPC /` - **Search in project**
- `SPC s s` - **Search buffer**
- `SPC p p` - **Switch projects**
### **Better Navigation:**
- `C-o` - **Go back** (after jumping to definition)
- `C-i` - **Go forward**
- `SPC j j` - **Jump to character** (like easymotion)
### **Completion Tweaks:**
- Completions appear after 0.2 seconds of typing
- Minimum 1 character to trigger
- Shows documentation in popup
- Works with both Company and LSP
## 🔧 **Troubleshooting**
### **If completion isn't working:**
1. Check if LSP server is running: `SPC c l`
2. Restart LSP: `SPC c l r`
3. Check syntax errors: `SPC c x`
### **Performance:**
- LSP servers auto-start when you open supported files
- Completion is optimized for fast response
- Use `SPC h r r` to reload Doom config after changes
## 🚀 **Quick Start Workflow**
1. **Open a code file** (`.c`, `.nix`, `.json`)
2. **Start typing** - completions appear automatically
3. **Navigate with `j/k`** and **accept with `TAB`**
4. **Use `gd`** to jump to definitions
5. **Use `K`** to see documentation
6. **Use `SPC c a`** for code actions
## 📚 **Language Servers Included**
- **C/C++**: `clang-tools` (clangd)
- **Nix**: `nil`
- **JSON**: `vscode-json-languageserver`
- More can be added per language as needed!

View File

@@ -0,0 +1,305 @@
# Doom Emacs File Explorer Cheatsheet
## 🗂️ **What is Dired?**
Dired (Directory Editor) is Emacs' built-in file manager that allows you to navigate, manage, and manipulate files and directories efficiently.
- Browse directories with keyboard navigation
- Mark, copy, move, and delete files
- Execute commands on multiple files at once
- Integrate with other Emacs tools and buffers
## 📋 **Requirements**
- Doom Emacs (Dired is built-in)
- **Treemacs**: Must be enabled in `~/.doom.d/init.el` (uncomment `treemacs` line)
- Optional tools for enhanced functionality:
- `rsync` - Fast file synchronization and copying
- `fd` or `find` - Enhanced file finding
- `rg` (ripgrep) or `ag` (the_silver_searcher) - Fast text search
- `exa` or `lsd` - Enhanced directory listings
- `trash-cli` - Safe file deletion to trash
- `zip`/`unzip`, `tar`, `gzip` - Archive handling
## ⌨️ **Opening File Explorers**
### **Dired (Built-in File Manager):**
- `SPC .` - **Open Dired** in current directory
- `SPC f d` - **Find directory** (open Dired in specific path)
- `C-x d` - **Open Dired** (classic Emacs binding)
### **Project File Navigation:**
- `SPC SPC` - **Find file** in project
- `SPC f f` - **Find file** anywhere
- `SPC f r` - **Recent files**
- `SPC p f` - **Find file** in project
### **Tree-style Explorers:**
- `SPC o p` - **Toggle project sidebar** (Treemacs)
- `SPC f t` - **Find file** in tree
## 🧭 **Navigation in Dired**
### **Basic Movement:**
- `j/k` or `n/p` - **Move up/down** between files
- `h` - **Go up** one directory (parent)
- `l` or `RET` - **Enter directory** or open file
- `^` - **Go to parent directory**
- `g` - **Refresh** directory listing
### **Jumping Around:**
- `gg` - **Go to top** of listing
- `G` - **Go to bottom** of listing
- `/` - **Search** for file/directory name
- `SPC s s` - **Search within** directory
### **File Information:**
- `(` - **Toggle details** (show/hide file info)
- `s` - **Sort** files (by name, date, size)
- `C-h m` - **Show help** for current mode
## 📁 **File Operations**
### **Opening Files:**
- `RET` - **Open file** in current window
- `o` - **Open file** in other window
- `C-o` - **Open file** in other window (keep cursor in Dired)
- `v` - **View file** (read-only)
- `f` - **Find file** (same as RET)
### **Creating Files & Directories:**
- `+` - **Create directory**
- `SPC f c` - **Create file** (when in Dired buffer)
- `C-x C-f` - **Find/create file** (from Dired)
## 🏷️ **Marking Files**
### **Basic Marking:**
- `m` - **Mark file** for operations
- `u` - **Unmark file**
- `U` - **Unmark all** files
- `t` - **Toggle marks** (mark unmarked, unmark marked)
- `* %` - **Mark by regex** pattern
### **Quick Marking:**
- `* .` - **Mark by extension** (e.g., *.txt)
- `* /` - **Mark directories**
- `* @` - **Mark symlinks**
- `* *` - **Mark executables**
### **Advanced Marking:**
- `% m` - **Mark files** matching regex
- `% d` - **Mark for deletion** files matching regex
- `* c` - **Change marks** (change one mark to another)
## ✂️ **File Management Operations**
### **Copy, Move, Delete:**
- `C` - **Copy** marked files (or file under cursor)
- `R` - **Rename/Move** marked files
- `D` - **Delete** marked files immediately
- `d` - **Mark for deletion** (use `x` to execute)
- `x` - **Execute deletions** (delete files marked with `d`)
### **Deletion Options:**
- `d` then `x` - **Safe deletion** (mark first, then execute)
- `D` - **Immediate deletion** (bypass mark step)
- **Trash integration**: If `trash-cli` is installed, files go to trash instead of permanent deletion
### **Advanced Operations:**
- `Z` - **Compress/uncompress** files (uses `gzip`, `zip`, `tar` automatically)
- `A` - **Search** in marked files (uses `grep` or `rg` if available)
- `Q` - **Query replace** in marked files
- `!` - **Run shell command** on marked files
- `&` - **Run async shell command** on marked files
## 📋 **Copying & Moving**
### **Copy Operations:**
- `C` - **Copy files** (prompts for destination)
- Works with marked files or single file under cursor
- Uses `rsync` if available for faster, resumable copying
- Supports copying to different drives/partitions
### **Move/Rename Operations:**
- `R` - **Rename/Move** files
- Can rename single files or move multiple marked files
- Supports moving across directories
### **Tips for Copy/Move:**
- Mark multiple files first, then use `C` or `R`
- Tab completion works for destination paths
- Use relative paths (`.`, `..`) for quick navigation
## 🔍 **Search & Filter**
### **Finding Files:**
- `/` - **Search** file names in current listing
- `n/N` - **Next/previous** search match
### **Enhanced Search (with external tools):**
- `A` - **Search inside files** (uses `rg` > `ag` > `grep` in priority order)
- Much faster with `ripgrep` or `the_silver_searcher`
- Supports regex patterns and file type filtering
### **Filtering Display:**
- `(` - **Toggle** detailed view
- `s` - **Sort** by different criteria
- `C-u s` - **Sort** with custom options
### **Content Search:**
- `A` - **Search inside** marked files
- `Q` - **Query replace** across marked files
## 🔧 **Advanced Features**
### **Wdired (Writable Dired):**
- `C-x C-q` - **Edit filenames** directly (like renaming)
- Edit filenames as text, then `C-c C-c` to apply changes
- `C-c C-k` to cancel edits
### **Multiple Windows:**
- `o` - **Open in other window**
- `C-o` - **Display in other window** (stay in Dired)
- `2` - **Split window** vertically for two Dired views
### **Subdirectories:**
- `i` - **Insert subdirectory** in same buffer
- `$` - **Hide/show** subdirectory contents
- `M-$` - **Hide all** subdirectories
## 📊 **File Comparison**
### **Diff Operations:**
- `=` - **Diff file** with another
- `M-=` - **Diff** marked files against each other
- Works with external diff tools
## 🗜️ **Archive Operations**
### **Compression & Archives:**
- `Z` - **Compress/decompress** automatically detects format
- Supports: `.gz`, `.zip`, `.tar`, `.tar.gz`, `.tar.xz`, `.7z`
- Uses appropriate tools: `gzip`, `zip`, `tar`, `7z`
### **Archive Viewing:**
- Open `.zip`, `.tar`, etc. files directly to browse contents
- Extract specific files from archives
## 🎛️ **Customization & Settings**
### **View Options:**
- `(` - **Toggle** between simple and detailed view
- `s` - **Cycle** through sort orders (name, date, size)
- Enhanced listings with `exa` or `lsd` if available
### **Useful Settings:**
- Dired reuses buffers by default in Doom
- Auto-refresh on file changes
- Integration with Evil mode keybindings
## ⚡ **Treemacs (Tree Explorer)**
### **Basic Treemacs:**
- `SPC o p` - **Toggle** Treemacs sidebar
- `j/k` - **Navigate** up/down in tree
- `RET` - **Open file** or expand/collapse directory
- `TAB` - **Expand/collapse** directory
### **Treemacs File Operations:**
- `cf` - **Create file**
- `cd` - **Create directory**
- `R` - **Rename**
- `d` - **Delete**
- `yy` - **Copy** path to clipboard
## 🚀 **Quick Start Workflow**
### **Basic File Management:**
1. **Press `SPC .`** - Open Dired in current directory
2. **Navigate with `j/k`** - Move between files
3. **Mark files with `m`** - Select multiple files
4. **Use `C` to copy** or `R` to move/rename
5. **Press `g`** to refresh when done
### **Efficient File Operations:**
1. **Mark multiple files** with `m`
2. **Execute batch operations** (`C` for copy, `R` for move)
3. **Use `!`** to run shell commands on marked files
4. **Toggle details with `(`** for more/less information
## 📚 **Essential Keybind Summary**
| Action | Key | Description |
|--------|-----|-------------|
| Open Dired | `SPC .` | Open file explorer |
| Navigate | `j/k` | Move up/down |
| Enter/Open | `RET` or `l` | Open file/directory |
| Parent Dir | `h` or `^` | Go up one directory |
| Mark | `m` | Mark file for operations |
| Copy | `C` | Copy marked files |
| Move/Rename | `R` | Move or rename files |
| Delete | `d` then `x` | Mark for deletion, execute |
| Create Dir | `+` | Create new directory |
| Compress | `Z` | Compress/decompress |
| Search Files | `A` | Search inside files |
| Refresh | `g` | Refresh directory listing |
| Help | `?` | Show available commands |
## 🔧 **Troubleshooting**
### **Common Issues:**
- **Dired buffer not updating?** Press `g` to refresh
- **Can't see file details?** Press `(` to toggle detailed view
- **Operations feel slow?** Use marking (`m`) for batch operations
- **Wrong sort order?** Press `s` to cycle through sort options
### **Performance Tips:**
- Install `fd` for faster file finding
- Install `rg` (ripgrep) for faster text search
- Use `rsync` for efficient file copying
- Consider `exa` or `lsd` for enhanced directory listings
### **Getting Help:**
- `?` - **Context help** in any Dired buffer
- `C-h m` - **Mode-specific help**
- `SPC h d f dired` - **Full Dired documentation**
## 📋 **Comparison: Dired vs Treemacs**
### **Use Dired when:**
- Managing multiple files at once
- Need detailed file information
- Performing batch operations
- Working with file permissions/ownership
### **Use Treemacs when:**
- Quick project overview
- Simple file navigation
- Prefer visual tree structure
- Need persistent sidebar
## 🛠️ **External Tool Integration**
### **Recommended Tools:**
- **`rsync`** - Fast, reliable file copying with resume capability
- **`ripgrep` (rg)** - Extremely fast text search, much faster than grep
- **`fd`** - Fast alternative to find with better defaults
- **`exa`** - Modern replacement for ls with colors and git integration
- **`trash-cli`** - Safe deletion to trash instead of permanent removal
- **`7z`** - Handle 7zip archives and other compression formats
### **Installation (Debian/Ubuntu):**
```bash
sudo apt install rsync ripgrep fd-find exa trash-cli p7zip-full
```
## 🎯 **Pro Tips**
- **Batch operations**: Mark files first (`m`), then execute operations
- **Quick navigation**: Use `/` to search for files by name
- **Edit filenames**: Use `C-x C-q` for Wdired mode to rename multiple files
- **Shell integration**: Use `!` to run shell commands on files
- **Multiple directories**: Use `i` to show subdirectories in same buffer
- **Safe deletion**: Install `trash-cli` to send files to trash instead of permanent deletion
- **Fast search**: Install `ripgrep` for lightning-fast text search in files
Dired provides a comprehensive file management experience that integrates well with external Linux tools, making file operations both efficient and powerful.

View File

@@ -0,0 +1,294 @@
# Top 10 Things New Doom Emacs Users Should Know
## 🚀 **Getting Started with Doom Emacs**
Welcome to Doom Emacs! Here are the 10 most essential things every new user
should master to get productive quickly.
---
## 1. 🗝️ **Master the Leader Key: `SPC`**
**The Space key is your gateway to everything in Doom Emacs.**
- `SPC` is called the "leader key" - it opens menus for almost every action
- After pressing `SPC`, you'll see helpful hints showing available commands
- Commands are organized logically: `SPC f` for files, `SPC g` for git, `SPC p`
for projects
**Essential starter commands:**
- `SPC f f` - Find/open files
- `SPC f s` - Save current file
- `SPC q q` - Quit Emacs
- `SPC h` - Help menu (very important!)
**Pro Tip:** If you forget what comes next, just press `SPC` and wait - Doom
will show you the options!
---
## 2. 📁 **Navigate Files Like a Pro**
**File navigation is fundamental to productivity.**
- `SPC .` - **Open file explorer** (Dired) in current directory
- `SPC f f` - **Find file** anywhere on your system
- `SPC f r` - **Recent files** you've worked on
- `SPC SPC` - **Find file in current project** (super useful!)
📋 _See the complete guide: `emacs.file-explorer.cheatsheet.md`_
**Quick workflow:**
1. Open your project directory in terminal
2. Start Emacs: `emacs` or `doom run`
3. Use `SPC .` to browse files or `SPC SPC` to quickly find files
---
## 3. ⌨️ **Understand Evil Mode (Vim Keybindings)**
**Doom Emacs uses Vim-style keybindings by default.**
**Basic movement (in Normal mode):**
- `h j k l` - Left, down, up, right
- `w` - Jump to next word
- `b` - Jump back one word
- `gg` - Go to top of file
- `G` - Go to bottom of file
**Mode switching:**
- `i` - Enter Insert mode (to type text)
- `ESC` - Return to Normal mode
- `v` - Visual mode (to select text)
**If you're not familiar with Vim:** Don't panic! You can learn gradually. The
basics above will get you started.
---
## 4. 🔍 **Search and Replace Efficiently**
**Finding and changing text is a daily task.**
- `/` - Search forward in current buffer
- `?` - Search backward in current buffer
- `n/N` - Next/previous search result
- `SPC s s` - Search in current buffer (interactive)
- `SPC s p` - Search in entire project
- `SPC s r` - Search and replace in current buffer
**For project-wide search:** `SPC s p` is incredibly powerful for finding code
across your entire project.
---
## 5. 🗂️ **Work with Buffers and Windows**
**Buffers are open files, windows are how you view them.**
**Buffer management:**
- `SPC b b` - Switch between open buffers
- `SPC b k` - Kill (close) current buffer
- `SPC b s` - Save current buffer
**Window management:**
- `SPC w v` - Split window vertically
- `SPC w s` - Split window horizontally
- `SPC w c` - Close current window
- `SPC w w` - Switch between windows
- `C-h j/k/h/l` - Navigate between windows (Vim-style)
**Think of it this way:** You can have many files open (buffers) but only see
some of them at once (windows).
---
## 6. 🛠️ **Configure and Customize Doom**
**Doom is highly configurable, but start simple.**
**Key files to know about:**
- `~/.doom.d/config.el` - Your personal configuration
- `~/.doom.d/init.el` - Enable/disable Doom modules
- `~/.doom.d/packages.el` - Add extra packages
**Essential commands:**
- `SPC h r r` - Reload Doom configuration
- `SPC h d h` - Doom help and documentation
- `doom doctor` - Check for configuration issues (run in terminal)
- `doom upgrade` - Update Doom (run in terminal)
**Start small:** Don't try to customize everything at once. Use Doom's defaults
first, then gradually tweak things.
---
## 7. 📝 **Master Text Editing Basics**
**Essential editing commands that work in any mode.**
**In Normal mode (Evil):**
- `x` - Delete character under cursor
- `dd` - Delete entire line
- `yy` - Copy (yank) entire line
- `p` - Paste after cursor
- `u` - Undo
- `C-r` - Redo
**In Insert mode:**
- `C-w` - Delete word backward
- `C-u` - Delete to beginning of line
**Selection and manipulation:**
- `v` - Start visual selection
- `V` - Select entire line
- `d` - Delete selected text
- `y` - Copy selected text
---
## 8. 💻 **Use Code Completion and Language Features**
**Doom comes with excellent code support out of the box.**
**Auto-completion:**
- Just start typing - completions appear automatically
- `TAB` - Accept completion
- `C-n/C-p` or `j/k` - Navigate completion options
**Code navigation:**
- `gd` - Go to definition
- `gr` - Find references
- `K` - Show documentation
- `SPC c a` - Code actions (refactor, fix, etc.)
📋 _See the complete guide: `emacs.code-completion.cheatsheet.md`_
**Languages supported:** Most popular languages work out of the box (Python,
JavaScript, C/C++, Rust, Go, etc.)
---
## 9. 📚 **Use Built-in Help System**
**Doom has excellent built-in documentation.**
- `SPC h` - **Main help menu**
- `SPC h d h` - **Doom-specific help**
- `SPC h k` - **Describe key** (what does this key do?)
- `SPC h f` - **Describe function**
- `SPC h v` - **Describe variable**
- `C-h m` - **Show help for current mode**
**When you're lost:** Press `SPC h` and explore. The help system is
comprehensive and always available.
**Pro Tip:** If you press a key combination and don't know what happened, use
`SPC h l` to see recent commands.
---
## 10. 🔧 **Learn Git Integration (Magit)**
**Magit is one of the best Git interfaces available anywhere.**
- `SPC g g` - Open Magit status (your main Git command!)
- `s` - Stage files or hunks
- `c c` - Commit changes
- `P P` - Push to remote
- `F F` - Pull from remote
📋 _See the complete guide: `emacs.magit.cheatsheet.md`_
**Basic workflow:**
1. `SPC g g` - See what's changed
2. `s` on files to stage them
3. `c c` to commit (write message, then `C-c C-c`)
4. `P P` to push
**Why it's essential:** If you work with Git, Magit will transform your
workflow. It's visual, fast, and incredibly powerful.
---
## 🎯 **Quick Start Checklist**
Once you've read through the above, try this 5-minute workflow:
1.**Open Doom:** `emacs` in terminal
2.**Find a file:** `SPC f f` and open any text file
3.**Edit something:** Press `i`, type text, press `ESC`
4.**Save:** `SPC f s`
5.**Open file explorer:** `SPC .`
6.**Get help:** `SPC h`
7.**Split window:** `SPC w v`
8.**Switch buffers:** `SPC b b`
9.**Search project:** `SPC s p` (if in a project)
10.**Quit:** `SPC q q`
---
## 📖 **Next Steps: Dive Deeper**
Once you're comfortable with the basics above:
1. **Read the specific cheatsheets:**
- `emacs.file-explorer.cheatsheet.md` - File management
- `emacs.code-completion.cheatsheet.md` - Coding features
- `emacs.magit.cheatsheet.md` - Git integration
- `emacs.markdown.cheatsheet.md` - Markdown editing
2. **Customize gradually:** Start tweaking your `config.el`
3. **Learn your language:** Explore language-specific features
4. **Join the community:** Doom Discord, Reddit, GitHub discussions
---
## 🆘 **When You're Stuck**
**Emergency commands:**
- `C-g` - Cancel current command (like pressing ESC)
- `SPC q q` - Quit Emacs
- `SPC h d h` - Doom help
- `:q` - Quit current buffer (Vim command)
**Remember:** Every expert was once a beginner. Don't try to learn everything at
once. Master these 10 things first, then gradually explore more advanced
features.
**Most important tip:** Use `SPC` and explore the menus. Doom is designed to be
discoverable - let it guide you!
---
## 🎓 **Learning Philosophy**
**Start with workflows, not features:** Instead of memorizing every keybinding,
learn complete workflows for tasks you do daily (editing files, committing code,
searching projects).
**Use the defaults first:** Doom's defaults are excellent. Resist the urge to
customize everything immediately.
**One thing at a time:** Master file navigation before diving into advanced code
features. Build your skills incrementally.
**Practice daily:** Use Doom for real work, even if you're slower at first.
Muscle memory develops with practice.
Welcome to Doom Emacs! 🚀

View File

@@ -0,0 +1,276 @@
# Doom Emacs Magit Cheatsheet
## 🚀 **What is Magit?**
Magit is an extremely powerful tool for managing your Git project
- Visual, interactive Git workflows
- Stage hunks, lines, or entire files with ease
- Commit, push, pull, merge, rebase - all from intuitive menus
- See your repo status at a glance
## 📋 **Requirements**
- Git installed on your system
- Doom Emacs with Magit enabled (included by default)
- Working inside a Git repository
## ⌨️ **Opening Magit**
### **Main Magit Interface:**
- `SPC g g` - **Magit status** (your main command!)
- `SPC g d` - **Magit file dispatch**
- `SPC g f` - **Magit file commands**
- `SPC g l` - **Magit log**
- `SPC g b` - **Magit blame**
## 🎯 **The Magit Status Buffer** (Your Command Center)
### **Navigation:**
- `j/k` or `n/p` - **Move up/down** between sections
- `TAB` - **Expand/collapse** section under cursor
- `M-TAB` - **Expand/collapse** all sections
- `g` - **Refresh** status buffer
### **Section Overview:**
```
Untracked files - Files not in Git
Unstaged changes - Modified files not staged
Staged changes - Files ready to commit
Recent commits - Your commit history
Stashes - Your saved work-in-progress
```
## 📝 **Staging & Unstaging**
### **Stage Files:**
- `s` - **Stage** file/hunk under cursor
- `S` - **Stage all** unstaged changes
- `i` - **Ignore** file (add to .gitignore)
### **Unstage Files:**
- `u` - **Unstage** file/hunk under cursor
- `U` - **Unstage all** staged changes
### **Discard Changes:**
- `k` - **Discard** changes in file/hunk under cursor
- `K` - **Discard all** changes in working directory
### **Staging Hunks & Lines:**
- `RET` or `SPC` - **Show diff** of file under cursor
- In diff view:
- `s` - **Stage hunk** under cursor
- `u` - **Unstage hunk** under cursor
- `k` - **Discard hunk** under cursor
- `+/-` - **Show more/less context** lines
## 💾 **Committing**
### **Create Commits:**
- `c c` - **Commit** (opens commit message buffer)
- `c a` - **Amend** last commit
- `c e` - **Extend** last commit (no message change)
- `c w` - **Reword** last commit message
- `c f` - **Fixup** commit
- `c s` - **Squash** commit
### **In Commit Message Buffer:**
- `C-c C-c` - **Finish commit**
- `C-c C-k` - **Cancel commit**
- `M-p/M-n` - **Previous/next** commit message from history
## 🌿 **Branching & Switching**
### **Branch Operations:**
- `b b` - **Switch branch** (checkout)
- `b c` - **Create new branch**
- `b n` - **Create branch** from current HEAD
- `b s` - **Create branch** and switch to it
- `b r` - **Rename branch**
- `b k` - **Delete branch**
### **Remote Branches:**
- `b a` - **Set upstream** for current branch
- `b u` - **Set upstream** and push
## 🔄 **Remote Operations**
### **Fetch & Pull:**
- `f f` - **Fetch** from default remote
- `f a` - **Fetch from all** remotes
- `F F` - **Pull** from upstream
- `F u` - **Pull from upstream** (rebase)
### **Push:**
- `P P` - **Push** to upstream
- `P u` - **Push and set upstream**
- `P f` - **Force push** (use carefully!)
- `P t` - **Push tags**
## 📚 **Viewing History & Logs**
### **Log Views:**
- `l l` - **Show log** for current branch
- `l o` - **Show log** for other branches
- `l h` - **Show log** for HEAD
- `l a` - **Show log** for all branches
- `l f` - **Show log** for file under cursor
### **In Log View:**
- `RET` - **Show commit** details
- `d d` - **Show diff** for commit
- `c c` - **Create new commit**
- `r r` - **Revert commit**
## 🔍 **Diffs & Comparisons**
### **Diff Commands:**
- `d d` - **Diff working directory** vs staged
- `d s` - **Diff staged** vs HEAD
- `d u` - **Diff unstaged** changes
- `d r` - **Diff range** between commits
### **In Diff Views:**
- `j/k` - **Navigate** between hunks
- `n/p` - **Next/previous** file
- `TAB` - **Toggle** visibility of diff section
- `+/-` - **Increase/decrease** context lines
## 🔧 **Rebasing & Merging**
### **Merge:**
- `m m` - **Merge** branch
- `m a` - **Abort merge**
- `m c` - **Continue merge**
### **Rebase:**
- `r i` - **Interactive rebase**
- `r r` - **Rebase** branch
- `r a` - **Abort rebase**
- `r c` - **Continue rebase**
### **During Interactive Rebase:**
- `j/k` - **Move** between commits
- `p` - **Pick** commit (default)
- `r` - **Reword** commit message
- `e` - **Edit** commit
- `s` - **Squash** commit
- `f` - **Fixup** commit
- `d` - **Drop** commit
## 📦 **Stashing**
### **Stash Operations:**
- `z z` - **Stash** current changes
- `z i` - **Stash** with message
- `z a` - **Apply stash**
- `z p` - **Pop stash** (apply and delete)
- `z k` - **Drop stash**
- `z l` - **List stashes**
## 🏷️ **Tags**
### **Tag Operations:**
- `t t` - **Create tag**
- `t a` - **Create annotated tag**
- `t k` - **Delete tag**
- `t p` - **Push tag**
## ⚡ **Pro Tips & Workflows**
### **Daily Git Workflow:**
1. `SPC g g` - **Open Magit status**
2. Review changes, stage with `s`
3. `c c` - **Commit changes**
4. `P P` - **Push to remote**
### **Power User Tricks:**
- Use `M-x magit-find-file` to quickly open files from Git history
- `SPC g f s` - **Stage current file** without opening Magit
- `SPC g f u` - **Unstage current file**
- `SPC g f d` - **Show file diff**
### **Staging Granularity:**
- Stage entire files with `s` in status buffer
- Stage individual hunks by entering diff view (`RET`) then `s`
- Stage individual lines by selecting region in diff then `s`
### **Commit Best Practices:**
- Use `c c` for normal commits
- Use `c a` to fix up your last commit
- Use `c f` to create fixup commits for interactive rebase later
## 🔧 **Troubleshooting**
### **Common Issues:**
- **Magit won't open?** Make sure you're in a Git repository
- **Performance slow?** Try `M-x magit-refresh` or restart Emacs
- **Merge conflicts?** Magit highlights conflicts - resolve them and use `m c`
### **Getting Help:**
- `?` - **Show help** in any Magit buffer
- `C-h m` - **Show mode help**
- `SPC h d m magit` - **Full Magit documentation**
## 🚀 **Quick Start Workflow**
1. **Navigate to your Git repo** in Doom Emacs
2. **Press `SPC g g`** - Opens Magit status
3. **Stage files** with `s`, review diffs with `RET`
4. **Commit** with `c c`, write message, finish with `C-c C-c`
5. **Push** with `P P`
## 📚 **Essential Keybind Summary**
| Action | Key | Description |
| ------- | --------- | ------------------ |
| Status | `SPC g g` | Open Magit status |
| Stage | `s` | Stage file/hunk |
| Unstage | `u` | Unstage file/hunk |
| Commit | `c c` | Create commit |
| Push | `P P` | Push to upstream |
| Pull | `F F` | Pull from upstream |
| Branch | `b b` | Switch branch |
| Log | `l l` | Show log |
| Diff | `d d` | Show diff |
| Stash | `z z` | Stash changes |
| Help | `?` | Show context help |
## 🎉 **Why Magit is Amazing**
- **Visual**: See your entire repo state at a glance
- **Interactive**: Stage hunks, lines, or files with simple keystrokes
- **Fast**: Navigate Git operations faster than any CLI
- **Powerful**: Access every Git feature through intuitive menus
- **Integrated**: Works seamlessly with Doom Emacs and Evil mode
**Pro Tip**: Once you learn Magit, you'll never want to use Git from the command
line again! 🚀

View File

@@ -0,0 +1,85 @@
# Doom Emacs Markdown Cheatsheet
## 📝 **Getting Started**
- Open any `.md` file - Doom automatically enables `markdown-mode`
- You'll get syntax highlighting, proper indentation, and markdown-specific features
## ⌨️ **Key Markdown Commands** (with Evil/Vim bindings)
### **Formatting Text:**
- `SPC m b` - **Bold** text
- `SPC m i` - *Italic* text
- `SPC m c` - `Inline code`
- `SPC m C` - Code block
- `SPC m s` - ~~Strikethrough~~
### **Headers:**
- `SPC m h` - Insert header (prompts for level 1-6)
- `SPC m H` - Insert header with underline style
### **Lists:**
- `SPC m l` - Insert unordered list item
- `SPC m L` - Insert ordered list item
### **Links & Images:**
- `SPC m l l` - Insert link
- `SPC m l i` - Insert image
- `SPC m l u` - Insert URL
### **Navigation:**
- `]]` - Next header
- `[[` - Previous header
- `SPC m o` - Open outline/table of contents
## 👁️ **Live Preview**
- `SPC m p` - Preview in browser
- `SPC m P` - Export to HTML
## 📊 **Tables**
- `SPC m t` - Table commands
- `SPC m t t` - Insert table
- `TAB` - Navigate between cells
- `S-TAB` - Navigate backward between cells
## 🎯 **Useful Evil Bindings in Markdown**
- `TAB` - Cycle folding of headers
- `S-TAB` - Cycle folding globally
- `RET` - Follow links
- `M-RET` - Insert new list item
## 🧪 **Test Examples**
### Sample Formatting
This is **bold text** and this is *italic text*.
Here's some `inline code` and a code block:
```bash
# Code block example
echo "Hello from markdown!"
```
### Sample List
- [ ] Checkbox item 1
- [x] Completed checkbox
- Regular bullet point
### Sample Table
| Feature | Shortcut | Description |
|---------|----------|-------------|
| Bold | SPC m b | Make text bold |
| Italic | SPC m i | Make text italic |
| Preview | SPC m p | Preview in browser |
## 🚀 **Pro Tips**
1. Use `SPC m o` to get an outline view for navigation
2. `TAB` on headers to fold/unfold sections
3. `RET` on links to follow them
4. Use `SPC m p` to preview your markdown in a browser
5. Create checklists with `- [ ]` syntax
## 📚 **Quick Reference**
- All markdown commands start with `SPC m`
- Use `SPC m ?` or `C-h m` to see all available commands
- Navigation between headers: `]]` (next) and `[[` (previous)
- Toggle folding: `TAB` (local) and `S-TAB` (global)

View File

@@ -0,0 +1,122 @@
# Ghostty on ddubsOS — Summary & Cheatsheet
## 🚀 Summary of modules/home/terminals/ghostty.nix
- Program
- Ghostty enabled with Nix package: pkgs.ghostty
- Shell integrations: Fish, Zsh, Bash
- clearDefaultKeybinds = true (all bindings are explicitly defined below)
- Appearance
- Title: ddubsOS-GhosTTY
- TERM: xterm-256color
- Theme: dark: catppuccin-mocha; light: catppuccin-mocha
- Window theme: dark
- Font: Maple Mono NF, size 12
- Cell height adjustment: +10%
- Background opacity: 1.00 (opaque)
- Background blur radius: 60
- Cursor style: bar
- Selection colors: bg #2d3f76, fg #c8d3f5
- Unfocused split opacity: 0.5
- Quick terminal position: center
- Window and Behavior
- Default window size: 110x32 (cols x rows)
- Confirm close surface: false
- Wait after command: false
- Shell integration: detect; features: cursor, sudo
- Window save state: always
- GTK single instance: true
- Mouse: hide while typing: true
- Keybindings (Super/Alt prefix scheme)
- Custom leader-like chord uses Alt+s then key, e.g. alt+s>c
- Standard clipboard and font size with Ctrl+Shift chords
- Tabs, splits, navigation, zoom, equalize defined below
---
## 🗝️ Keybindings Cheatsheet
Clipboard
- Ctrl+Shift+C — copy_to_clipboard
- Ctrl+Shift+V — paste_from_clipboard
Font size
- Ctrl+Shift+= (plus) — increase_font_size:1
- Ctrl+Shift+- (minus) — decrease_font_size:1
- Ctrl+Shift+0 — reset_font_size
Session
- Alt+s r — reload_config
- Alt+s x — close_surface
- Alt+s n — new_window
Tabs
- Alt+s c — new_tab
- Alt+s Shift+L — next_tab
- Alt+s Shift+H — previous_tab
- Alt+s , — move_tab:-1
- Alt+s . — move_tab:+1
- Alt+s 1..9 — goto_tab:N
Splits
- Alt+s \ — new_split:right
- Alt+s - — new_split:down
- Alt+s j — goto_split:bottom
- Alt+s k — goto_split:top
- Alt+s h — goto_split:left
- Alt+s l — goto_split:right
- Alt+s z — toggle_split_zoom
- Alt+s e — equalize_splits
Notes
- clearDefaultKeybinds = true means only the above are active.
- The Alt+s> notation denotes a two-key chord: hold Alt, press s, then the next key.
---
## ⚙️ Default Options Reference (as configured)
Terminal and window
- term: xterm-256color
- window-width: 110
- window-height: 32
- window-theme: dark
- window-save-state: always
- gtk-single-instance: true
- quick-terminal-position: center
Appearance
- theme: catppuccin-mocha (dark and light mapped to mocha)
- font-family: Maple Mono NF
- font-size: 12
- adjust-cell-height: 10%
- background-opacity: 1.00
- background-blur-radius: 60
- selection-background: #2d3f76
- selection-foreground: #c8d3f5
- cursor-style: bar
- unfocused-split-opacity: 0.5
Behavior
- confirm-close-surface: false
- mouse-hide-while-typing: true
- wait-after-command: false
- shell-integration: detect
- shell-integration-features: cursor,sudo
Integrations
- Fish, Zsh, Bash integrations enabled
---
## 📝 Style/Formatting Notes
This cheatsheet mirrors your Emacs cheatsheets style:
- Clear section headers with emoji
- Bulleted lists with concise descriptions
- Short “Notes” blocks for special behaviors
If youd like, I can link this from a central index or add more Ghostty tips (themes, performance flags, troubleshooting).

View File

@@ -0,0 +1,164 @@
# Guía de Personalización de Hyprland en ZaneyOS
Esta guía ofrece una visión práctica para personalizar tu experiencia con Hyprland en ZaneyOS. Veremos los archivos más relevantes, qué hacen y pequeños cambios seguros que puedes aplicar.
Nota: Estos archivos están escritos en Nix. Un pequeño error de sintaxis puede romper las compilaciones. Realiza un cambio a la vez y mantén tus ediciones bajo control de versiones.
## Aplicar tus cambios
Preferido (específico de ZaneyOS):
- `zcli rebuild`
- Nota: el alias `fr` está obsoleto.
Método manual de respaldo (funciona en cualquier instalación):
- Desde la raíz del repo, reemplaza PROFILE por tu perfil (intel, nvidia, nvidia-laptop, vm):
- `sudo nixos-rebuild switch --flake .#PROFILE`
---
### `binds.nix` — Atajos de teclado
Controla atajos de teclado y ratón.
Ubicación: `modules/home/hyprland/binds.nix`
Formato: `MODIFICADOR, TECLA, DISPATCHER, VALOR`
Ejemplo: Cambiar la terminal de Super+Return a Super+T
```nix
# ...
bind = [
# ...
"$modifier,T,exec, ${terminal}"
# ...
];
# ...
```
---
### `exec-once.nix` — Aplicaciones al iniciar
Comandos que se ejecutan automáticamente con Hyprland.
Ubicación: `modules/home/hyprland/exec-once.nix`
Ejemplo: Añadir copyq al inicio
```nix
# ...
exec-once = [
# ...
"pypr &"
"copyq"
];
# ...
```
---
### `decoration.nix` — Bordes, sombras, desenfoque
Ubicación: `modules/home/hyprland/decoration.nix`
Ejemplo: Esquinas redondeadas
```nix
# ...
decoration = {
rounding = 10;
};
# ...
```
---
### `env.nix` — Variables de entorno
Ubicación: `modules/home/hyprland/env.nix`
Ejemplo: Habilitar Wayland para Firefox
```nix
# ...
env = [
"SDL_VIDEODRIVER, wayland"
"MOZ_ENABLE_WAYLAND, 1"
];
# ...
```
---
### `gestures.nix` — Gestos del touchpad
Ubicación: `modules/home/hyprland/gestures.nix`
Ejemplo: Desactivar deslizamiento entre espacios
```nix
# ...
gestures = {
workspace_swipe = 0;
};
# ...
```
---
### `misc.nix` — Ajustes varios
Ubicación: `modules/home/hyprland/misc.nix`
Ejemplo: Activar Frecuencia de Actualización Variable (VRR)
```nix
# ...
misc = {
vrr = 1;
};
# ...
```
---
### `hyprland.nix` — Configuración principal
Ubicación: `modules/home/hyprland/hyprland.nix`
Ejemplo: Distribución del teclado
```nix
# ...
input = {
kb_layout = "us";
};
# ...
```
---
### `windowrules.nix` — Reglas de ventanas
Ubicación: `modules/home/hyprland/windowrules.nix`
Ejemplo: Hacer que Thunar flote siempre
```nix
# ...
windowrule = [
"float, class:^(foot-floating)$"
"float, class:^(Thunar)$"
];
# ...
```
---
## Consejos útiles
- Realiza un cambio a la vez y recompila para validar.
- Mantén una terminal abierta mientras experimentas por si cambias el atajo del lanzador.
- Si algo se rompe, reinicia y elige una generación anterior en el menú de arranque.

View File

@@ -0,0 +1,163 @@
# A Guide to Customizing Hyprland in ZaneyOS
This guide provides a practical overview for customizing your Hyprland experience in ZaneyOS. Well cover the most relevant files, what they do, and small, safe edits you can make.
Note: These files are written in Nix. A small syntax error can break builds. Make one change at a time and keep your edits under version control.
## Applying your changes
Preferred (ZaneyOS-specific):
- `zcli rebuild`
- Note: The `fr` alias is deprecated.
Manual backup method (works anywhere):
- From the repo root, replace PROFILE with your profile (intel, nvidia, nvidia-laptop, vm):
- `sudo nixos-rebuild switch --flake .#PROFILE`
---
### `binds.nix` — Keybindings
Controls keyboard and mouse shortcuts.
Location: `modules/home/hyprland/binds.nix`
Format: `MODIFIER, KEY, DISPATCHER, VALUE`
Example: Change terminal from Super+Return to Super+T
```nix
# ...
bind = [
# ...
"$modifier,T,exec, ${terminal}"
# ...
];
# ...
```
---
### `exec-once.nix` — Startup applications
Commands that start automatically with Hyprland.
Location: `modules/home/hyprland/exec-once.nix`
Example: Add copyq to autostart
```nix
# ...
exec-once = [
# ...
"pypr &"
"copyq"
];
# ...
```
---
### `decoration.nix` — Borders, shadows, blur
Location: `modules/home/hyprland/decoration.nix`
Example: Rounded corners
```nix
# ...
decoration = {
rounding = 10;
};
# ...
```
---
### `env.nix` — Environment variables
Location: `modules/home/hyprland/env.nix`
Example: Enable Wayland for Firefox
```nix
# ...
env = [
"SDL_VIDEODRIVER, wayland"
"MOZ_ENABLE_WAYLAND, 1"
];
# ...
```
---
### `gestures.nix` — Touchpad gestures
Location: `modules/home/hyprland/gestures.nix`
Example: Disable workspace swipe
```nix
# ...
gestures = {
workspace_swipe = 0;
};
# ...
```
---
### `misc.nix` — Misc settings
Location: `modules/home/hyprland/misc.nix`
Example: Enable Variable Refresh Rate
```nix
# ...
misc = {
vrr = 1;
};
# ...
```
---
### `hyprland.nix` — Main configuration
Location: `modules/home/hyprland/hyprland.nix`
Example: Keyboard layout
```nix
# ...
input = {
kb_layout = "us";
};
# ...
```
---
### `windowrules.nix` — Window rules
Location: `modules/home/hyprland/windowrules.nix`
Example: Float Thunar always
```nix
# ...
windowrule = [
"float, class:^(foot-floating)$"
"float, class:^(Thunar)$"
];
# ...
```
---
## Helpful tips
- Make one change at a time and rebuild to validate.
- Keep a terminal open during experiments in case your launcher keybind changes.
- If something breaks, reboot and choose a previous generation in the boot menu.

View File

@@ -0,0 +1,91 @@
# Hyprland Keybindings — ddubsOS
## 🗝️ Conventions
- SUPERKEY = Mod key (Hyprland `$modifier`)
- SHIFT, CTRL, ALT used as shown
- Arrows and hjkl are both supported for movement
---
## 🚀 Applications
- SUPERKEY+Return — Launch default terminal (${terminal})
- SUPERKEY+SHIFT+Return — Launch foot (floating)
- SUPERKEY+ALT+Return — Launch WezTerm
- SUPERKEY+CTRL+Return — Launch Ghostty
- SUPERKEY+W — Launch browser (${browser})
- SUPERKEY+Y — Kitty running Yazi (file manager)
- SUPERKEY+T — Thunar (also another mapping present: "exec, exec, thunar")
- SUPERKEY+M — Pavucontrol (audio)
- SUPERKEY+G — VS Code
- SUPERKEY+O — OBS Studio
- SUPERKEY+E — Emoji picker (emopicker9000)
- SUPERKEY+V — Clipboard menu (cliphist via rofi)
- SUPERKEY+D — Rofi menu
- SUPERKEY+SHIFT+D — Dock
- SUPERKEY+CTRL+D — Sherlock (alt menu)
- SUPERKEY+SHIFT+W — Web search
- SUPERKEY+ALT+W — Warp terminal (commented alternative: wallsetter)
- SUPERKEY+CTRL+W — Waypaper
- SUPERKEY+N — Note from clipboard
- SUPERKEY+SHIFT+N — SwayNC reset
- SUPERKEY+ALT+D — Discord Canary
- SUPERKEY+C — Hyprpicker (color picker)
- SHIFT+ALT+S — Hyprshot region (non-SUPER shortcut)
## 🧭 Hyprland UI/Plugins
- SUPERKEY+TAB — Hyprspace Overview toggle (all)
- SUPERKEY+SHIFT+TAB — Hyprspace Overview close (all)
- ALT+Space — Hyprexpo toggle
- SUPERKEY+A — AGS Overview toggle
## 📸 Screenshots
- SUPERKEY+S — screenshootin
- SUPERKEY+SHIFT+S — screenshootin-satty
- SUPERKEY+ALT+S — hyprpanel toggleWindow settings-dialog
## 🪟 Window Management
- SUPERKEY+Q — Kill active window
- SUPERKEY+P — Pseudo tile
- SUPERKEY+SHIFT+I — Toggle split
- SUPERKEY+F — Fullscreen
- SUPERKEY+SHIFT+F — Toggle floating
- SUPERKEY+ALT+F — Workspace option: allfloat
- SUPERKEY+SHIFT+C — Exit Hyprland
- SUPERKEY+SPACE — Toggle floating
- SUPERKEY+SHIFT+SPACE — Workspace option: allfloat
- SUPERKEY+SHIFT+M — swap_layout
### Move Window
- SUPERKEY+SHIFT+Left/Right/Up/Down — Move window L/R/U/D
- SUPERKEY+SHIFT+H/J/K/L — Move window L/D/U/R
### Swap Window
- SUPERKEY+ALT+Left/Right/Up/Down — Swap window L/R/U/D
- SUPERKEY+ALT+[, . , - , ,] — Swap window L/R/U/D (keycodes 43,46,45,44)
### Focus Movement
- SUPERKEY+Left/Right/Up/Down — Focus L/R/U/D
- SUPERKEY+H/J/K/L — Focus L/D/U/R
### Workspace Navigation
- SUPERKEY+1..9,0 — Go to workspace 1..10
- SUPERKEY+SHIFT+1..9,0 — Move window to workspace 1..10
- SUPERKEY+CTRL+Right/Left — Next/Previous workspace (relative)
- SUPERKEY+Mouse Wheel Down/Up — Workspace e+1 / e-1
### Alt-Tab
- ALT+Tab — Cycle next
- ALT+Tab — Bring active to top (runs twice to ensure raise)
## 🔊 Media & Brightness
- XF86AudioRaiseVolume — wpctl set-volume +5%
- XF86AudioLowerVolume — wpctl set-volume -5%
- XF86AudioMute — toggle sink mute
- XF86AudioPlay/Pause — playerctl play-pause
- XF86AudioNext/Prev — playerctl next/previous
- XF86MonBrightnessDown/Up — brightnessctl -5% / +5%
## 🖱️ Mouse Bindings
- SUPERKEY + Left Mouse — Move window
- SUPERKEY + Right Mouse — Resize window

View File

@@ -0,0 +1,59 @@
# Hyprland Window Rules — ddubsOS
## 🧩 Tags and Classification
- file-manager — Thunar, Nautilus, PCManFM-Qt
- terminal — Ghostty, WezTerm, Alacritty, Kitty, kitty-dropterm
- browser — Brave, Firefox, Chrome, Thorium/Cachy
- video — VLC, mpv, Clapper
- projects — VSCodium/VSCode
- im — Discord, WebCord, Vesktop, Ferdium, WhatsApp, Telegram, Teams
- obs — OBS Studio
- games — gamescope, steam_app_*
- gamestore — Steam, Lutris, Heroic
- settings — various settings apps (nm-applet, pavucontrol, file-roller, rofi, etc.)
## 🪟 Floating, Size, and Position
- foot-floating — float, size 60% x 60%, center
- Picture-in-Picture — float, 95%/75% opacity, pinned, keep aspect ratio, position at ~72%/7%
- Authentication Required dialogs — float, center
- Settings-tagged windows — float, size 70% x 70%
- Ferdium — float, center, size 60% x 70%
- Clapper — float
- VSCodium setup dialogs — float (title negative rules)
- Steam/Heroic non-main dialogs — float (title negative rules)
- File chooser dialogs — float; size 70% x 60% (Open Files); float on save prompts
## 🎨 Visual Effects
- noblur — games
- content none — mpv (prevent black screen on maximize)
- Opacity by tag:
- browser: 1.0 / 1.0
- video: 1.0 / 1.0
- projects: 0.9 / 0.8
- im: 0.94 / 0.86
- file-manager: 0.9 / 0.8
- terminal: 1.0 / 0.8
- settings: 0.8 / 0.7
- Extra opacity tweaks:
- gedit/GNOME Text Editor/mousepad: 0.8 / 0.7
- seahorse: 0.9 / 0.8
## 🧭 Workspace Assignment
- im* — workspace 3
- browser* — workspace 2
- obs* — workspace 10
## 🧪 XWayland and Special Cases
- Example targeted xwayland rule: noblur for class “resolve” on xwayland:1
## 🌱 Environment (set via Hyprland)
- NIXOS_OZONE_WL=1, NIXPKGS_ALLOW_UNFREE=1
- XDG_CURRENT_DESKTOP=Hyprland, XDG_SESSION_TYPE=wayland, XDG_SESSION_DESKTOP=Hyprland
- GDK_BACKEND=wayland,x11, CLUTTER_BACKEND=wayland
- QT_QPA_PLATFORM=wayland;xcb, QT_WAYLAND_DISABLE_WINDOWDECORATION=1, QT_AUTO_SCREEN_SCALE_FACTOR=1
- SDL_VIDEODRIVER=x11 (explicit)
- MOZ_ENABLE_WAYLAND=1
- AQ_DRM_DEVICES=/dev/dri/card0:/dev/dri/card1
- GDK_SCALE=1, QT_SCALE_FACTOR=1
- EDITOR=nvim

View File

@@ -0,0 +1,61 @@
# Kitty on ddubsOS — Summary & Cheatsheet
## 🚀 Summary of modules/home/terminals/kitty.nix
- Program
- Kitty enabled with package pkgs.kitty
- Shell integrations: Zsh, Fish, Bash (mode: enabled)
- Appearance & Behavior
- Font: Maple Mono NF, size 12
- Scrollback: 10,000 lines; wheel min lines: 1; padding: 4px
- Confirm close: 0 (no confirm); audio bell: disabled; mouse hide wait: 60
- Cursor trail: 1; tab fade: 1; active/inactive tab font style: bold
- Tab bar: top, powerline style
- Layouts: splits enabled
- URL handling: open with default; detect URLs: true; allow_remote_control: true
- Theme (Catppuccin Mocha manual config in extraConfig)
- Foreground/background, selection, cursor, borders, tab bar, and 16-color palette explicitly set
---
## 🗝️ Keybindings Cheatsheet (extraConfig)
Clipboard
- Ctrl+Shift+V — paste_from_selection
- Shift+Insert — paste_from_selection
Scrollback
- Ctrl+Shift+Up / k — scroll_line_up
- Ctrl+Shift+Down / j — scroll_line_down
- Ctrl+Shift+PageUp — scroll_page_up
- Ctrl+Shift+PageDown — scroll_page_down
- Ctrl+Shift+Home — scroll_home
- Ctrl+Shift+End — scroll_end
- Ctrl+Shift+H — show_scrollback
Windows/Tabs/Layout
- Alt+N — new_window_with_cwd
- Alt+W — close_window
- Ctrl+Shift+Enter — split horizontal (hsplit)
- Ctrl+Shift+S — split vertical (vsplit)
- Ctrl+Shift+] / [ — next_window / previous_window
- Ctrl+Shift+F — move_window_forward
- Ctrl+Shift+B — move_window_backward
- Ctrl+Shift+` — move_window_to_top
- Ctrl+Shift+1..0 — first..tenth_window
- Ctrl+Shift+Right/Left — next_tab / previous_tab
- Ctrl+Shift+T — new_tab
- Ctrl+Shift+Q — close_tab
- Ctrl+Shift+L — next_layout
- Ctrl+Shift+. / , — move_tab_forward / move_tab_backward
Font Size
- Ctrl+Shift+Up — increase_font_size
- Ctrl+Shift+Down — decrease_font_size
- Ctrl+Shift+Backspace — restore_font_size
Notes
- Color scheme is embedded; Stylix support disabled in this config.

View File

@@ -0,0 +1,67 @@
# Guía para Principiantes de ZaneyOS: Personalización Básica
¡Bienvenido! Esta guía es para quienes son nuevos en Nix y quieren realizar personalizaciones comunes y seguras en su instalación de ZaneyOS. Mantendremos todo simple y al grano.
## Diseño del repositorio (dónde cambiar las cosas)
- `flake.nix`: Punto de entrada del sistema. Normalmente no necesitas editarlo para ajustes cotidianos.
- `hosts/`: Configuración por máquina.
- `hosts/<tu-hostname>/`
- `variables.nix`: Tu panel principal (activar/desactivar funciones, establecer opciones).
- `host-packages.nix`: Paquetes extra solo para esta máquina.
- `modules/`: Bloques reutilizables para el sistema y Home Manager.
- `modules/core/global-packages.nix`: Paquetes instalados en todas las máquinas.
- `modules/home/hyprland/binds.nix`: Atajos de Hyprland.
## Instalar paquetes
Dos patrones comunes:
### 1) Solo en esta máquina
Edita `hosts/<tu-hostname>/host-packages.nix` y añade el nombre del paquete:
```nix
[
brave
(catppuccin-vsc.override {
variant = "mocha";
})
cowsay
]
```
### 2) En todas las máquinas
Edita `modules/core/global-packages.nix` y añade el paquete a la lista.
## Ajustes de monitores (por host)
Edita `hosts/<tu-hostname>/variables.nix` y define la(s) línea(s) extra del monitor:
```nix
# Ejemplo: 1080p a 144 Hz en DP-1
extraMonitorSettings = "monitor=DP-1,1920x1080@144";
```
## Cambiar atajos de Hyprland
Edita `modules/home/hyprland/binds.nix`. Por ejemplo, cambiar la terminal de Super+Return a Super+T:
```nix
"SUPER, T, exec, ${terminal}"
```
## Aplicar y probar tus cambios
Preferido (específico de ZaneyOS):
- `zcli rebuild`
- Nota: el alias `fr` está obsoleto.
Método manual de respaldo (funciona en cualquier instalación):
- Desde la raíz del repo, reemplaza PROFILE por tu perfil (intel, nvidia, nvidia-laptop, vm):
- `sudo nixos-rebuild switch --flake .#PROFILE`
Consejos
- Si un rebuild falla, lee el error cerca del final: suele apuntar al archivo/línea exacta.
- Si un cambio rompe tu sesión tras reiniciar, elige una “generación” anterior en el menú de arranque.
- Usa Git para versionar tus cambios y poder revertir fácilmente.

View File

@@ -0,0 +1,66 @@
# ZaneyOS Beginners Guide to Customization
Welcome! This guide is for users who are new to Nix and want to make common, safe customizations to their ZaneyOS setup. Well keep it simple and focus on essentials.
## Repository layout (where to change things)
- `flake.nix`: Entry point for the whole system. You generally dont need to edit this for daytoday tweaks.
- `hosts/`: Permachine configuration.
- `hosts/<your-hostname>/`
- `variables.nix`: Your main control panel (enable/disable features, set options).
- `host-packages.nix`: Extra packages only for this one machine.
- `modules/`: Reusable building blocks for the system and Home Manager.
- `modules/core/global-packages.nix`: Packages installed on all machines.
- `modules/home/hyprland/binds.nix`: Hyprland keybindings.
## Installing packages
Two common patterns:
### 1) Only on this machine
Edit `hosts/<your-hostname>/host-packages.nix` and add the package name:
```nix
[
brave
(catppuccin-vsc.override {
variant = "mocha";
})
cowsay
]
```
### 2) On all machines
Edit `modules/core/global-packages.nix` and add the package to the list.
## Monitor settings (per host)
Edit `hosts/<your-hostname>/variables.nix` and set the extra monitor line(s):
```nix
# Example: 1080p at 144 Hz on DP-1
extraMonitorSettings = "monitor=DP-1,1920x1080@144";
```
## Change Hyprland keybindings
Edit `modules/home/hyprland/binds.nix`. For example, change terminal from Super+Return to Super+T:
```nix
"SUPER, T, exec, ${terminal}"
```
## Apply and test your changes
Preferred (ZaneyOS-specific):
- `zcli rebuild`
- Note: The `fr` alias is deprecated.
Manual backup method (works anywhere):
- From the repo root, replace PROFILE with your profile (intel, nvidia, nvidia-laptop, vm):
- `sudo nixos-rebuild switch --flake .#PROFILE`
Tips
- If a rebuild fails, read the error near the bottom of the output—it usually points to the exact file/line.
- If a change breaks your session after a reboot, pick an older “generation” from the boot menu to roll back.
- Use Git to track your edits so you can revert easily.

View File

@@ -0,0 +1,93 @@
# Project Guide — ZaneyOS
Scope
- A reproducible NixOS flake tailored for desktop systems with per-host overrides, GPU/VM profiles, and an integrated Home Manager layer (Hyprland, Waybar, shells, scripts).
- Repo location is expected at ~/zaneyos. If you place it elsewhere, update modules/core/nh.nix (programs.nh.flake) to the new path.
Quick commands
- Build and switch (preferred: nh/zcli)
- fr → nh os switch --hostname <profile> # alias provided by zsh/bash modules
- fu → nh os switch --hostname <profile> --update
- zcli rebuild
- zcli update
- Build for next boot (safer for larger changes)
- zcli rebuild-boot
- or: sudo nixos-rebuild boot --flake .#<profile>
- Direct NixOS (if you prefer without nh/zcli)
- sudo nixos-rebuild switch --flake .#<profile>
- Validate the flake
- nix flake check
- Format Nix files (nixfmt-rfc-style is included)
- find . -name "*.nix" -print0 | xargs -0 nixfmt
- Host management
- zcli update-host [hostname] [profile] # edits flake.nix host/profile
- zcli add-host <hostname> [profile] # copies hosts/default and guides hardware.nix
- Diagnostics and maintenance
- zcli diag # writes ~/diag.txt
- zcli cleanup # prunes older generations (prompts for retention)
zcli advanced options (for rebuild/update)
- --dry (-n) preview only
- --ask (-a) confirm before proceeding
- --cores N cap build CPU usage
- --verbose (-v) more logs
- --no-nom disable nix-output-monitor
Profiles and when to use them
- amd, intel, nvidia, nvidia-laptop (hybrid), vm
- Choose with the <profile> argument in nh/nixos-rebuild commands (e.g., .#vm)
High-level architecture
- flake.nix
- Inputs: nixpkgs 25.05, home-manager 25.05, stylix, nvf, nix-flatpak
- Local constants: system, host, profile, username
- nixosConfigurations: one per GPU/VM profile via mkNixosConfig
- Each configuration imports profiles/<profile>
- profiles/<profile>/default.nix
- Imports the active host and the system module stacks:
- ../../hosts/${host}
- ../../modules/drivers
- ../../modules/core
- Flips toggles: drivers.*.enable and vm.guest-services.enable
- Hybrid laptops: profiles/nvidia-laptop pulls intel/nvidia Bus IDs from the hosts variables.nix and wires nvidia-prime
- hosts/<hostname>/
- default.nix imports hardware.nix and host-packages.nix
- variables.nix is the control panel for UX + feature toggles:
- displayManager (greetd vs sddm)
- terminal/browser defaults (enable per-terminal via flags)
- waybarChoice, animChoice, stylixImage
- 24h clock, thunarEnable, printEnable, NFS
- intelID/nvidiaID for Prime offload
- modules/core
- default.nix composes focused NixOS modules: boot, flatpak, fonts, hardware, network, nfs, nh, packages, printing, display manager (conditional greetd/sddm), security, services (PipeWire, SSH, Bluetooth, fstrim; smartd conditional on profile), steam, stylix, syncthing, system (nix settings, locales, env vars), thunar, user (Home Manager), virtualisation, xserver
- user.nix integrates Home Manager and creates users.${username}; passes extraSpecialArgs { inputs, username, host, profile } to the home layer
- nh.nix enables nh, configures GC, and pins programs.nh.flake = /home/${username}/zaneyos
- modules/drivers
- Aggregates AMD, Intel, NVIDIA, NVIDIA Prime, and VM guest services
- nvidia-prime-drivers.nix exposes options.drivers.nvidia-prime.{enable,intelBusID,nvidiaBusID} consumed by the nvidia-laptop profile
- vm-guest-services.nix enables qemu-guest, spice agents when vm.guest-services.enable = true
- modules/home
- default.nix composes the user environment (Hyprland, Waybar via waybarChoice, Rofi, Yazi, Kitty/WezTerm/Ghostty/Alacritty toggles, Zsh/Bash config, Git, NVF/Neovim, OBS, swaync, scripts, Stylix, optional Doom Emacs/VSCodium/Helix)
- scripts/default.nix installs user-space tools including zcli; zcli wraps rebuild/update/boot builds, cleanup, diagnostics, host management, and Doom Emacs lifecycle
Where to change what
- flake.nix: set username, host, profile; add inputs; wire outputs
- hosts/<hostname>/{variables.nix,hardware.nix,host-packages.nix}: per-machine behavior, theming, and hardware
- modules/core/*: system-level settings, services, packages
- modules/home/*: user apps, shell, window manager, UI
Common workflows
- Small UX tweaks: edit hosts/<hostname>/variables.nix → fr
- Theme swap: edit stylixImage/waybarChoice in variables.nix → fr (or zcli rebuild-boot)
- GPU/VM switch: choose nixos-rebuild/nh profile (e.g., nh os switch --hostname vm) and optionally update host/profile constants with zcli update-host
Validation and troubleshooting
- nix flake check for a quick sanity test
- zcli diag to produce a detailed hardware/system report
- If the repo is not under ~/zaneyos, update modules/core/nh.nix so zcli/nh operate on the correct path
Documentation pointers
- README.md: requirements, first-time install methods, upgrade overview
- zcli.md: full CLI documentation, commands, options, and examples
- cheatsheets/: quick-reference guides for Hyprland, terminals, editors, etc.

View File

@@ -0,0 +1,88 @@
# Tmux on ddubsOS — Summary & Cheatsheet
## 🚀 Summary of modules/home/terminals/tmux.nix
### ⌨️ What is the Tmux Prefix?
- The prefix is a special key you press before most tmux commands, so tmux can tell them apart from regular typing.
- Notation guide used below:
- C-x = hold Control and press x (e.g., C-a means Control+a)
- M-x = hold Alt/Meta and press x (sometimes shown as Alt+x)
- S-x = hold Shift and press x (often implicit for uppercase letters)
- Tmux default prefix is C-b (Control+b). In this config its changed to C-a (Control+a), which mirrors the historical GNU Screen workflow many users prefer.
Quick examples (with prefix = C-a):
- New window: press C-a then c
- Next window: press C-a then n
- Split horizontally: press C-a then |
- Split vertically: press C-a then -
- Resize left: press C-a then C-h (hold Control and press h)
- Program
- tmux enabled; prefix: C-a; key mode: vi; baseIndex: 1; pane-base-index: 1
- baseIndex: window numbering starts at 1 instead of 0
- pane-base-index: pane numbering inside a window starts at 1 instead of 0
- Terminal overrides RGB; terminal set to "kitty"; shell: zsh
- Mouse: enabled; 12-hour clock; history-limit: 5000; renumber-windows: on
- Status/UX
- Status bar at top; passthrough: on; confirmations reduced (kill-pane without prompt)
- Plugins
- vim-tmux-navigator, sensible, catppuccin
---
## 🗝️ Keybindings Cheatsheet
Navigation
- Prefix h/j/k/l — select-pane Left/Down/Up/Right
- Prefix o — select next pane
- C-Tab — next-window
- C-S-Tab — previous-window
- M-Tab — new-window
Splits
- Prefix | — split-window -h (cwd)
- Prefix \ — split-window -fh (cwd)
- Prefix - — split-window -v (cwd)
- Prefix _ — split-window -fv (cwd)
Resize
- Prefix C-h/C-j/C-k/C-l — resize-pane 15 cols/rows in direction
- Prefix m — toggle zoom (resize-pane -Z)
Windows
- Prefix c — new-window
- Prefix n — next-window
- Prefix p — previous-window (note: config binds 'n' twice; intended p for previous)
- Prefix t — clock-mode
- Prefix q — display-panes
- Prefix u — refresh-client
Session/Reload
- Prefix r — source-file ~/.config/tmux/tmux.conf
- Prefix x — kill-pane (no prompt)
Popups (display-popup)
- Prefix C-y — lazygit (80%x80% at cwd)
- Prefix C-n — prompt for session name; create and switch
- Prefix C-j — switch session via fzf
- Prefix C-r — yazi (90%x90% at cwd)
- Prefix C-z — nvim ~/ddubsos/flake.nix (90%x90%)
- Prefix C-t — zsh (75%x75% at cwd)
Menu (display-menu)
- Prefix d — Dotfiles menu with quick-open entries:
- f: flake.nix (ddubsOS)
- c: core packages (ddubsOS)
- g: global packages (ddubsOS)
- k: keybinds (Hyprland)
- w: window rules (Hyprland)
- z: ZaneyOS flake.nix
- p: ZaneyOS packages
- q: Exit
Notes
- Pane/Window indices start at 1.
- Terminal passthrough and RGB enabled for truecolor.

View File

@@ -0,0 +1,41 @@
# WezTerm on ddubsOS — Summary & Cheatsheet
## 🚀 Summary of modules/home/terminals/wezterm.nix
- Program
- WezTerm enabled with package pkgs.wezterm
- Lua config provided at ~/.config/wezterm/wezterm.lua
- Appearance & Behavior
- Hide tab bar if only one tab
- Font fallback chain: Maple Mono NF (thin), Fira Code, JetBrains Mono, Hack
- Font: FiraCode Regular (window frame: JetBrainsMono Nerd Font Mono); size: 12
- Color scheme: Catppuccin Mocha; custom tab bar colors
- Window background opacity: 0.75; padding: 10 on all sides
- Fancy tab bar enabled; custom window_frame font
- Cursor: BlinkingUnderline, blink rate 500
- Term: xterm-256color
- Performance: max_fps 120; animation_fps 30
- Wayland: enable_wayland = true
- Missing glyph warnings: disabled
---
## 🗝️ Keybindings Cheatsheet
Tabs
- Alt+t — Spawn tab (CurrentPaneDomain)
- Alt+w — Close current tab (no confirm)
- Alt+n — Next tab
- Alt+p — Previous tab
Panes
- Alt+v — Split vertical
- Alt+h — Split horizontal
- Alt+q — Close current pane (no confirm)
- Alt+Arrow keys — Activate pane in arrow direction
Notes
- Lua contains optional NVIDIA-related tuning commented out.
- default_prog can be enabled if Starship prompt has startup issues.

View File

@@ -0,0 +1,110 @@
# Yazi Keymap — ddubsOS (Human-friendly)
## 🧭 Navigation
- k / Up — Move up
- j / Down — Move down
- Ctrl+u / Shift+PageUp — Half page up
- Ctrl+d / Shift+PageDown — Half page down
- Ctrl+b / PageUp — Page up
- Ctrl+f / PageDown — Page down
- g g — Go to top
- G — Go to bottom
- h / Left — Go to parent directory
- l / Right — Enter child directory
- H — Back (previous directory)
- L — Forward (next directory)
## 🧰 Selection & Visual Mode
- Space — Toggle current, then move down
- Ctrl+a — Select all
- Ctrl+r — Invert selection
- v — Enter visual (select) mode
- V — Visual unset mode
## 🔎 Search & Filter
- s — Search by name (fd)
- S — Search by content (ripgrep)
- Ctrl+s — Cancel search
- f — Filter files (smart)
- / — Find next (smart)
- ? — Find previous (smart)
- n — Next found
- N — Previous found
## 📂 Open & Preview
- o / Enter — Open
- O / Shift+Enter — Open interactively
- Tab — Spot hovered file
- K / J — Seek up/down in preview (±5)
## 📋 Clipboard (Yank/Copy/Move)
- y — Yank (copy)
- x — Yank cut (move)
- p — Paste
- P — Paste (overwrite)
- - — Symlink absolute path of yanked
- _ — Symlink relative path of yanked
- Ctrl+- — Hardlink yanked
- Y / X — Unyank (cancel yank)
## 🗑️ Delete
- d — Trash selected
- D — Delete permanently
## ✏️ Create & Rename
- a — Create file/dir (use trailing / for folders)
- r — Rename (cursor before extension)
## 🖥️ Shell
- ; — Run shell command (interactive)
- : — Run shell command (block until done)
## 👀 Hidden Files
- . — Toggle hidden
## 🧭 Quick Jumps
- g h — Go to $HOME
- g c — Go to ~/.config
- g d — Go to ~/Downloads
- g Space — Jump interactively
- z — Zoxide jump
- Z — FZF jump (file/dir)
## 🧾 Linemode (Metadata View)
- m s — Size
- m p — Permissions
- m b — Birth time
- m m — Modified time
- m o — Owner
- m n — None
## 🔤 Sorting
- , m / , M — Sort by mtime (asc/desc)
- , b / , B — Sort by btime (asc/desc)
- , e / , E — Sort by extension (asc/desc)
- , a / , A — Sort alphabetically (asc/desc)
- , n / , N — Sort naturally (asc/desc)
- , s / , S — Sort by size (asc/desc)
- , r — Sort randomly
## 🗂️ Tabs
- t — New tab (current dir)
- 1..9 — Switch to tab 1..9
- [ / ] — Previous / Next tab
- { / } — Swap tab left / right
## 🧮 Tasks & Help
- w — Show tasks (task manager)
- ~ / F1 — Open help
## 🧩 Plugins (Prepend)
- g i — LazyGit (plugin)
- l — Smart enter (dir enter or open file)
## 🧰 Spot, Pick, Input, Confirm, Completion (Modes)
- Spot mode: Esc/C-[/Ctrl+c/Tab to close; k/j/Up/Down navigate; h/l or Left/Right to swipe; c c copy cell; ~ / F1 for help
- Pick mode: Esc/C-[/Ctrl+c to cancel; Enter to submit; k/j/Up/Down navigate; ~ / F1 help
- Input mode: Esc/C-[ to escape; i/I/a/A enter insert/append (with BOL/EOL moves); visual selections (v, V, Ctrl-A/E); movement (h/l/Left/Right/C-b/C-f/b/B/w/W/e/E/Alt-b/Alt-f); delete/backspace/kill words; cut/copy/paste (d/D/c/C/x/y/p/P); undo/redo (u/C-r); ~ / F1 help
- Confirm mode: Esc/C-[/Ctrl+c/n to cancel; Enter/y to submit; k/j/Up/Down navigate; ~ / F1 help
- Completion mode: Ctrl+c cancel; Tab submit; Enter submit completion + input; Alt-k/j or Up/Down/C-p/C-n navigate; ~ / F1 help

474
flake.lock generated Normal file
View File

@@ -0,0 +1,474 @@
{
"nodes": {
"base16": {
"inputs": {
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1746562888,
"narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "base16.nix",
"type": "github"
}
},
"base16-fish": {
"flake": false,
"locked": {
"lastModified": 1622559957,
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
"owner": "tomyun",
"repo": "base16-fish",
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
"type": "github"
},
"original": {
"owner": "tomyun",
"repo": "base16-fish",
"type": "github"
}
},
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1748408240,
"narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-helix",
"type": "github"
}
},
"base16-vim": {
"flake": false,
"locked": {
"lastModified": 1732806396,
"narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
"type": "github"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1748383148,
"narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf",
"type": "github"
},
"original": {
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1751685974,
"narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=",
"ref": "refs/heads/main",
"rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1",
"revCount": 92,
"type": "git",
"url": "https://git.lix.systems/lix-project/flake-compat.git"
},
"original": {
"type": "git",
"url": "https://git.lix.systems/lix-project/flake-compat.git"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nvf",
"nixpkgs"
]
},
"locked": {
"lastModified": 1754487366,
"narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1749398372,
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"fromYaml": {
"flake": false,
"locked": {
"lastModified": 1731966426,
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
"owner": "SenchoPens",
"repo": "fromYaml",
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "fromYaml",
"type": "github"
}
},
"gnome-shell": {
"flake": false,
"locked": {
"lastModified": 1748186689,
"narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0",
"type": "github"
},
"original": {
"owner": "GNOME",
"ref": "48.2",
"repo": "gnome-shell",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1757784838,
"narHash": "sha256-6aHo1++bAFdW1z+0tfuxM9EmxHvon90mHo8/+izXMcY=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "6e28513cf2ee9a985c339fcef24d44f43d23456b",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "home-manager",
"type": "github"
}
},
"mnw": {
"locked": {
"lastModified": 1748710831,
"narHash": "sha256-eZu2yH3Y2eA9DD3naKWy/sTxYS5rPK2hO7vj8tvUCSU=",
"owner": "Gerg-L",
"repo": "mnw",
"rev": "cff958a4e050f8d917a6ff3a5624bc4681c6187d",
"type": "github"
},
"original": {
"owner": "Gerg-L",
"repo": "mnw",
"type": "github"
}
},
"nix-flatpak": {
"locked": {
"lastModified": 1739444422,
"narHash": "sha256-iAVVHi7X3kWORftY+LVbRiStRnQEob2TULWyjMS6dWg=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "5e54c3ca05a7c7d968ae1ddeabe01d2a9bc1e177",
"type": "github"
},
"original": {
"owner": "gmodena",
"ref": "latest",
"repo": "nix-flatpak",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1757487488,
"narHash": "sha256-zwE/e7CuPJUWKdvvTCB7iunV4E/+G0lKfv4kk/5Izdg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ab0f3607a6c7486ea22229b92ed2d355f1482ee0",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": [
"stylix",
"flake-parts"
],
"nixpkgs": [
"stylix",
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1751320053,
"narHash": "sha256-3m6RMw0FbbaUUa01PNaMLoO7D99aBClmY5ed9V3vz+0=",
"owner": "nix-community",
"repo": "NUR",
"rev": "cbde1735782f9c2bb2c63d5e05fba171a14a4670",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"nvf": {
"inputs": {
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"mnw": "mnw",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1755463179,
"narHash": "sha256-5Ggb1Mhf7ZlRgGi2puCa2PvWs6KbMnWBlW6KW7Vf79Y=",
"owner": "notashelf",
"repo": "nvf",
"rev": "03833118267ad32226b014b360692bdce9d6e082",
"type": "github"
},
"original": {
"owner": "notashelf",
"repo": "nvf",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs",
"nvf": "nvf",
"stylix": "stylix"
}
},
"stylix": {
"inputs": {
"base16": "base16",
"base16-fish": "base16-fish",
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_2",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"
],
"nur": "nur",
"systems": "systems_2",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
"tinted-tmux": "tinted-tmux",
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1757360005,
"narHash": "sha256-VwzdFEQCpYMU9mc7BSQGQe5wA1MuTYPJnRc9TQCTMcM=",
"owner": "danth",
"repo": "stylix",
"rev": "834a743c11d66ea18e8c54872fbcc72ce48bc57f",
"type": "github"
},
"original": {
"owner": "danth",
"repo": "stylix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-foot": {
"flake": false,
"locked": {
"lastModified": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
}
},
"tinted-kitty": {
"flake": false,
"locked": {
"lastModified": 1735730497,
"narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-kitty",
"type": "github"
}
},
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1750770351,
"narHash": "sha256-LI+BnRoFNRa2ffbe3dcuIRYAUcGklBx0+EcFxlHj0SY=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "5a775c6ffd6e6125947b393872cde95867d85a2a",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "schemes",
"type": "github"
}
},
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1751159871,
"narHash": "sha256-UOHBN1fgHIEzvPmdNMHaDvdRMgLmEJh2hNmDrp3d3LE=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "bded5e24407cec9d01bd47a317d15b9223a1546c",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-tmux",
"type": "github"
}
},
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1751158968,
"narHash": "sha256-ksOyv7D3SRRtebpXxgpG4TK8gZSKFc4TIZpR+C98jX8=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "86a470d94204f7652b906ab0d378e4231a5b3384",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-zed",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"stylix",
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733222881,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

67
flake.nix Normal file
View File

@@ -0,0 +1,67 @@
{
description = "GarandOS";
inputs = {
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nvf = {
url = "github:notashelf/nvf";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix = {
url = "github:danth/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-flatpak.url = "github:gmodena/nix-flatpak?ref=latest";
# Hypersysinfo (Optional)
#hyprsysteminfo.url = "github:hyprwm/hyprsysteminfo";
# QuickShell (optional add quickshell to outputs to enable)
#quickshell = {
# url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
# inputs.nixpkgs.follows = "nixpkgs";
#};
};
outputs =
{
nixpkgs,
home-manager,
nix-flatpak,
...
}@inputs:
let
system = "x86_64-linux";
host = "Garand-Desktop";
profile = "nvidia";
username = "garand_plg";
# Deduplicate nixosConfigurations while preserving the top-level 'profile'
mkNixosConfig = gpuProfile: nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs;
inherit username;
inherit host;
inherit profile; # keep using the let-bound profile for modules/scripts
};
modules = [
./profiles/${gpuProfile}
nix-flatpak.nixosModules.nix-flatpak
];
};
in
{
nixosConfigurations = {
amd = mkNixosConfig "amd";
nvidia = mkNixosConfig "nvidia";
nvidia-laptop = mkNixosConfig "nvidia-laptop";
intel = mkNixosConfig "intel";
vm = mkNixosConfig "vm";
};
};
}

View File

@@ -0,0 +1,6 @@
{ ... }: {
imports = [
./hardware.nix
./host-packages.nix
];
}

View File

@@ -0,0 +1,49 @@
# 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" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ "dm-snapshot" ];
boot.initrd.luks.devices = {
cryptroot = {
device = "/dev/disk/by-uuid/7c018698-d35c-4ee6-92a8-5e4edf914065";
preLVM = true;
};
};
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/e3ac1df3-ce8f-44cd-901f-a8cd3f6955b7";
fsType = "ext4";
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/0713b82c-bf8c-424f-96e1-5d883e50b451";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/783D-A507";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# 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.enp5s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -0,0 +1,7 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
audacity
discord
nodejs
];
}

View File

@@ -0,0 +1,109 @@
{
# Git Configuration ( For Pulling Software Repos )
gitUsername = "GarandPLG";
gitEmail = "garandplg@garandplg.com";
# Set Displau Manager
# `tui` for Text login
# `sddm` for graphical GUI (default)
# SDDM background is set with stylixImage
displayManager = "tui";
# Emable/disable bundled applications
tmuxEnable = false;
alacrittyEnable = false;
weztermEnable = false;
ghosttyEnable = false;
vscodeEnable = true;
# Note: This is evil-helix with VIM keybindings by default
helixEnable = false;
#To install: Enable here, zcli rebuild, then run zcli doom install
doomEmacsEnable = false;
# Hyprland Settings
# Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1";
# extraMonitorSettings = "monitor = HDMI-A-1,1920x1080@60,auto,1";
# You can configure multiple monitors.
# Inside the quotes, create a new line for each monitor.
extraMonitorSettings = "monitor = DP-1,1920x1080@144,auto,1";
# Waybar Settings
clock24h = true;
# Program Options
# Set Default Browser (google-chrome-stable for google-chrome)
# This does NOT install your browser
# You need to install it by adding it to the `packages.nix`
# or as a flatpak
browser = "librewolf";
# Available Options:
# Kitty, ghostty, wezterm, aalacrity
# Note: kitty, wezterm, alacritty have to be enabled in `variables.nix`
# Setting it here does not enable it. Kitty is installed by default
terminal = "kitty"; # Set Default System Terminal
keyboardLayout = "pl";
consoleKeyMap = "pl";
# For Nvidia Prime support
intelID = "PCI:1:0:0";
nvidiaID = "PCI:0:2:0";
# Enable NFS
enableNFS = true;
# Enable Printing Support
printEnable = true;
# Enable Thunar GUI File Manager
# Yazi is default File Manager
thunarEnable = true;
# Themes, waybar and animation.
# Only uncomment your selection
# The others much be commented out.
# Set Stylix Image
# This will set your color palette
# Default background
# Add new images to ~/zaneyos/wallpapers
stylixImage = ../../wallpapers/attack-on-titan-mikasa-ackerman.jpg;
#stylixImage = ../../wallpapers/mountainscapedark.jpg;
#stylixImage = ../../wallpapers/AnimeGirlNightSky.jpg;
#stylixImage = ../../wallpapers/Anime-Purple-eyes.png;
#stylixImage = ../../wallpapers/Rainnight.jpg;
#stylixImage = ../../wallpapers/zaney-wallpaper.jpg;
#stylixImage = ../../wallpapers/nix-wallpapers-strips-logo.jpg;
#stylixImage = ../../wallpapers/beautifulmountainscape.jpg;
# Set Waybar
# Available Options:
waybarChoice = ../../modules/home/waybar/waybar-curved.nix;
#waybarChoice = ../../modules/home/waybar/waybar-ddubs.nix;
#waybarChoice = ../../modules/home/waybar/waybar-ddubs-2.nix;
#waybarChoice = ../../modules/home/waybar/waybar-simple.nix;
# Throwback to ZaneyOS v1.0
#waybarChoice = ../../modules/home/waybar/waybar-jerry.nix;
# Very colorful and bright colors
#waybarChoice = ../../modules/home/waybar/waybar-nekodyke.nix;
# DWM styled waybars from Matt at TheLinuxCast
#waybarChoice = ../../modules/home/waybar/waybar-dwm.nix;
#waybarChoice = ../../modules/home/waybar/waybar-dwm-2.nix;
# Set Animation style
# Available options are:
# animations-def.nix (default)
# animations-end4.nix (end-4 project very fluid)
# animations-dynamic.nix (ml4w project)
# animations-moving.nix (ml4w project)
animChoice = ../../modules/home/hyprland/animations-def.nix;
#animChoice = ../../modules/home/hyprland/animations-end4.nix;
#animChoice = ../../modules/home/hyprland/animations-dynamic.nix;
#animChoice = ../../modules/home/hyprland/animations-moving.nix;
# Set network hostId if required (needed for zfs)
# Otherwise leave as-is
hostId = "5ab03f50";
}

View File

@@ -0,0 +1,6 @@
{ ... }: {
imports = [
./hardware.nix
./host-packages.nix
];
}

View File

@@ -0,0 +1,45 @@
# 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 = [ "xhci_pci" "ahci" "nvme" "usbhid" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{
device = "/dev/disk/by-uuid/dd005850-6230-40c4-9d70-8c8cf443658d";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-b7565781-148e-4c94-9c76-36c84dd93dc8".device = "/dev/disk/by-uuid/b7565781-148e-4c94-9c76-36c84dd93dc8";
fileSystems."/boot" =
{
device = "/dev/disk/by-uuid/C2A6-DF56";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# 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.docker0.useDHCP = lib.mkDefault true;
# networking.interfaces.eno2.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -0,0 +1,7 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
audacity
discord
nodejs
];
}

110
hosts/default/variables.nix Normal file
View File

@@ -0,0 +1,110 @@
{
# Git Configuration ( For Pulling Software Repos )
gitUsername = "Tyler Kelley";
gitEmail = "tylerzanekelley@gmail.com";
# Set Displau Manager
# `tui` for Text login
# `sddm` for graphical GUI (default)
# SDDM background is set with stylixImage
displayManager = "sddm";
# Emable/disable bundled applications
tmuxEnable = false;
alacrittyEnable = false;
weztermEnable = false;
ghosttyEnable = false;
vscodeEnable = false;
# Note: This is evil-helix with VIM keybindings by default
helixEnable = false;
#To install: Enable here, zcli rebuild, then run zcli doom install
doomEmacsEnable = false;
# Hyprland Settings
# Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1";
# extraMonitorSettings = "monitor = HDMI-A-1,1920x1080@60,auto,1";
# You can configure multiple monitors.
# Inside the quotes, create a new line for each monitor.
extraMonitorSettings = "
";
# Waybar Settings
clock24h = false;
# Program Options
# Set Default Browser (google-chrome-stable for google-chrome)
# This does NOT install your browser
# You need to install it by adding it to the `packages.nix`
# or as a flatpak
browser = "brave";
# Available Options:
# Kitty, ghostty, wezterm, aalacrity
# Note: kitty, wezterm, alacritty have to be enabled in `variables.nix`
# Setting it here does not enable it. Kitty is installed by default
terminal = "kitty"; # Set Default System Terminal
keyboardLayout = "us";
consoleKeyMap = "us";
# For Nvidia Prime support
intelID = "PCI:1:0:0";
nvidiaID = "PCI:0:2:0";
# Enable NFS
enableNFS = true;
# Enable Printing Support
printEnable = false;
# Enable Thunar GUI File Manager
# Yazi is default File Manager
thunarEnable = false;
# Themes, waybar and animation.
# Only uncomment your selection
# The others much be commented out.
# Set Stylix Image
# This will set your color palette
# Default background
# Add new images to ~/zaneyos/wallpapers
stylixImage = ../../wallpapers/mountainscapedark.jpg;
#stylixImage = ../../wallpapers/AnimeGirlNightSky.jpg;
#stylixImage = ../../wallpapers/Anime-Purple-eyes.png;
#stylixImage = ../../wallpapers/Rainnight.jpg;
#stylixImage = ../../wallpapers/zaney-wallpaper.jpg;
#stylixImage = ../../wallpapers/nix-wallpapers-strips-logo.jpg;
#stylixImage = ../../wallpapers/beautifulmountainscape.jpg;
# Set Waybar
# Available Options:
waybarChoice = ../../modules/home/waybar/waybar-curved.nix;
#waybarChoice = ../../modules/home/waybar/waybar-ddubs.nix;
#waybarChoice = ../../modules/home/waybar/waybar-ddubs-2.nix;
#waybarChoice = ../../modules/home/waybar/waybar-simple.nix;
# Throwback to ZaneyOS v1.0
#waybarChoice = ../../modules/home/waybar/waybar-jerry.nix;
# Very colorful and bright colors
#waybarChoice = ../../modules/home/waybar/waybar-nekodyke.nix;
# DWM styled waybars from Matt at TheLinuxCast
#waybarChoice = ../../modules/home/waybar/waybar-dwm.nix;
#waybarChoice = ../../modules/home/waybar/waybar-dwm-2.nix;
# Set Animation style
# Available options are:
# animations-def.nix (default)
# animations-end4.nix (end-4 project very fluid)
# animations-dynamic.nix (ml4w project)
# animations-moving.nix (ml4w project)
animChoice = ../../modules/home/hyprland/animations-def.nix;
#animChoice = ../../modules/home/hyprland/animations-end4.nix;
#animChoice = ../../modules/home/hyprland/animations-dynamic.nix;
#animChoice = ../../modules/home/hyprland/animations-moving.nix;
# Set network hostId if required (needed for zfs)
# Otherwise leave as-is
hostId = "5ab03f50";
}

BIN
img/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
img/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

BIN
img/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
img/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
img/demo-img2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

BIN
img/demo-img3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

BIN
img/demo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
img/first-install-cmd.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

BIN
img/initial-session.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

BIN
img/install-script.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
img/nwg-displays.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

22
modules/core/boot.nix Normal file
View File

@@ -0,0 +1,22 @@
{ pkgs, config, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages_zen;
kernelModules = [ "v4l2loopback" ];
extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
kernel.sysctl = { "vm.max_map_count" = 2147483642; };
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
# Appimage Support
binfmt.registrations.appimage = {
wrapInterpreterInShell = false;
interpreter = "${pkgs.appimage-run}/bin/appimage-run";
recognitionType = "magic";
offset = 0;
mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff'';
magicOrExtension = ''\x7fELF....AI\x02'';
};
plymouth.enable = true;
};
}

36
modules/core/default.nix Normal file
View File

@@ -0,0 +1,36 @@
{
inputs,
host,
...
}:
let
# Import the host-specific variables.nix
vars = import ../../hosts/${host}/variables.nix;
in
{
imports = [
./boot.nix
./flatpak.nix
./fonts.nix
./hardware.nix
./network.nix
./nfs.nix
./nh.nix
#./quickshell.nix #Disabled for now not using it yet
./packages.nix
./printing.nix
# Conditionally import the display manager module
(if vars.displayManager == "tui" then ./greetd.nix else ./sddm.nix)
./security.nix
./services.nix
./steam.nix
./stylix.nix
./syncthing.nix
./system.nix
./thunar.nix
./user.nix
./virtualisation.nix
./xserver.nix
inputs.stylix.nixosModules.stylix
];
}

31
modules/core/flatpak.nix Normal file
View File

@@ -0,0 +1,31 @@
{ pkgs, ... }: {
xdg.portal = {
enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-hyprland ];
configPackages = [ pkgs.hyprland ];
};
services = {
flatpak = {
enable = true;
# List the Flatpak applications you want to install
# Use the official Flatpak application ID (e.g., from flathub.org)
# Examples:
packages = [
#"com.github.tchx84.Flatseal" #Manage flatpak permissions - should always have this
#"com.rtosta.zapzap" # WhatsApp client
#"io.github.flattool.Warehouse" # Manage flatpaks, clean data, remove flatpaks and deps
#"it.mijorus.gearlever" # Manage and support AppImages
#"io.github.freedoom.Phase1" # Classic Doom FPS 1
#"io.github.freedoom.Phase2" # Classic Doom FPS 2
#"io.github.dvlv.boxbuddyrs" # Manage distroboxes
#"de.schmidhuberj.tubefeeder" #watch YT videos
# Add other Flatpak IDs here, e.g., "org.mozilla.firefox"
];
# Optional: Automatically update Flatpaks when you run nixos-rebuild swit ch
update.onActivation = true;
};
};
}

29
modules/core/fonts.nix Normal file
View File

@@ -0,0 +1,29 @@
{pkgs, ...}: {
fonts = {
packages = with pkgs; [
dejavu_fonts
fira-code
fira-code-symbols
font-awesome
hackgen-nf-font
ibm-plex
inter
jetbrains-mono
material-icons
maple-mono.NF
minecraftia
nerd-fonts.im-writing
nerd-fonts.blex-mono
noto-fonts
noto-fonts-emoji
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-monochrome-emoji
powerline-fonts
roboto
roboto-mono
#symbola
terminus_font
];
};
}

15
modules/core/greetd.nix Normal file
View File

@@ -0,0 +1,15 @@
{ pkgs
, username
, ...
}: {
services.greetd = {
enable = true;
#vt = 3;
settings = {
default_session = {
user = username;
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland"; # start Hyprland with a TUI login manager
};
};
};
}

18
modules/core/hardware.nix Normal file
View File

@@ -0,0 +1,18 @@
{ pkgs, ... }:
{
hardware = {
sane = {
enable = true;
extraBackends = [ pkgs.sane-airscan ];
disabledDefaultBackends = [ "escl" ];
};
logitech.wireless.enable = false;
logitech.wireless.enableGraphical = false;
graphics.enable = true;
enableRedistributableFirmware = true;
keyboard.qmk.enable = true;
bluetooth.enable = true;
bluetooth.powerOnBoot = true;
};
local.hardware-clock.enable = false;
}

41
modules/core/network.nix Normal file
View File

@@ -0,0 +1,41 @@
{ pkgs
, host
, options
, ...
}:
let
inherit (import ../../hosts/${host}/variables.nix) hostId;
in
{
# Defensive assertion for hostname validity (clearer message at eval time)
assertions = [
{
assertion = builtins.match "^[[:alnum:]]([[:alnum:]_-]{0,61}[[:alnum:]])?$" host != null;
message = "Invalid hostname '${host}'. Must be 1-63 chars, start/end alphanumeric; allowed middle chars: letters, digits, '-' or '_'.";
}
];
networking = {
hostName = "${host}";
hostId = hostId;
networkmanager.enable = true;
timeServers = options.networking.timeServers.default ++ [ "pool.ntp.org" ];
firewall = {
enable = true;
allowedTCPPorts = [
22
80
443
59010
59011
8080
];
allowedUDPPorts = [
59010
59011
];
};
};
environment.systemPackages = with pkgs; [ networkmanagerapplet ];
}

10
modules/core/nfs.nix Normal file
View File

@@ -0,0 +1,10 @@
{ host, ... }:
let
inherit (import ../../hosts/${host}/variables.nix) enableNFS;
in
{
services = {
rpcbind.enable = enableNFS;
nfs.server.enable = enableNFS;
};
}

18
modules/core/nh.nix Normal file
View File

@@ -0,0 +1,18 @@
{ pkgs
, username
, ...
}: {
programs.nh = {
enable = true;
clean = {
enable = true;
extraArgs = "--keep-since 7d --keep 5";
};
flake = "/home/${username}/garandos";
};
environment.systemPackages = with pkgs; [
nix-output-monitor
nvd
];
}

85
modules/core/packages.nix Normal file
View File

@@ -0,0 +1,85 @@
{
pkgs,
inputs,
...
}:
{
programs = {
neovim = {
enable = true;
defaultEditor = true;
};
firefox.enable = false; # Firefox is not installed by default
hyprland = {
enable = true; # set this so desktop file is created
withUWSM = false;
};
dconf.enable = true;
seahorse.enable = true;
fuse.userAllowOther = true;
mtr.enable = true;
adb.enable = true;
hyprlock.enable = true;
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
};
nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs; [
# Hyprland systeminfo QT (Optional)
#inputs.hyprsysteminfo.packages.${pkgs.system}.default
amfora # Fancy Terminal Browser For Gemini Protocol
appimage-run # Needed For AppImage Support
brave # Brave Browser
brightnessctl # For Screen Brightness Control
cliphist # Clipboard manager using rofi menu
cmatrix # Matrix Movie Effect In Terminal
cowsay # Great Fun Terminal Program
docker-compose # Allows Controlling Docker From A Single File
duf # Utility For Viewing Disk Usage In Terminal
dysk # Disk space util nice formattting
eza # Beautiful ls Replacement
ffmpeg # Terminal Video / Audio Editing
file-roller # Archive Manager
gedit # Simple Graphical Text Editor
#gemini-cli # CLI AI client ONLY (optional)
gimp # Great Photo Editor
glxinfo # needed for inxi diag util
greetd.tuigreet # The Login Manager (Sometimes Referred To As Display Manager)
htop # Simple Terminal Based System Monitor
hyprpicker # Color Picker
eog # For Image Viewing
inxi # CLI System Information Tool
killall # For Killing All Instances Of Programs
libnotify # For Notifications
lm_sensors # Used For Getting Hardware Temps
lolcat # Add Colors To Your Terminal Command Output
lshw # Detailed Hardware Information
mpv # Incredible Video Player
ncdu # Disk Usage Analyzer With Ncurses Interface
nixfmt-rfc-style # Nix Formatter
nwg-displays # configure monitor configs via GUI
onefetch # provides zsaneyos build info on current system
pavucontrol # For Editing Audio Levels & Devices
pciutils # Collection Of Tools For Inspecting PCI Devices
picard # For Changing Music Metadata & Getting Cover Art
pkg-config # Wrapper Script For Allowing Packages To Get Info On Others
playerctl # Allows Changing Media Volume Through Scripts
rhythmbox # audio player
ripgrep # Improved Grep
socat # Needed For Screenshots
unrar # Tool For Handling .rar Files
unzip # Tool For Handling .zip Files
usbutils # Good Tools For USB Devices
uwsm # Universal Wayland Session Manager (optional must be enabled)
v4l-utils # Used For Things Like OBS Virtual Camera
waypaper # wallpaper changer
warp-terminal # Terminal with AI support build in
wget # Tool For Fetching Files With Links
ytmdl # Tool For Downloading Audio From YouTube
];
}

20
modules/core/printing.nix Normal file
View File

@@ -0,0 +1,20 @@
{ host, ... }:
let
inherit (import ../../hosts/${host}/variables.nix) printEnable;
in
{
services = {
printing = {
enable = printEnable;
drivers = [
# pkgs.hplipWithPlugin
];
};
avahi = {
enable = printEnable;
nssmdns4 = true;
openFirewall = true;
};
ipp-usb.enable = printEnable;
};
}

View File

@@ -0,0 +1,31 @@
{ pkgs, inputs, ... }:
{
environment.systemPackages = with pkgs; [
inputs.quickshell.packages.${pkgs.system}.default
# Qt6 related kitsfor slove Qt5Compat problem
qt6.qt5compat
qt6.qtbase
qt6.qtquick3d
qt6.qtwayland
qt6.qtdeclarative
qt6.qtsvg
# alternate options
# libsForQt5.qt5compat
kdePackages.qt5compat
libsForQt5.qt5.qtgraphicaleffects
];
# necessary environment variables
environment.variables = {
QML_IMPORT_PATH = "${pkgs.qt6.qt5compat}/lib/qt-6/qml:${pkgs.qt6.qtbase}/lib/qt-6/qml";
QML2_IMPORT_PATH = "${pkgs.qt6.qt5compat}/lib/qt-6/qml:${pkgs.qt6.qtbase}/lib/qt-6/qml";
};
# make sure the Qt application is working properly
environment.sessionVariables = {
QT_QPA_PLATFORM = "wayland;xcb";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
};
}

72
modules/core/sddm.nix Normal file
View File

@@ -0,0 +1,72 @@
# SDDM is a display manager for X11 and Wayland
{
pkgs,
config,
lib,
...
}: let
foreground = config.stylix.base16Scheme.base00;
textColor = config.stylix.base16Scheme.base05;
sddm-astronaut = pkgs.sddm-astronaut.override {
embeddedTheme = "pixel_sakura";
themeConfig =
if lib.hasSuffix "sakura_static.png" config.stylix.image
then {
FormPosition = "left";
Blur = "2.0";
}
else if lib.hasSuffix "studio.png" config.stylix.image
then {
Background = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/anotherhadi/nixy-wallpapers/refs/heads/main/wallpapers/studio.gif";
sha256 = "sha256-qySDskjmFYt+ncslpbz0BfXiWm4hmFf5GPWF2NlTVB8=";
};
HeaderTextColor = "#${textColor}";
DateTextColor = "#${textColor}";
TimeTextColor = "#${textColor}";
LoginFieldTextColor = "#${textColor}";
PasswordFieldTextColor = "#${textColor}";
UserIconColor = "#${textColor}";
PasswordIconColor = "#${textColor}";
WarningColor = "#${textColor}";
LoginButtonBackgroundColor = "#${foreground}";
SystemButtonsIconsColor = "#${foreground}";
SessionButtonTextColor = "#${textColor}";
VirtualKeyboardButtonTextColor = "#${textColor}";
DropdownBackgroundColor = "#${foreground}";
HighlightBackgroundColor = "#${textColor}";
}
else {
FormPosition = "left";
Blur = "4.0";
Background = "${toString config.stylix.image}";
HeaderTextColor = "#${textColor}";
DateTextColor = "#${textColor}";
TimeTextColor = "#${textColor}";
LoginFieldTextColor = "#${textColor}";
PasswordFieldTextColor = "#${textColor}";
UserIconColor = "#${textColor}";
PasswordIconColor = "#${textColor}";
WarningColor = "#${textColor}";
LoginButtonBackgroundColor = "#${config.stylix.base16Scheme.base01}";
SystemButtonsIconsColor = "#${textColor}";
SessionButtonTextColor = "#${textColor}";
VirtualKeyboardButtonTextColor = "#${textColor}";
DropdownBackgroundColor = "#${config.stylix.base16Scheme.base01}";
HighlightBackgroundColor = "#${textColor}";
FormBackgroundColor = "#${config.stylix.base16Scheme.base01}";
};
};
in {
services.displayManager = {
sddm = {
package = pkgs.kdePackages.sddm;
extraPackages = [sddm-astronaut];
enable = true;
wayland.enable = true;
theme = "sddm-astronaut-theme";
};
};
environment.systemPackages = [sddm-astronaut];
}

22
modules/core/security.nix Normal file
View File

@@ -0,0 +1,22 @@
_: {
security = {
rtkit.enable = true;
polkit = {
enable = true;
extraConfig = ''
polkit.addRule(function(action, subject) {
if ( subject.isInGroup("users") && (
action.id == "org.freedesktop.login1.reboot" ||
action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
action.id == "org.freedesktop.login1.power-off" ||
action.id == "org.freedesktop.login1.power-off-multiple-sessions"
))
{ return polkit.Result.YES; }
})
'';
};
pam.services.swaylock = {
text = ''auth include login '';
};
};
}

57
modules/core/services.nix Normal file
View File

@@ -0,0 +1,57 @@
{ profile, ... }: {
# Services to start
services = {
libinput.enable = true; # Input Handling
fstrim.enable = true; # SSD Optimizer
gvfs.enable = true; # For Mounting USB & More
openssh = {
enable = true; # Enable SSH
settings = {
PermitRootLogin = "no"; # Prevent root from SSH login
PasswordAuthentication = true; #Users can SSH using kb and password
KbdInteractiveAuthentication = true;
};
ports = [ 22 ];
};
blueman.enable = true; # Bluetooth Support
tumbler.enable = true; # Image/video preview
gnome.gnome-keyring.enable = true;
smartd = {
enable =
if profile == "vm"
then false
else true;
autodetect = true;
};
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
extraConfig.pipewire."92-low-latency" = {
"context.properties" = {
"default.clock.rate" = 48000;
"default.clock.quantum" = 256;
"default.clock.min-quantum" = 256;
"default.clock.max-quantum" = 256;
};
};
extraConfig.pipewire-pulse."92-low-latency" = {
context.modules = [
{
name = "libpipewire-module-protocol-pulse";
args = {
pulse.min.req = "256/48000";
pulse.default.req = "256/48000";
pulse.max.req = "256/48000";
pulse.min.quantum = "256/48000";
pulse.max.quantum = "256/48000";
};
}
];
};
};
};
}

73
modules/core/starfish.nix Normal file
View File

@@ -0,0 +1,73 @@
{ ... }: {
programs = {
starship = {
enable = false;
settings = {
add_newline = false;
buf = {
symbol = " ";
};
c = {
symbol = " ";
};
directory = {
read_only = " 󰌾";
};
docker_context = {
symbol = " ";
};
fossil_branch = {
symbol = " ";
};
git_branch = {
symbol = " ";
};
golang = {
symbol = " ";
};
hg_branch = {
symbol = " ";
};
hostname = {
ssh_symbol = " ";
};
lua = {
symbol = " ";
};
memory_usage = {
symbol = "󰍛 ";
};
meson = {
symbol = "󰔷 ";
};
nim = {
symbol = "󰆥 ";
};
nix_shell = {
symbol = " ";
};
nodejs = {
symbol = " ";
};
ocaml = {
symbol = " ";
};
package = {
symbol = "󰏗 ";
};
python = {
symbol = " ";
};
rust = {
symbol = " ";
};
swift = {
symbol = " ";
};
zig = {
symbol = " ";
};
};
};
};
}

20
modules/core/steam.nix Normal file
View File

@@ -0,0 +1,20 @@
{ pkgs, ... }: {
programs = {
steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
gamescopeSession.enable = true;
extraCompatPackages = [ pkgs.proton-ge-bin ];
};
gamescope = {
enable = true;
capSysNice = true;
args = [
"--rt"
"--expose-wayland"
];
};
};
}

59
modules/core/stylix.nix Normal file
View File

@@ -0,0 +1,59 @@
{ pkgs
, host
, ...
}:
let
inherit (import ../../hosts/${host}/variables.nix) stylixImage;
in
{
# Styling Options
stylix = {
enable = true;
image = stylixImage;
# base16Scheme = {
# base00 = "282936";
# base01 = "3a3c4e";
# base02 = "4d4f68";
# base03 = "626483";
# base04 = "62d6e8";
# base05 = "e9e9f4";
# base06 = "f1f2f8";
# base07 = "f7f7fb";
# base08 = "ea51b2";
# base09 = "b45bcf";
# base0A = "00f769";
# base0B = "ebff87";
# base0C = "a1efe4";
# base0D = "62d6e8";
# base0E = "b45bcf";
# base0F = "00f769";
# };
polarity = "dark";
opacity.terminal = 1.0;
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
size = 24;
};
fonts = {
monospace = {
package = pkgs.nerd-fonts.jetbrains-mono;
name = "JetBrains Mono";
};
sansSerif = {
package = pkgs.montserrat;
name = "Montserrat";
};
serif = {
package = pkgs.montserrat;
name = "Montserrat";
};
sizes = {
applications = 12;
terminal = 15;
desktop = 11;
popups = 12;
};
};
};
}

View File

@@ -0,0 +1,8 @@
{ username, ... }: {
services.syncthing = {
enable = false;
user = "${username}";
dataDir = "/home/${username}";
configDir = "/home/${username}/.config/syncthing";
};
}

38
modules/core/system.nix Normal file
View File

@@ -0,0 +1,38 @@
{ host, ... }:
let
inherit (import ../../hosts/${host}/variables.nix) consoleKeyMap;
in
{
nix = {
settings = {
download-buffer-size = 200000000;
auto-optimise-store = true;
experimental-features = [
"nix-command"
"flakes"
];
substituters = [ "https://hyprland.cachix.org" ];
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
};
};
time.timeZone = "Europe/Warsaw";
i18n.defaultLocale = "pl_PL.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "pl_PL.UTF-8";
LC_IDENTIFICATION = "pl_PL.UTF-8";
LC_MEASUREMENT = "pl_PL.UTF-8";
LC_MONETARY = "pl_PL.UTF-8";
LC_NAME = "pl_PL.UTF-8";
LC_NUMERIC = "pl_PL.UTF-8";
LC_PAPER = "pl_PL.UTF-8";
LC_TELEPHONE = "pl_PL.UTF-8";
LC_TIME = "pl_PL.UTF-8";
};
environment.variables = {
NIXOS_OZONE_WL = "1";
ZANEYOS_VERSION = "2.4";
ZANEYOS = "true";
};
console.keyMap = "${consoleKeyMap}";
system.stateVersion = "23.11"; # Do not change!
}

21
modules/core/thunar.nix Normal file
View File

@@ -0,0 +1,21 @@
{ host
, pkgs
, ...
}:
let
inherit (import ../../hosts/${host}/variables.nix) thunarEnable;
in
{
programs = {
thunar = {
enable = thunarEnable;
plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman
];
};
};
environment.systemPackages = with pkgs; [
ffmpegthumbnailer # Need For Video / Image Preview
];
}

45
modules/core/user.nix Normal file
View File

@@ -0,0 +1,45 @@
{ pkgs
, inputs
, username
, host
, profile
, ...
}:
let
inherit (import ../../hosts/${host}/variables.nix) gitUsername;
in
{
imports = [ inputs.home-manager.nixosModules.home-manager ];
home-manager = {
useUserPackages = true;
useGlobalPkgs = false;
backupFileExtension = "backup";
extraSpecialArgs = { inherit inputs username host profile; };
users.${username} = {
imports = [ ./../home ];
home = {
username = "${username}";
homeDirectory = "/home/${username}";
stateVersion = "23.11";
};
};
};
users.mutableUsers = true;
users.users.${username} = {
isNormalUser = true;
description = "${gitUsername}";
extraGroups = [
"adbusers"
"docker" #access to docker as non-root
"libvirtd" #Virt manager/QEMU access
"lp"
"networkmanager"
"scanner"
"wheel" #subdo access
"vboxusers" #Virtual Box
];
shell = pkgs.zsh;
ignoreShellProgramCheck = true;
};
nix.settings.allowed-users = [ "${username}" ];
}

View File

@@ -0,0 +1,29 @@
{ pkgs, ... }: {
# Only enable either docker or podman -- Not both
virtualisation = {
docker = {
enable = true;
};
podman.enable = false;
libvirtd = {
enable = true;
};
virtualbox.host = {
enable = false;
enableExtensionPack = true;
};
};
programs = {
virt-manager.enable = false;
};
environment.systemPackages = with pkgs; [
virt-viewer # View Virtual Machines
lazydocker
docker-client
];
}

13
modules/core/xserver.nix Normal file
View File

@@ -0,0 +1,13 @@
{ host, ... }:
let
inherit (import ../../hosts/${host}/variables.nix) keyboardLayout;
in
{
services.xserver = {
enable = false;
xkb = {
layout = "${keyboardLayout}";
variant = "";
};
};
}

View File

@@ -0,0 +1,19 @@
{ lib
, pkgs
, config
, ...
}:
with lib;
let
cfg = config.drivers.amdgpu;
in
{
options.drivers.amdgpu = {
enable = mkEnableOption "Enable AMD Drivers";
};
config = mkIf cfg.enable {
systemd.tmpfiles.rules = [ "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}" ];
services.xserver.videoDrivers = [ "amdgpu" ];
};
}

View File

@@ -0,0 +1,12 @@
{ ...
}:
{
imports = [
./amd-drivers.nix
./intel-drivers.nix
./local-hardware-clock.nix
./nvidia-drivers.nix
./nvidia-prime-drivers.nix
./vm-guest-services.nix
];
}

View File

@@ -0,0 +1,25 @@
{ lib
, pkgs
, config
, ...
}:
with lib; let
cfg = config.drivers.intel;
in
{
options.drivers.intel = {
enable = mkEnableOption "Enable Intel Graphics Drivers";
};
config = mkIf cfg.enable {
# OpenGL
hardware.graphics = {
extraPackages = with pkgs; [
intel-media-driver
vaapiIntel
vaapiVdpau
libvdpau-va-gl
];
};
};
}

View File

@@ -0,0 +1,16 @@
{ lib
, pkgs
, config
, ...
}:
with lib;
let
cfg = config.local.hardware-clock;
in
{
options.local.hardware-clock = {
enable = mkEnableOption "Change Hardware Clock To Local Time";
};
config = mkIf cfg.enable { time.hardwareClockInLocalTime = true; };
}

View File

@@ -0,0 +1,40 @@
{ lib
, pkgs
, config
, ...
}:
with lib;
let
cfg = config.drivers.nvidia;
in
{
options.drivers.nvidia = {
enable = mkEnableOption "Enable Nvidia Drivers";
};
config = mkIf cfg.enable {
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
powerManagement.enable = false;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
};
}

View File

@@ -0,0 +1,36 @@
{ lib
, pkgs
, config
, ...
}:
with lib;
let
cfg = config.drivers.nvidia-prime;
in
{
options.drivers.nvidia-prime = {
enable = mkEnableOption "Enable Nvidia Prime Hybrid GPU Offload";
intelBusID = mkOption {
type = types.str;
default = "PCI:1:0:0";
};
nvidiaBusID = mkOption {
type = types.str;
default = "PCI:0:2:0";
};
};
config = mkIf cfg.enable {
hardware.nvidia = {
prime = {
offload = {
enable = true;
enableOffloadCmd = true;
};
# Make sure to use the correct Bus ID values for your system!
intelBusId = "${cfg.intelBusID}";
nvidiaBusId = "${cfg.nvidiaBusID}";
};
};
};
}

View File

@@ -0,0 +1,20 @@
{ lib
, pkgs
, config
, ...
}:
with lib;
let
cfg = config.vm.guest-services;
in
{
options.vm.guest-services = {
enable = mkEnableOption "Enable Virtual Machine Guest Services";
};
config = mkIf cfg.enable {
services.qemuGuest.enable = true;
services.spice-vdagentd.enable = true;
services.spice-webdavd.enable = false; #Causes navfs2 build failure invalid neon version 9-12-25
};
}

View File

@@ -0,0 +1,30 @@
{ lib, ... }: {
programs.alacritty =
let
font_family = lib.mkForce "Maple Mono NF";
in
{
enable = true;
settings = {
font = {
normal = {
family = font_family;
style = "Regular";
};
bold = {
family = font_family;
style = "Bold";
};
italic = {
family = font_family;
style = "Italic";
};
bold_italic = {
family = font_family;
style = "Bold Italic";
};
size = 15;
};
};
};
}

107
modules/home/amfora.nix Normal file
View File

@@ -0,0 +1,107 @@
_: {
home.file = {
".config/amfora/config.toml".text = ''
[a-general]
home = "gemini://gem.zaney.org"
color = true
ansi = true
bullets = true
show_link = false
scrollbar = "never"
auto_redirect = false
http = 'brave'
search = "gemini://gus.guru/search"
max_width = 140
page_max_size = 2097152 # 2 MiB
page_max_time = 10
highlight_code = true
highlight_style = "dracula"
downloads = '~/Downloads/'
underline = true
[auth]
[auth.certs]
[auth.keys]
[commands]
[keybindings]
bind_bottom = ":"
bind_quit = "Q"
bind_reload = "R"
bind_back = "h"
bind_forward = "l"
bind_moveup = "k"
bind_movedown = "j"
bind_moveleft = "H"
bind_moveright = "L"
bind_next_tab = "J"
bind_prev_tab = "K"
bind_edit = "o"
bind_new_tab = "O"
bind_close_tab = "q"
bind_save = "S"
bind_home = "Ctrl-h"
bind_bookmarks = "b"
bind_add_bookmark = "B"
bind_copy_page_url = "c"
bind_copy_target_url = "C"
bind_search = "/"
bind_next_match = "n"
bind_prev_match = "N"
[url-handlers]
[url-prompts]
[cache]
max_size = 0 # Size in bytes
max_pages = 30 # The maximum number of pages the cache will store
timeout = 1800 # 30 mins
[proxies]
[subscriptions]
popup = true
update_interval = 1800 # 30 mins
workers = 3
entries_per_page = 20
header = true
[theme]
bg = "#282a36"
tab_num = "#bd93f9"
tab_divider = "#f8f8f2"
bottombar_label = "#bd93f9"
bottombar_text = "#8be9fd"
bottombar_bg = "#44475a"
scrollbar = "#44475a"
hdg_1 = "#bd93f9"
hdg_2 = "#7cafc2"
hdg_3 = "#a16946"
amfora_link = "#ff79c6"
foreign_link = "#ffb86c"
link_number = "#8be9fd"
regular_text = "#f8f8f2"
quote_text = "#f1fa8c"
preformatted_text = "#ffb86c"
list_text = "#f8f8f2"
btn_bg = "#44475a"
btn_text = "#f8f8f2"
dl_choice_modal_bg = "#6272a4"
dl_choice_modal_text = "#f8f8f2"
dl_modal_bg = "#6272a4"
dl_modal_text = "#f8f8f2"
info_modal_bg = "#6272a4"
info_modal_text = "#f8f8f2"
error_modal_bg = "#ff5555"
error_modal_text = "#f8f8f2"
yesno_modal_bg = "#6272a4"
yesno_modal_text = "#f8f8f2"
tofu_modal_bg = "#6272a4"
tofu_modal_text = "#f8f8f2"
subscription_modal_bg = "#6272a4"
subscription_modal_text = "#f8f8f2"
input_modal_bg = "#6272a4"
input_modal_text = "#f8f8f2"
input_modal_field_bg = "#44475a"
input_modal_field_text = "#f8f8f2"
bkmk_modal_bg = "#6272a4"
bkmk_modal_text = "#f8f8f2"
bkmk_modal_label = "#f8f8f2"
bkmk_modal_field_bg = "#44475a"
bkmk_modal_field_text = "#f8f8f2"
'';
};
}

22
modules/home/bash.nix Normal file
View File

@@ -0,0 +1,22 @@
{ profile, ... }: {
programs.bash = {
enable = false;
enableCompletion = true;
initExtra = ''
fastfetch
if [ -f $HOME/.bashrc-personal ]; then
source $HOME/.bashrc-personal
fi
'';
shellAliases = {
sv = "sudo nvim";
fr = "nh os switch --hostname ${profile}";
fu = "nh os switch --hostname ${profile} --update";
zu = "sh <(curl -L https://gitlab.com/Zaney/zaneyos/-/releases/latest/download/install-zaneyos.sh)";
ncg = "nix-collect-garbage --delete-old && sudo nix-collect-garbage -d && sudo /run/current-system/bin/switch-to-configuration boot";
v = "nvim";
cat = "bat";
".." = "cd ..";
};
};
}

View File

@@ -0,0 +1,20 @@
{ pkgs, ... }: {
home.packages = with pkgs; [ bash ];
home.file."./.bashrc-personal".text = ''
# This file allows you to define your own aliases, functions, etc
# below are just some examples of what you can use this file for
#!/usr/bin/env bash
# Set defaults
#
#export EDITOR="nvim"
#export VISUAL="nvim"
#alias c="clear"
#eval "$(zoxide init bash)"
#eval "$(oh-my-posh init bash --config $HOME/.config/powerlevel10k_rainbow.omp.json)"
'';
}

26
modules/home/bat.nix Normal file
View File

@@ -0,0 +1,26 @@
{ pkgs
, lib
, ...
}: {
programs.bat = {
enable = true;
config = {
pager = "less -FR";
# other styles available and cane be combined
# style = "numbers,changes,headers,rule,grid";
style = "full";
# Bat has other thems as well
# ansi,Catppuccin,base16,base16-256,GitHub,Nord,etc
theme = lib.mkForce "Dracula";
};
extraPackages = with pkgs.bat-extras; [
batman
batpipe
batgrep
];
};
home.sessionVariables = {
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
MANROFFOPT = "-c";
};
}

35
modules/home/bottom.nix Normal file
View File

@@ -0,0 +1,35 @@
{ ... }: {
programs.bottom = {
enable = true;
settings = {
enable_gpu = true;
theme = "nord";
flags.group_processes = true;
row = [
{
ratio = 2;
child = [
{ type = "cpu"; }
{ type = "temp"; }
];
}
{
ratio = 2;
child = [
{ type = "network"; }
];
}
{
ratio = 3;
child = [
{
type = "proc";
ratio = 1;
default = true;
}
];
}
];
};
};
}

22
modules/home/btop.nix Normal file
View File

@@ -0,0 +1,22 @@
{ pkgs, ... }: {
programs.btop = {
enable = true;
package = pkgs.btop.override {
rocmSupport = true;
cudaSupport = true;
};
settings = {
vim_keys = true;
rounded_corners = true;
proc_tree = true;
show_gpu_info = "on";
show_uptime = true;
show_coretemp = true;
cpu_sensor = "auto";
show_disks = true;
only_physical = true;
io_mode = true;
io_graph_combined = false;
};
};
}

43
modules/home/cava.nix Normal file
View File

@@ -0,0 +1,43 @@
{ config, ... }: {
programs.cava = {
enable = true;
settings = {
general = {
bar_spacing = 1;
bar_width = 2;
frame_rate = 60;
};
color = {
#gradient = 1;
#gradient_color_1 = "'#011f30'";
#gradient_color_2 = "'#09465b'";
#gradient_color_3 = "'#045a93'";
#gradient_color_4 = "'#00aa00'";
#gradient_color_5 = "'#ffff00'";
#gradient_color_6 = "'#cc8033'";
#gradient_color_7 = "'#aa0000'";
#gradient_color_8 = "'#ff00ff'";
# Old config
#gradient = 1;
#gradient_color_1 = "'#8bd5ca'";
#gradient_color_2 = "'#91d7e3'";
#gradient_color_3 = "'#7dc4e4'";
#gradient_color_4 = "'#8aadf4'";
#gradient_color_5 = "'#c6a0f6'";
#gradient_color_6 = "'#f5bde6'";
#gradient_color_7 = "'#ee99a0'";
#gradient_color_8 = "'#ed8796'";
# Dracula
gradient = 1;
gradient_color_1 = "'#8BE9FD'";
gradient_color_2 = "'#9AEDFE'";
gradient_color_3 = "'#CAA9FA'";
gradient_color_4 = "'#BD93F9'";
gradient_color_5 = "'#FF92D0'";
gradient_color_6 = "'#FF79C6'";
gradient_color_7 = "'#FF6E67'";
gradient_color_8 = "'#FF5555'";
};
};
};
}

70
modules/home/default.nix Normal file
View File

@@ -0,0 +1,70 @@
{ host, ... }:
let
inherit (import ../../hosts/${host}/variables.nix)
alacrittyEnable
ghosttyEnable
tmuxEnable
waybarChoice
weztermEnable
vscodeEnable
helixEnable
doomEmacsEnable
;
in
{
imports = [
./amfora.nix
./bash.nix
./bashrc-personal.nix
./bat.nix
./btop.nix
./bottom.nix
./cava.nix
./emoji.nix
./eza.nix
./fastfetch
./fzf.nix
./gh.nix
./git.nix
./gtk.nix
./htop.nix
./hyprland
./kitty.nix
./lazygit.nix
./obs-studio.nix
./nvf.nix
./obs-studio.nix
./rofi
./qt.nix
./scripts
./scripts/gemini-cli.nix
#./starship.nix
#./starship-ddubs-1.nix
./stylix.nix
./swappy.nix
./swaync.nix
./tealdeer.nix
./virtmanager.nix
waybarChoice
./wlogout
./xdg.nix
./yazi
./zoxide.nix
./zsh
]
++ (if helixEnable then [ ./evil-helix.nix ] else [ ])
++ (if vscodeEnable then [ ./vscode.nix ] else [ ])
++ (
if doomEmacsEnable then
[
./editors/doom-emacs-install.nix
./editors/doom-emacs.nix
]
else
[ ]
)
++ (if weztermEnable then [ ./wezterm.nix ] else [ ])
++ (if ghosttyEnable then [ ./ghostty.nix ] else [ ])
++ (if tmuxEnable then [ ./tmux.nix ] else [ ])
++ (if alacrittyEnable then [ ./alacritty.nix ] else [ ]);
}

View File

@@ -0,0 +1,78 @@
{ pkgs, ... }:
let
doom-icon = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/jeetelongname/doom-banners/master/splashes/doom/doom-emacs-color2.svg";
sha256 = "1xxi5ra1z8njsqaqiaq96wyn1sc967l42kvjzbji1zrjj8za6bgq";
};
in
{
# 1. Create a script to install Doom Emacs
home.packages = [
(pkgs.writeShellScriptBin "get-doom" ''
#!/usr/bin/env bash
set -e
# --- Icons ---
ICON_CHECK=""
ICON_INFO=""
ICON_ROCKET="🚀"
# --- Helper Functions ---
print_status() {
echo
echo "--- $ICON_INFO $1 ---"
}
print_success() {
echo "--- $ICON_CHECK $1 ---"
}
print_banner() {
echo "==============================="
echo " Doom Emacs Installer $ICON_ROCKET"
echo "==============================="
}
# --- Main Script ---
print_banner
EMACSDIR="$HOME/.emacs.d"
if [ -d "$EMACSDIR" ]; then
print_success "Doom Emacs is already installed."
exit 0
fi
print_status "Cloning Doom Emacs..."
git clone --depth 1 https://github.com/doomemacs/doomemacs "$EMACSDIR"
print_success "Doom Emacs cloned."
print_status "Running Doom install..."
"$EMACSDIR/bin/doom" install
print_success "Doom install complete."
print_status "Running doom sync..."
"$EMACSDIR/bin/doom" sync
print_success "Doom sync complete."
echo
print_success "All done! Doom Emacs is ready to use."
'')
];
# 2. Add the bin directory to the PATH
home.sessionPath = [
"$HOME/.emacs.d/bin"
];
# 3. Create a desktop file
xdg.desktopEntries.doom-emacs = {
name = "Doom Emacs";
comment = "A configuration framework for GNU Emacs";
exec = "emacs";
icon = doom-icon;
terminal = false;
type = "Application";
categories = [ "Development" "TextEditor" ];
};
}

View File

@@ -0,0 +1,162 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
emacs-gtk
git
lazygit
ripgrep
libtool
cmake
pkg-config
# Spell checking
hunspell
hunspellDicts.en_US
hunspellDicts.en_AU
hunspellDicts.es_ES
# LSP servers
clang-tools # C/C++ LSP
nil # Nix LSP
];
home.file.".doom.d/init.el".text = ''
;;; init.el -*- lexical-binding: t; -*-
(doom!
:completion
(company +auto)
(vertico +icons)
:ui
doom
doom-dashboard
doom-quit
hl-todo
modeline
nav-flash
ophints
(popup +defaults)
(ligatures +extra)
tabs
treemacs
vi-tilde-fringe
window-select
:editor
(evil +everywhere)
file-templates
fold
multiple-cursors
snippets
word-wrap
:emacs
(dired +icons)
electric
(ibuffer +icons)
(undo +tree)
vc
:term
vterm
:checkers
(syntax +flymake)
(spell +flyspell)
grammar
:tools
(eval +overlay)
(lookup +docsets)
lsp
(magit +forge)
pdf
tree-sitter
:lang
bash
(c +lsp)
css
docker
html
(json +lsp)
markdown
(nix +tree-sitter +lsp)
toml
yaml
:config
(default +bindings +smartparens))
'';
home.file.".doom.d/config.el".text = ''
;;; config.el -*- lexical-binding: t; -*-
(setq doom-theme 'doom-one)
(setq display-line-numbers-type 'relative)
(setq nerd-icons-font-family "JetBrainsMono Nerd Font")
;; Git configuration
(after! magit
;; Set default git editor to emacsclient
(setq with-editor-emacsclient-executable "emacsclient")
;; Show word-granularity differences within diff hunks
(setq magit-diff-refine-hunk t)
;; Auto-refresh magit buffers
(setq magit-refresh-status-buffer t))
;; Lazygit integration
(defun my/lazygit ()
"Open lazygit in a terminal."
(interactive)
(if (fboundp 'vterm)
(let ((default-directory (magit-toplevel)))
(vterm "*lazygit*")
(vterm-send-string "lazygit")
(vterm-send-return))
(async-shell-command "lazygit" "*lazygit*")))
;; LSP configuration
(after! lsp-mode
(setq lsp-signature-auto-activate t
lsp-signature-render-documentation t
lsp-completion-provider :company-capf
lsp-idle-delay 0.1))
;; Nix LSP (nil) configuration
(with-eval-after-load 'lsp-nix-nil
(setq lsp-nix-nil-auto-eval-inputs t))
;; Company completion settings
(after! company
(setq company-idle-delay 0.2
company-minimum-prefix-length 1
company-tooltip-align-annotations t
company-require-match 'never))
;; Spell checking configuration
(after! ispell
(setq ispell-program-name "hunspell")
(setq ispell-local-dictionary "en_US")
(setq ispell-local-dictionary-alist
'(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8))))
;; Git keybindings
(map! :leader
(:prefix-map ("g" . "git")
:desc "Magit status" "g" #'magit-status
:desc "Magit dispatch" "d" #'magit-dispatch
:desc "Magit file dispatch" "f" #'magit-file-dispatch
:desc "Magit blame" "b" #'magit-blame-addition
:desc "Git time machine" "t" #'git-timemachine-toggle
:desc "Lazygit" "l" #'my/lazygit
:desc "Git stage file" "s" #'magit-stage-file
:desc "Git unstage file" "u" #'magit-unstage-file))
'';
home.file.".doom.d/packages.el".text = ''
;;; packages.el -*- lexical-binding: t; -*-
;; Git-related packages
(package! git-timemachine)
'';
}

1853
modules/home/emoji.nix Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,89 @@
{ pkgs, ... }:
let
enableEvilHelix = true; # Set to true to enable the configuration
in
{
home.packages = with pkgs; (
if enableEvilHelix
then [
evil-helix
cmake-language-server
jsonnet-language-server
luaformatter
lua-language-server
marksman
taplo
nil
jq-lsp
vscode-langservers-extracted
bash-language-server
awk-language-server
vscode-extensions.llvm-vs-code-extensions.vscode-clangd
clang-tools
docker-compose-language-service
docker-compose
docker-language-server
typescript-language-server
]
else [ ]
);
home.file.".config/helix/languages.toml".text =
if enableEvilHelix
then ''
[language-server.nil]
command = "nil"
[language-server.lua]
command = "lua-language-server"
[language-server.json]
command = "vscode-json-languageserver"
[language-server.markdown]
command = "marksman"
''
else "";
home.file.".config/helix/config.toml".text =
if enableEvilHelix
then ''
theme = "catppuccin_mocha"
#theme = "ao"
[editor]
evil = true
end-of-line-diagnostics = "hint"
auto-pairs = true
mouse = true
middle-click-paste = true
shell = ["zsh", "-c"]
line-number = "absolute"
auto-completion = true
path-completion = true
auto-info = true
color-modes = true
popup-border = "all"
clipboard-provider = "wayland"
indent-heuristic = "hybrid"
[editor.statusline]
left = ["mode", "spinner"]
center = ["file-absolute-path", "total-line-numbers", "read-only-indicator", "file-modification-indicator"]
right = ["diagnostics", "selections", "position", "file-encoding", "file-line-ending", "file-type"]
separator = ""
mode.normal = "NORMAL"
mode.insert = "INSERT"
mode.select = "SELECT"
[editor.lsp]
enable = true
display-messages = true
display-progress-messages = true
[editor.inline-diagnostics]
cursor-line = "hint"
other-lines = "hint"
''
else "";
}

30
modules/home/eza.nix Normal file
View File

@@ -0,0 +1,30 @@
# Eza is a ls replacement
{
programs.eza = {
enable = true;
icons = "auto";
enableBashIntegration = true;
enableZshIntegration = true;
enableFishIntegration = true;
git = true;
extraOptions = [
"--group-directories-first"
"--no-quotes"
"--header" # Show header row
"--git-ignore"
"--icons=always"
# "--time-style=long-iso" # ISO 8601 extended format for time
"--classify" # append indicator (/, *, =, @, |)
"--hyperlink" # make paths clickable in some terminals
];
};
# Aliases to make `ls`, `ll`, `la` use eza
home.shellAliases = {
ls = "eza";
lt = "eza --tree --level=2";
ll = "eza -lh --no-user --long";
la = "eza -lah ";
tree = "eza --tree ";
};
}

View File

@@ -0,0 +1,136 @@
{
programs.fastfetch = {
enable = true;
settings = {
display = {
color = {
keys = "35";
output = "95";
};
separator = " ";
};
logo = {
source = ./nixos.png;
type = "kitty-direct";
height = 10;
width = 20;
padding = {
top = 2;
left = 2;
};
};
modules = [
"break"
{
type = "os";
key = "OS";
keyColor = "31";
}
{
type = "command";
key = " ZaneyOS ";
keyColor = "31";
text = "echo v$" + "{ZANEYOS_VERSION}";
}
{
type = "kernel";
key = " ";
keyColor = "31";
}
{
type = "packages";
key = " 󰏖 ";
keyColor = "31";
}
{
type = "shell";
key = " ";
keyColor = "31";
}
"break"
{
type = "wm";
key = "WM ";
keyColor = "32";
}
{
type = "wmtheme";
key = " 󰉼 ";
keyColor = "32";
}
{
type = "icons";
key = " 󰀻 ";
keyColor = "32";
}
{
type = "cursor";
key = " ";
keyColor = "32";
}
{
type = "terminal";
key = " ";
keyColor = "32";
}
{
type = "terminalfont";
key = " ";
keyColor = "32";
}
"break"
{
type = "host";
format = "{5} {1} Type {2}";
key = "PC ";
keyColor = "33";
}
{
type = "cpu";
format = "{1} ({3}) @ {7} GHz";
key = " ";
keyColor = "33";
}
{
type = "gpu";
format = "{1} {2} @ {12} GHz";
key = " 󰢮 ";
keyColor = "33";
}
{
type = "memory";
key = " ";
keyColor = "33";
}
{
type = "disk";
key = " 󰋊 ";
keyColor = "33";
}
{
type = "monitor";
key = " ";
keyColor = "33";
}
{
type = "player";
key = " 󰥠 ";
keyColor = "33";
}
{
type = "media";
key = " 󰝚 ";
keyColor = "33";
}
"break"
{
type = "uptime";
key = " Uptime ";
}
];
};
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

37
modules/home/fzf.nix Normal file
View File

@@ -0,0 +1,37 @@
# Fzf is a general-purpose command-line fuzzy finder.
{ config
, lib
, ...
}:
let
accent = "#" + config.lib.stylix.colors.base0D;
foreground = "#" + config.lib.stylix.colors.base05;
muted = "#" + config.lib.stylix.colors.base03;
in
{
programs.fzf = {
enable = true;
enableZshIntegration = true;
colors = lib.mkForce {
"fg+" = accent;
"bg+" = "-1";
"fg" = foreground;
"bg" = "-1";
"prompt" = muted;
"pointer" = accent;
};
defaultOptions = [
"--margin=1"
"--layout=reverse"
"--border=none"
"--info='hidden'"
"--header=''"
"--prompt='/ '"
"-i"
"--no-bold"
"--bind='enter:execute(nvim {})'"
"--preview='bat --style=numbers --color=always --line-range :500 {}'"
"--preview-window=right:60%:wrap"
];
};
}

6
modules/home/gh.nix Normal file
View File

@@ -0,0 +1,6 @@
{ ... }:
{
programs = {
gh.enable = true;
};
}

100
modules/home/ghostty.nix Normal file
View File

@@ -0,0 +1,100 @@
{ pkgs, ... }:
let
# A recent issue 7/7/2025 w/ghostty causes it to hang or respond slowly
# This is a workaround until a fix is released
myGhostty = pkgs.ghostty.overrideAttrs (_: {
preBuild = ''
shopt -s globstar
sed -i 's/^const xev = @import("xev");$/const xev = @import("xev").Epoll;/' **/*.zig
shopt -u globstar
'';
});
in
{
programs.ghostty = {
enable = true;
package = myGhostty; # to fix a but in current builds of ghostty
#package = pkgs.ghostty;
};
home.file."./.config/ghostty/config".text = ''
#theme = Aura
theme = Dracula
#theme = Aardvark Blue
#theme = GruvboxDarkHard
adjust-cell-height = 10%
window-theme = dark
window-height = 32
window-width = 110
background-opacity = 0.95
background-blur-radius = 60
selection-background = #2d3f76
selection-foreground = #c8d3f5
cursor-style = bar
mouse-hide-while-typing = true
# keybindings
# Copy/Paste
keybind = ctrl+shift+c=copy_to_clipboard
keybind = ctrl+shift+v=paste_from_clipboard
keybind = alt+s>r=reload_config
keybind = alt+s>x=close_surface
keybind = alt+s>n=new_window
# tabs
keybind = alt+s>c=new_tab
keybind = alt+s>shift+l=next_tab
keybind = alt+s>shift+h=previous_tab
keybind = alt+s>comma=move_tab:-1
keybind = alt+s>period=move_tab:1
# quick tab switch
keybind = alt+s>1=goto_tab:1
keybind = alt+s>2=goto_tab:2
keybind = alt+s>3=goto_tab:3
keybind = alt+s>4=goto_tab:4
keybind = alt+s>5=goto_tab:5
keybind = alt+s>6=goto_tab:6
keybind = alt+s>7=goto_tab:7
keybind = alt+s>8=goto_tab:8
keybind = alt+s>9=goto_tab:9
# split
keybind = alt+s>\=new_split:right
keybind = alt+s>-=new_split:down
keybind = alt+s>j=goto_split:bottom
keybind = alt+s>k=goto_split:top
keybind = alt+s>h=goto_split:left
keybind = alt+s>l=goto_split:right
keybind = alt+s>z=toggle_split_zoom
keybind = alt+s>e=equalize_splits
# other
#copy-on-select = clipboard
font-size = 12
#font-family = JetBrainsMono Nerd Font Mono
#font-family-bold = JetBrainsMono NFM Bold
#font-family-bold-italic = JetBrainsMono NFM Bold Italic
#font-family-italic = JetBrainsMono NFM Italic
font-family = BerkeleyMono Nerd Font
#font-family = Iosevka Nerd Font
# font-family = SFMono Nerd Font
title = "GhosTTY"
wait-after-command = false
shell-integration = detect
window-save-state = always
gtk-single-instance = true
unfocused-split-opacity = 0.5
quick-terminal-position = center
shell-integration-features = cursor,sudo
'';
}

33
modules/home/git.nix Normal file
View File

@@ -0,0 +1,33 @@
{ host, ... }:
let
inherit (import ../../hosts/${host}/variables.nix) gitUsername gitEmail;
in
{
programs.git = {
enable = true;
userName = "${gitUsername}";
userEmail = "${gitEmail}";
extraConfig = {
# FOSS-friendly settings
push.default = "simple"; # Match modern push behavior
credential.helper = "cache --timeout=7200";
init.defaultBranch = "main"; # Set default new branches to 'main'
log.decorate = "full"; # Show branch/tag info in git log
log.date = "iso"; # ISO 8601 date format
# Conflict resolution style for readable diffs
merge.conflictStyle = "diff3";
};
# Optional: FOSS-friendly Git aliases
aliases = {
br = "branch --sort=-committerdate";
co = "checkout";
df = "diff";
com = "commit -a";
gs = "stash";
gp = "pull";
lg = "log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%d%Creset %s %C(green)(%cr)%C(bold blue) <%an>%Creset' --abbrev-commit";
st = "status";
};
};
}

16
modules/home/gtk.nix Normal file
View File

@@ -0,0 +1,16 @@
{ pkgs, ... }:
{
gtk = {
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
}

42
modules/home/htop.nix Normal file
View File

@@ -0,0 +1,42 @@
{ config, ... }: {
programs.htop = {
enable = true;
settings =
{
color_scheme = 6;
cpu_count_from_one = 0;
delay = 15;
fields = with config.lib.htop.fields; [
PID
USER
PRIORITY
NICE
M_SIZE
M_RESIDENT
M_SHARE
STATE
PERCENT_CPU
PERCENT_MEM
TIME
COMM
];
highlight_base_name = 1;
highlight_megabytes = 1;
highlight_threads = 1;
}
// (with config.lib.htop;
leftMeters [
(bar "AllCPUs2")
(bar "Memory")
(bar "Swap")
(text "Zram")
])
// (with config.lib.htop;
rightMeters [
(text "Tasks")
(text "LoadAverage")
(text "Uptime")
(text "Systemd")
]);
};
}

View File

@@ -0,0 +1,22 @@
{ ... }: {
wayland.windowManager.hyprland.settings = {
animations = {
enabled = true;
bezier = [
"wind, -1.05, 0.9, 0.1, 1.05"
"winIn, -1.1, 1.1, 0.1, 1.1"
"winOut, -1.3, -0.3, 0, 1"
"liner, 0, 1, 1, 1"
];
animation = [
"windows, 0, 6, wind, slide"
"windowsIn, 0, 6, winIn, slide"
"windowsOut, 0, 5, winOut, slide"
"windowsMove, 0, 5, wind, slide"
"border, 0, 1, liner"
"fade, 0, 10, default"
"workspaces, 0, 5, wind"
];
};
};
}

View File

@@ -0,0 +1,25 @@
{ ... }: {
wayland.windowManager.hyprland.settings = {
# name "Dynamic"
# credit https://github.com/mylinuxforwork/dotfiles
animations = {
enabled = true;
bezier = [
"wind, 0.05, 0.9, 0.1, 1.05"
"winIn, 0.1, 1.1, 0.1, 1.1"
"winOut, 0.3, -0.3, 0, 1"
"liner, 1, 1, 1, 1"
];
animation = [
"windows, 1, 6, wind, slide"
"windowsIn, 1, 6, winIn, slide"
"windowsOut, 1, 5, winOut, slide"
"windowsMove, 1, 5, wind, slide"
"border, 1, 1, liner"
"borderangle, 1, 30, liner, loop"
"fade, 1, 10, default"
"workspaces, 1, 5, wind"
];
};
};
}

View File

@@ -0,0 +1,37 @@
{ ... }: {
wayland.windowManager.hyprland.settings = {
# Name: END-4
# Credit: END-4 project https://github.com/end-4/dots-hyprland
animations = {
enabled = true;
bezier = [
"linear, 0, 0, 1, 1"
"md3_standard, 0.2, 0, 0, 1"
"md3_decel, 0.05, 0.7, 0.1, 1"
"md3_accel, 0.3, 0, 0.8, 0.15"
"overshot, 0.05, 0.9, 0.1, 1.1"
"crazyshot, 0.1, 1.5, 0.76, 0.92 "
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
"menu_decel, 0.1, 1, 0, 1"
"menu_accel, 0.38, 0.04, 1, 0.07"
"easeInOutCirc, 0.85, 0, 0.15, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutExpo, 0.16, 1, 0.3, 1"
"softAcDecel, 0.26, 0.26, 0.15, 1"
"md2, 0.4, 0, 0.2, 1 # use with .2s duration"
];
animation = [
"windows, 1, 3, md3_decel, popin 60%"
"windowsIn, 1, 3, md3_decel, popin 60%"
"windowsOut, 1, 3, md3_accel, popin 60%"
"border, 1, 10, default"
"fade, 1, 3, md3_decel"
"layersIn, 1, 3, menu_decel, slide"
"layersOut, 1, 1.6, menu_accel"
"fadeLayersIn, 1, 2, menu_decel"
"fadeLayersOut, 1, 4.5, menu_accel"
"workspaces, 1, 7, menu_decel, slide"
];
};
};
}

View File

@@ -0,0 +1,24 @@
{ ... }: {
wayland.windowManager.hyprland.settings = {
# name "moving"
# credit https://github.com/mylinuxforwork/dotfiles
animations = {
enabled = true;
bezier = [
"overshot, 0.05, 0.9, 0.1, 1.05"
"smoothOut, 0.5, 0, 0.99, 0.99"
"smoothIn, 0.5, -0.5, 0.68, 1.5"
];
animation = [
"windows, 1, 5, overshot, slide"
"windowsOut, 1, 3, smoothOut"
"windowsIn, 1, 3, smoothOut"
"windowsMove, 1, 4, smoothIn, slide"
"border, 1, 5, default"
"fade, 1, 5, smoothIn"
"fadeDim, 1, 5, smoothIn"
"workspaces, 1, 6, default"
];
};
};
}

View File

@@ -0,0 +1,106 @@
{ host, ... }:
let
inherit
(import ../../../hosts/${host}/variables.nix)
browser
terminal
;
in
{
wayland.windowManager.hyprland.settings = {
bind = [
"$modifier,Return,exec,${terminal}"
"$modifier,K,exec,list-keybinds"
"$modifier SHIFT,Return,exec,rofi-launcher"
"$modifier ,R,exec,rofi-launcher"
"$modifier SHIFT,W,exec,web-search"
"$modifier ALT,W,exec,wallsetter"
"$modifier SHIFT,N,exec,swaync-client -rs"
"$modifier,W,exec,${browser}"
"$modifier,Y,exec,kitty -e yazi"
"$modifier,E,exec,emopicker9000"
"$modifier,S,exec,screenshootin"
"$modifier,D,exec,discord"
"$modifier,O,exec,obs"
"$modifier,C,exec,hyprpicker -a"
"$modifier,G,exec,gimp"
"$modifier shift,T,exec,pypr toggle term"
"$modifier,T,exec, thunar"
"$modifier,M,exec,pavucontrol"
"$modifier,Q,killactive,"
"$modifier,P,pseudo,"
"$modifier,V,exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy"
"$modifier SHIFT,I,togglesplit,"
"$modifier,F,fullscreen,"
"$modifier SHIFT,F,togglefloating,"
"$modifier ALT,F,workspaceopt, allfloat"
"$modifier SHIFT,C,exit,"
"$modifier SHIFT,left,movewindow,l"
"$modifier SHIFT,right,movewindow,r"
"$modifier SHIFT,up,movewindow,u"
"$modifier SHIFT,down,movewindow,d"
"$modifier SHIFT,h,movewindow,l"
"$modifier SHIFT,l,movewindow,r"
"$modifier SHIFT,k,movewindow,u"
"$modifier SHIFT,j,movewindow,d"
"$modifier ALT, left, swapwindow,l"
"$modifier ALT, right, swapwindow,r"
"$modifier ALT, up, swapwindow,u"
"$modifier ALT, down, swapwindow,d"
"$modifier ALT, 43, swapwindow,l"
"$modifier ALT, 46, swapwindow,r"
"$modifier ALT, 45, swapwindow,u"
"$modifier ALT, 44, swapwindow,d"
"$modifier,left,movefocus,l"
"$modifier,right,movefocus,r"
"$modifier,up,movefocus,u"
"$modifier,down,movefocus,d"
"$modifier,h,movefocus,l"
"$modifier,l,movefocus,r"
"$modifier,k,movefocus,u"
"$modifier,j,movefocus,d"
"$modifier,1,workspace,1"
"$modifier,2,workspace,2"
"$modifier,3,workspace,3"
"$modifier,4,workspace,4"
"$modifier,5,workspace,5"
"$modifier,6,workspace,6"
"$modifier,7,workspace,7"
"$modifier,8,workspace,8"
"$modifier,9,workspace,9"
"$modifier,0,workspace,10"
"$modifier SHIFT,SPACE,movetoworkspace,special"
"$modifier,SPACE,togglespecialworkspace"
"$modifier SHIFT,1,movetoworkspace,1"
"$modifier SHIFT,2,movetoworkspace,2"
"$modifier SHIFT,3,movetoworkspace,3"
"$modifier SHIFT,4,movetoworkspace,4"
"$modifier SHIFT,5,movetoworkspace,5"
"$modifier SHIFT,6,movetoworkspace,6"
"$modifier SHIFT,7,movetoworkspace,7"
"$modifier SHIFT,8,movetoworkspace,8"
"$modifier SHIFT,9,movetoworkspace,9"
"$modifier SHIFT,0,movetoworkspace,10"
"$modifier CONTROL,right,workspace,e+1"
"$modifier CONTROL,left,workspace,e-1"
"$modifier,mouse_down,workspace, e+1"
"$modifier,mouse_up,workspace, e-1"
"ALT,Tab,cyclenext"
"ALT,Tab,bringactivetotop"
",XF86AudioRaiseVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
",XF86AudioLowerVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
" ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
",XF86AudioPlay, exec, playerctl play-pause"
",XF86AudioPause, exec, playerctl play-pause"
",XF86AudioNext, exec, playerctl next"
",XF86AudioPrev, exec, playerctl previous"
",XF86MonBrightnessDown,exec,brightnessctl set 5%-"
",XF86MonBrightnessUp,exec,brightnessctl set +5%"
];
bindm = [
"$modifier, mouse:272, movewindow"
"$modifier, mouse:273, resizewindow"
];
};
}

View File

@@ -0,0 +1,17 @@
{ host, ... }:
let
inherit (import ../../../hosts/${host}/variables.nix) animChoice;
in
{
imports = [
animChoice
./binds.nix
./env.nix
./exec-once.nix
./hypridle.nix
./hyprland.nix
./hyprlock.nix
./pyprland.nix
./windowrules.nix
];
}

Some files were not shown because too many files have changed in this diff Show More