przystosowanie konfiguracji pod siebie

This commit is contained in:
2025-09-18 16:01:58 +02:00
parent be171552d0
commit 0908e9eed6
165 changed files with 1799 additions and 11964 deletions

View File

@@ -1,66 +0,0 @@
# 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

@@ -1,23 +0,0 @@
# 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

@@ -1,128 +0,0 @@
# 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

@@ -1,305 +0,0 @@
# 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

@@ -1,294 +0,0 @@
# 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

@@ -1,276 +0,0 @@
# 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

@@ -1,85 +0,0 @@
# 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

@@ -1,122 +0,0 @@
# 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

@@ -1,164 +0,0 @@
# 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

@@ -1,163 +0,0 @@
# 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

@@ -1,91 +0,0 @@
# 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

@@ -1,59 +0,0 @@
# 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

@@ -1,61 +0,0 @@
# 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

@@ -1,67 +0,0 @@
# 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

@@ -1,66 +0,0 @@
# 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

@@ -1,93 +0,0 @@
# 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

@@ -1,88 +0,0 @@
# 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

@@ -1,41 +0,0 @@
# 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

@@ -1,110 +0,0 @@
# 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

120
flake.lock generated
View File

@@ -75,11 +75,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1757736223,
"narHash": "sha256-4yhWsAvejkPRNdx9eKAVOQt1t8vI6qF/kITCRSIIiK8=",
"lastModified": 1757995413,
"narHash": "sha256-vaU/7/PXoym6vnspGxhR29V9klGe9iy9zmp6x7w38f8=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "a73f8d6c29ea0e05c0dc570d4047e0aed1edd00d",
"rev": "4ae8996b3e139926c784acd22824cde46cd28833",
"type": "gitlab"
},
"original": {
@@ -105,44 +105,7 @@
"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": 1756770412,
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "4524271976b625a4a605beefd893f270620fd751",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"stylix",
@@ -203,11 +166,11 @@
]
},
"locked": {
"lastModified": 1757784838,
"narHash": "sha256-6aHo1++bAFdW1z+0tfuxM9EmxHvon90mHo8/+izXMcY=",
"lastModified": 1757997814,
"narHash": "sha256-F+1aoG+3NH4jDDEmhnDUReISyq6kQBBuktTUqCUWSiw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "6e28513cf2ee9a985c339fcef24d44f43d23456b",
"rev": "5820376beb804de9acf07debaaff1ac84728b708",
"type": "github"
},
"original": {
@@ -233,21 +196,6 @@
"type": "github"
}
},
"mnw": {
"locked": {
"lastModified": 1756659871,
"narHash": "sha256-v6Rh4aQ6RKjM2N02kK9Usn0Ix7+OY66vNpeklc1MnGE=",
"owner": "Gerg-L",
"repo": "mnw",
"rev": "ed6cc3e48557ba18266e598a5ebb6602499ada16",
"type": "github"
},
"original": {
"owner": "Gerg-L",
"repo": "mnw",
"type": "github"
}
},
"nix-flatpak": {
"locked": {
"lastModified": 1739444422,
@@ -266,11 +214,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1757487488,
"narHash": "sha256-zwE/e7CuPJUWKdvvTCB7iunV4E/+G0lKfv4kk/5Izdg=",
"lastModified": 1757745802,
"narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ab0f3607a6c7486ea22229b92ed2d355f1482ee0",
"rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1",
"type": "github"
},
"original": {
@@ -305,30 +253,6 @@
"type": "github"
}
},
"nvf": {
"inputs": {
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"mnw": "mnw",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1757773905,
"narHash": "sha256-lM1K3cJsPQyiSGI3rE/F7u02fA/JYBsinMN49IQCY1s=",
"owner": "notashelf",
"repo": "nvf",
"rev": "7e74ee604a7c18dda21e6a809720ad37ab5bae43",
"type": "github"
},
"original": {
"owner": "notashelf",
"repo": "nvf",
"type": "github"
}
},
"prismlauncher-cracked": {
"inputs": {
"libnbtplusplus": "libnbtplusplus",
@@ -356,7 +280,6 @@
"home-manager": "home-manager",
"nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs",
"nvf": "nvf",
"prismlauncher-cracked": "prismlauncher-cracked",
"stylix": "stylix"
}
@@ -368,13 +291,13 @@
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_2",
"flake-parts": "flake-parts",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"
],
"nur": "nur",
"systems": "systems_2",
"systems": "systems",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
@@ -382,11 +305,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1757360005,
"narHash": "sha256-VwzdFEQCpYMU9mc7BSQGQe5wA1MuTYPJnRc9TQCTMcM=",
"lastModified": 1757956156,
"narHash": "sha256-f0W7qbsCqpi6swQ5w8H+0YrAbNwsHgCFDkNRMTJjqrE=",
"owner": "danth",
"repo": "stylix",
"rev": "834a743c11d66ea18e8c54872fbcc72ce48bc57f",
"rev": "0ce0103b498bb22f899ed8862d8d7f9503ed9cdb",
"type": "github"
},
"original": {
@@ -410,21 +333,6 @@
"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": {

View File

@@ -14,11 +14,6 @@
inputs.nixpkgs.follows = "nixpkgs";
};
nvf = {
url = "github:notashelf/nvf";
inputs.nixpkgs.follows = "nixpkgs";
};
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
@@ -30,15 +25,6 @@
};
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 =
@@ -55,20 +41,22 @@
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
mkNixosConfig =
gpuProfile:
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs;
inherit username;
inherit host;
inherit profile;
inherit system;
};
modules = [
./profiles/${gpuProfile}
nix-flatpak.nixosModules.nix-flatpak
];
};
modules = [
./profiles/${gpuProfile}
nix-flatpak.nixosModules.nix-flatpak
];
};
in
{
nixosConfigurations = {

View File

@@ -1,4 +1,5 @@
{ ... }: {
{ ... }:
{
imports = [
./hardware.nix
./host-packages.nix

View File

@@ -1,14 +1,27 @@
# 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, ... }:
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ "dm-snapshot" ];
boot.initrd.luks.devices = {
cryptroot = {
@@ -19,23 +32,30 @@
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/e3ac1df3-ce8f-44cd-901f-a8cd3f6955b7";
fsType = "ext4";
};
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."/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" ];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/783D-A507";
fsType = "vfat";
options = [
"fmask=0022"
"dmask=0022"
];
};
swapDevices = [ ];
swapDevices = lib.mkForce [
{
device = "/dev/disk/by-uuid/8e8cc3dc-5754-4757-a2d7-53e6a2c3b5a4";
}
];
# 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

View File

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

View File

@@ -9,17 +9,6 @@
# 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";
@@ -57,26 +46,21 @@
# 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
# Add new images to ~/garandos/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;
#stylixImage = ../../wallpapers/DW_Pacts.jpg;
#stylixImage = ../../wallpapers/edward-elric-fullmetal-alchemist.jpg;
#stylixImage = ../../wallpapers/fire-nation.jpg;
#stylixImage = ../../wallpapers/four-elements.jpg;
#stylixImage = ../../wallpapers/Grounded_Wallpaper_4K.jpg;
#stylixImage = ../../wallpapers/jablon.jpg;
#stylixImage = ../../wallpapers/rammstein-log-two.jpg;
#stylixImage = ../../wallpapers/rammstein-log-one.jpg;
#stylixImage = ../../wallpapers/rammstein-log-three.jpg;
#stylixImage = ../../wallpapers/rammstein-one.jpg;
# Set Waybar
# Available Options:
@@ -84,7 +68,7 @@
#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
# Throwback to GarandOS v1.0
#waybarChoice = ../../modules/home/waybar/waybar-jerry.nix;
# Very colorful and bright colors
#waybarChoice = ../../modules/home/waybar/waybar-nekodyke.nix;
@@ -98,8 +82,8 @@
# 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-def.nix;
animChoice = ../../modules/home/hyprland/animations-end4.nix;
#animChoice = ../../modules/home/hyprland/animations-dynamic.nix;
#animChoice = ../../modules/home/hyprland/animations-moving.nix;

View File

@@ -1,4 +1,5 @@
{ ... }: {
{ ... }:
{
imports = [
./hardware.nix
./host-packages.nix

View File

@@ -1,35 +1,51 @@
# 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, ... }:
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports =
[
(modulesPath + "/installer/scan/not-detected.nix")
];
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"nvme"
"usbhid"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
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 = lib.mkForce [
{
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 = [ ];
device = "/dev/vg0/swap";
}
];
# 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

View File

@@ -1,4 +1,5 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
audacity
discord

View File

@@ -9,17 +9,6 @@
# 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";
@@ -59,10 +48,6 @@
# 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.
@@ -70,14 +55,18 @@
# 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;
# Add new images to ~/garandos/wallpapers
stylixImage = ../../wallpapers/attack-on-titan-mikasa-ackerman.jpg;
#stylixImage = ../../wallpapers/DW_Pacts.jpg;
#stylixImage = ../../wallpapers/edward-elric-fullmetal-alchemist.jpg;
#stylixImage = ../../wallpapers/fire-nation.jpg;
#stylixImage = ../../wallpapers/four-elements.jpg;
#stylixImage = ../../wallpapers/Grounded_Wallpaper_4K.jpg;
#stylixImage = ../../wallpapers/jablon.jpg;
#stylixImage = ../../wallpapers/rammstein-log-two.jpg;
#stylixImage = ../../wallpapers/rammstein-log-one.jpg;
#stylixImage = ../../wallpapers/rammstein-log-three.jpg;
#stylixImage = ../../wallpapers/rammstein-one.jpg;
# Set Waybar
# Available Options:
@@ -85,7 +74,7 @@
#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
# Throwback to GarandOS v1.0
#waybarChoice = ../../modules/home/waybar/waybar-jerry.nix;
# Very colorful and bright colors
#waybarChoice = ../../modules/home/waybar/waybar-nekodyke.nix;

BIN
img/1.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

BIN
img/2.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

BIN
img/3.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

BIN
img/4.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -5,7 +5,9 @@
kernelPackages = pkgs.linuxPackages_zen;
kernelModules = [ "v4l2loopback" ];
extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
kernel.sysctl = { "vm.max_map_count" = 2147483642; };
kernel.sysctl = {
"vm.max_map_count" = 2147483642;
};
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
# Appimage Support

View File

@@ -4,7 +4,6 @@
...
}:
let
# Import the host-specific variables.nix
vars = import ../../hosts/${host}/variables.nix;
in
{
@@ -16,11 +15,9 @@ in
./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)
./greetd.nix
./security.nix
./services.nix
./steam.nix

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }: {
{ pkgs, ... }:
{
xdg.portal = {
enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-hyprland ];
@@ -7,24 +8,12 @@
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"
"org.vinegarhq.Sober"
"io.github.flattool.Warehouse"
"com.github.tchx84.Flatseal"
];
# Optional: Automatically update Flatpaks when you run nixos-rebuild swit ch
update.onActivation = true;
};
};

View File

@@ -1,4 +1,5 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
fonts = {
packages = with pkgs; [
dejavu_fonts

View File

@@ -1,7 +1,9 @@
{ pkgs
, username
, ...
}: {
{
pkgs,
username,
...
}:
{
services.greetd = {
enable = true;
#vt = 3;

View File

@@ -1,7 +1,8 @@
{ pkgs
, host
, options
, ...
{
pkgs,
host,
options,
...
}:
let
inherit (import ../../hosts/${host}/variables.nix) hostId;

View File

@@ -1,7 +1,9 @@
{ pkgs
, username
, ...
}: {
{
pkgs,
username,
...
}:
{
programs.nh = {
enable = true;
clean = {

View File

@@ -6,13 +6,9 @@
}:
{
programs = {
neovim = {
enable = true;
defaultEditor = true;
};
firefox.enable = false; # Firefox is not installed by default
nano.enable = true;
hyprland = {
enable = true; # set this so desktop file is created
enable = true;
withUWSM = false;
};
dconf.enable = true;
@@ -33,9 +29,9 @@
# Hyprland systeminfo QT (Optional)
#inputs.hyprsysteminfo.packages.${pkgs.system}.default
discord
amfora # Fancy Terminal Browser For Gemini Protocol
appimage-run # Needed For AppImage Support
librewolf # Brave Browser
brightnessctl # For Screen Brightness Control
cliphist # Clipboard manager using rofi menu
cmatrix # Matrix Movie Effect In Terminal
@@ -78,10 +74,33 @@
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
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
nextcloud-client
plexamp
bitwarden-desktop
tutanota-desktop
slack
ungoogled-chromium
anki-bin
onlyoffice-bin
freetube
mattermost-desktop
kdePackages.kdenlive
wineWowPackages.waylandFull # wine64
lutris
space-cadet-pinball
dex
exercism
tty-solitaire
cmatrix
cowsay
sl
fortune
ookla-speedtest
kronometer
inputs.prismlauncher-cracked.packages.${system}.default
];
}

View File

@@ -1,72 +0,0 @@
# 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];
}

View File

@@ -1,4 +1,5 @@
{ profile, ... }: {
{ profile, ... }:
{
# Services to start
services = {
libinput.enable = true; # Input Handling
@@ -8,7 +9,7 @@
enable = true; # Enable SSH
settings = {
PermitRootLogin = "no"; # Prevent root from SSH login
PasswordAuthentication = true; #Users can SSH using kb and password
PasswordAuthentication = true; # Users can SSH using kb and password
KbdInteractiveAuthentication = true;
};
ports = [ 22 ];
@@ -18,10 +19,7 @@
gnome.gnome-keyring.enable = true;
smartd = {
enable =
if profile == "vm"
then false
else true;
enable = if profile == "vm" then false else true;
autodetect = true;
};
pipewire = {

View File

@@ -1,4 +1,5 @@
{ ... }: {
{ ... }:
{
programs = {
starship = {
enable = false;

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }: {
{ pkgs, ... }:
{
programs = {
steam = {
enable = true;
@@ -16,5 +17,7 @@
"--expose-wayland"
];
};
gamemode.enable = true;
};
}

View File

@@ -1,6 +1,7 @@
{ pkgs
, host
, ...
{
pkgs,
host,
...
}:
let
inherit (import ../../hosts/${host}/variables.nix) stylixImage;

View File

@@ -1,4 +1,5 @@
{ username, ... }: {
{ username, ... }:
{
services.syncthing = {
enable = false;
user = "${username}";

View File

@@ -30,8 +30,8 @@ in
};
environment.variables = {
NIXOS_OZONE_WL = "1";
ZANEYOS_VERSION = "2.4";
ZANEYOS = "true";
GARANDOS_VERSION = "1.0";
GARANDOS = "true";
};
console.keyMap = "${consoleKeyMap}";
system.stateVersion = "23.11"; # Do not change!

View File

@@ -1,14 +1,12 @@
{ host
, pkgs
, ...
{
host,
pkgs,
...
}:
let
inherit (import ../../hosts/${host}/variables.nix) thunarEnable;
in
{
programs = {
thunar = {
enable = thunarEnable;
enable = true;
plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman

View File

@@ -1,9 +1,11 @@
{ pkgs
, inputs
, username
, host
, profile
, ...
{
pkgs,
inputs,
username,
host,
profile,
system,
...
}:
let
inherit (import ../../hosts/${host}/variables.nix) gitUsername;
@@ -13,8 +15,16 @@ in
home-manager = {
useUserPackages = true;
useGlobalPkgs = false;
backupFileExtension = "backup";
extraSpecialArgs = { inherit inputs username host profile; };
backupFileExtension = "backup-nixos";
extraSpecialArgs = {
inherit
inputs
username
host
profile
system
;
};
users.${username} = {
imports = [ ./../home ];
home = {
@@ -30,15 +40,16 @@ in
description = "${gitUsername}";
extraGroups = [
"adbusers"
"docker" #access to docker as non-root
"libvirtd" #Virt manager/QEMU access
"docker" # access to docker as non-root
"libvirtd" # Virt manager/QEMU access
"lp"
"networkmanager"
"scanner"
"wheel" #subdo access
"vboxusers" #Virtual Box
"wheel" # subdo access
"vboxusers" # Virtual Box
"gamemode"
];
shell = pkgs.zsh;
shell = pkgs.bash;
ignoreShellProgramCheck = true;
};
nix.settings.allowed-users = [ "${username}" ];

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }: {
{ pkgs, ... }:
{
# Only enable either docker or podman -- Not both
virtualisation = {
docker = {

View File

@@ -1,7 +1,8 @@
{ lib
, pkgs
, config
, ...
{
lib,
pkgs,
config,
...
}:
with lib;
let

View File

@@ -1,4 +1,5 @@
{ ...
{
...
}:
{
imports = [

View File

@@ -1,9 +1,11 @@
{ lib
, pkgs
, config
, ...
{
lib,
pkgs,
config,
...
}:
with lib; let
with lib;
let
cfg = config.drivers.intel;
in
{

View File

@@ -1,7 +1,8 @@
{ lib
, pkgs
, config
, ...
{
lib,
pkgs,
config,
...
}:
with lib;
let

View File

@@ -1,7 +1,7 @@
{ lib
, pkgs
, config
, ...
{
lib,
config,
...
}:
with lib;
let
@@ -18,7 +18,7 @@ in
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
powerManagement.enable = false;
powerManagement.enable = true;
# 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;

View File

@@ -1,7 +1,8 @@
{ lib
, pkgs
, config
, ...
{
lib,
pkgs,
config,
...
}:
with lib;
let

View File

@@ -1,7 +1,8 @@
{ lib
, pkgs
, config
, ...
{
lib,
pkgs,
config,
...
}:
with lib;
let
@@ -15,6 +16,6 @@ in
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
};
services.spice-webdavd.enable = false; # Causes navfs2 build failure invalid neon version 9-12-25
};
}

View File

@@ -1,30 +0,0 @@
{ 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;
};
};
};
}

View File

@@ -0,0 +1,115 @@
{ profile, ... }:
{
programs.bash = {
shellAliases = {
# NixOS aliases
upd = "nh os switch --hostname ${profile}";
upg = "nh os switch --hostname ${profile} --update";
upd-bt = "nh os boot --hostname ${profile}";
upd-ts = "nh os test --hostname ${profile}";
upd-bd = "nh os build --hostname ${profile}";
ncg = "nix-collect-garbage --delete-old && sudo nix-collect-garbage -d && sudo /run/current-system/bin/switch-to-configuration boot";
# Development aliases
srvenv = "source .venv/bin/activate";
"..srvenv" = "source ../.venv/bin/activate";
pm = "uv run manage.py";
bbr = "bun --bun run";
mkgidf = "git add . --intent-to-add . && git diff > git-diff.txt";
snano = "sudo nano";
zed = "MANGOHUD=0 /home/garand_plg/.local/bin/zed";
# System aliases
flush-codium = "sudo killall codium && sudo rm -rf ~/.config/VSCodium/Cache && sudo rm -rf ~/.config/VSCodium/CachedData";
kys = "shutdown now";
ookla = "speedtest";
snala = "sudo nala";
# Navigation aliases
"~" = "cd ~";
".." = "cd ..";
"..." = "cd ../..";
"...." = "cd ../../..";
"....." = "cd ../../../..";
# Modifies commands
cat = "bat";
cp = "cp -i";
mv = "mv -i";
rm = "trash -v";
mkdir = "mkdir -p";
ps = "ps auxf";
ping = "ping -c 10";
less = "less -R";
cls = "clear";
multitail = "multitail --no-repeat -c";
freshclam = "sudo freshclam";
# Alias"s for multiple directory listing commands
la = "eza -alh --icons"; # show hidden files
ls = "eza -aF --icons --color=always"; # add colors and file type extensions
lx = "eza -lh --icons --sort=extension"; # sort by extension
lk = "eza -lh --icons --sort=size --reverse"; # sort by size
lc = "eza -lh --icons --sort=changed"; # sort by change time
lu = "eza -lh --icons --sort=accessed"; # sort by access time
lr = "eza -lh --icons --recurse"; # recursive ls
lt = "eza -lh --icons --sort=modified"; # sort by date
lm = "eza -alh --icons | more"; # pipe through "more"
lw = "eza -xh --icons"; # wide listing format
ll = "eza -lh --icons"; # long listing format
labc = "eza -lah --icons --sort=name"; # alphabetical sort
lf = "eza -lh --icons | grep -v '^d'"; # files only (przybliżenie)
ldir = "eza -lh --icons --only-dirs"; # directories only
lla = "eza -alh --icons"; # List and Hidden Files
las = "eza -a --icons"; # Hidden Files
lls = "eza -lh --icons"; # List
# chmod commands
mx = "chmod a+x";
"000" = "chmod -R 000";
"644" = "chmod -R 644";
"666" = "chmod -R 666";
"755" = "chmod -R 755";
"777" = "chmod -R 777";
# Search command line history
h = "history | grep ";
# Search running processes
p = "ps aux | grep ";
topcpu = "/bin/ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10";
# Search files in the current folder
f = "find . | grep ";
# Count all files (recursively) in the current folder
countfiles = "for t in files links directories; do echo \`find . -type \${t:0:1} | wc -l\` \$t; done 2> /dev/null";
# Alias"s to show disk space and space used in a folder
diskspace = "du -S | sort -n -r |more";
folders = "du -h --max-depth=1";
folderssort = "find . -maxdepth 1 -type d -print0 | xargs -0 du -sk | sort -rn";
tree = "tree -CAhF --dirsfirst";
treed = "tree -CAFd";
mountedinfo = "df -hT";
# Show all logs in /var/log
logs = "sudo find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f";
# fix kitty ssh connection
kssh = "kitty +kitten ssh";
docker-clean = "docker container prune -f ; docker image prune -f ; docker network prune -f ; docker volume prune -f";
# Remove a directory and all files
rmd = "/bin/rm --recursive --force --verbose ";
# Fun aliases
pasjans = "ttysolitaire -p 10 --no-background-color";
fc = "fortune | cowsay";
# Network aliases
ssh-server = "kssh garand_plg@192.168.1.156 -i ~/.ssh/hp-t640-homeserver";
};
};
}

View File

@@ -0,0 +1,146 @@
_: {
programs.bash = {
bashrcExtra = ''
# Quick directory creation and navigation
mkcd() {
mkdir -p "$1" && cd "$1"
}
# Extract various archive formats
extract() {
for archive in "$@"; do
if [ -f "$archive" ]; then
case "$archive" in
*.tar.bz2) tar xvjf "$archive" ;;
*.tar.gz) tar xvzf "$archive" ;;
*.bz2) bunzip2 "$archive" ;;
*.rar) unrar x "$archive" ;;
*.gz) gunzip "$archive" ;;
*.tar) tar xvf "$archive" ;;
*.tbz2) tar xvjf "$archive" ;;
*.tgz) tar xvzf "$archive" ;;
*.zip) unzip "$archive" ;;
*.Z) uncompress "$archive" ;;
*.7z) 7z x "$archive" ;;
*) echo "don't know how to extract '$archive'..." ;;
esac
else
echo "'$archive' is not a valid file!"
fi
done
}
# Find files quickly
ff() {
find . -name "*$1*" -type f
}
# Find directories quickly
fd() {
find . -name "*$1*" -type d
}
# IP address lookup
alias whatismyip="whatsmyip"
function whatsmyip () {
# Internal IP Lookup.
if command -v ip &> /dev/null; then
echo -n "Internal IP: "
ip addr show wlan0 | grep "inet " | awk '{print $2}' | cut -d/ -f1
else
echo -n "Internal IP: "
ifconfig wlan0 | grep "inet " | awk '{print $2}'
fi
# External IP Lookup
echo -n "External IP: "
curl -4 ifconfig.me
}
# Searches for text in all files in the current folder
ftext() {
# -i case-insensitive
# -I ignore binary files
# -H causes filename to be printed
# -r recursive search
# -n causes line number to be printed
# optional: -F treat search term as a literal, not a regular expression
# optional: -l only print filenames and not the matching lines ex. grep -irl "$1" *
grep -iIHrn --color=always "$1" . | less -r
}
# Copy file with a progress bar
cpp() {
set -e
strace -q -ewrite cp -- "$1" "$2" 2>&1 |
awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size="$(stat -c '%s' "$1")" count=0
}
# Copy and go to the directory
cpg() {
if [ -d "$2" ]; then
cp "$1" "$2" && cd "$2"
else
cp "$1" "$2"
fi
}
# Move and go to the directory
mvg() {
if [ -d "$2" ]; then
mv "$1" "$2" && cd "$2"
else
mv "$1" "$2"
fi
}
# Create and go to the directory
mkdirg() {
mkdir -p "$1"
cd "$1"
}
# Goes up a specified number of directories (i.e. up 4)
up() {
local d=""
limit=$1
for ((i = 1; i <= limit; i++)); do
d=$d/..
done
d=$(echo $d | sed 's/^\///')
if [ -z "$d" ]; then
d=..
fi
cd $d
}
# Automatically do an ls after each cd, z, or zoxide
cd ()
{
if [ -n "$1" ]; then
builtin cd "$@" && ls
else
builtin cd ~ && ls
fi
}
# Returns the last 2 fields of the working directory
pwdtail() {
pwd | awk -F/ '{nlast = NF -1;print $nlast"/"$NF}'
}
'';
};
}

View File

@@ -1,22 +1,9 @@
{ profile, ... }: {
_: {
programs.bash = {
enable = false;
enable = true;
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

@@ -1,20 +0,0 @@
{ 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)"
'';
}

View File

@@ -1,7 +1,9 @@
{ pkgs
, lib
, ...
}: {
{
pkgs,
lib,
...
}:
{
programs.bat = {
enable = true;
config = {

View File

@@ -1,4 +1,5 @@
{ ... }: {
{ ... }:
{
programs.bottom = {
enable = true;
settings = {

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }: {
{ pkgs, ... }:
{
programs.btop = {
enable = true;
package = pkgs.btop.override {
@@ -6,7 +7,6 @@
cudaSupport = true;
};
settings = {
vim_keys = true;
rounded_corners = true;
proc_tree = true;
show_gpu_info = "on";

View File

@@ -1,4 +1,5 @@
{ config, ... }: {
{ config, ... }:
{
programs.cava = {
enable = true;
settings = {

View File

@@ -1,21 +1,14 @@
{ host, ... }:
let
inherit (import ../../hosts/${host}/variables.nix)
alacrittyEnable
ghosttyEnable
tmuxEnable
waybarChoice
weztermEnable
vscodeEnable
helixEnable
doomEmacsEnable
;
inherit (import ../../hosts/${host}/variables.nix) waybarChoice;
in
{
imports = [
waybarChoice
./amfora.nix
./bash.nix
./bashrc-personal.nix
./bash-aliases.nix
./bash-functions.nix
./bat.nix
./btop.nix
./bottom.nix
@@ -31,40 +24,24 @@ in
./hyprland
./kitty.nix
./lazygit.nix
./librewolf.nix
./obs-studio.nix
./nvf.nix
./obs-studio.nix
./rofi
./qt.nix
./ssh.nix
./scripts
./scripts/gemini-cli.nix
#./starship.nix
#./starship-ddubs-1.nix
./starship.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 [ ]);
./vscode.nix
# ./zed.nix
];
}

View File

@@ -1,78 +0,0 @@
{ 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

@@ -1,162 +0,0 @@
{ 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)
'';
}

View File

@@ -1,4 +1,5 @@
{ ... }: {
{ ... }:
{
home.file.".config/.emoji".text = ''
😀 grinning face face smile happy joy :D grin
😃 grinning face with big eyes face happy joy haha :D :) smile funny

View File

@@ -1,89 +0,0 @@
{ 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 "";
}

View File

@@ -4,8 +4,6 @@
enable = true;
icons = "auto";
enableBashIntegration = true;
enableZshIntegration = true;
enableFishIntegration = true;
git = true;
extraOptions = [
@@ -19,12 +17,4 @@
"--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

@@ -1,3 +1,140 @@
# {
# programs.fastfetch = {
# enable = true;
# settings = {
# display = {
# color = {
# keys = "35";
# output = "95";
# };
# separator = " ➜ ";
# };
# logo = {
# source = ./garandos.png;
# type = "kitty-direct";
# height = 10;
# width = 20;
# padding = {
# top = 2;
# left = 2;
# };
# };
# modules = [
# "break"
# {
# type = "os";
# key = "OS";
# keyColor = "31";
# }
# {
# type = "command";
# key = " ├  GarandOS ";
# keyColor = "31";
# text = "echo v$" + "{GARANDOS_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 ";
# }
# ];
# };
# };
# }
{
programs.fastfetch = {
enable = true;
@@ -6,130 +143,178 @@
display = {
color = {
keys = "35";
output = "95";
output = "90";
};
separator = " ";
};
logo = {
source = ./nixos.png;
source = ./garandos.png;
type = "kitty-direct";
height = 10;
width = 20;
height = 15;
width = 30;
padding = {
top = 2;
left = 2;
top = 3;
left = 3;
};
};
modules = [
"break"
{
type = "os";
key = "OS";
keyColor = "31";
type = "custom";
format = "Hardware";
}
{
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 ";
key = " PC";
keyColor = "33";
}
{
type = "cpu";
format = "{1} ({3}) @ {7} GHz";
key = " ";
key = " ";
keyColor = "33";
}
{
type = "gpu";
format = "{1} {2} @ {12} GHz";
key = " 󰢮 ";
key = " ";
keyColor = "33";
}
{
type = "memory";
key = " ";
key = " 󰑭 ";
keyColor = "33";
}
{
type = "swap";
key = " ";
keyColor = "33";
}
{
type = "disk";
key = " 󰋊 ";
key = " 󰋊 ";
keyColor = "33";
}
{
type = "monitor";
key = " ";
key = " ";
keyColor = "33";
}
{
type = "player";
key = " 󰥠 ";
keyColor = "33";
}
{
type = "media";
key = " 󰝚 ";
keyColor = "33";
type = "custom";
format = "";
}
"break"
{
type = "uptime";
key = " Uptime ";
type = "custom";
format = "Software";
}
{
type = "os";
key = " OS";
keyColor = "31";
}
{
type = "command";
key = " ";
keyColor = "31";
text = "echo GarandOS v$" + "{GARANDOS_VERSION}";
}
{
type = "kernel";
key = " ";
keyColor = "31";
}
{
type = "packages";
key = " 󰏖 ";
keyColor = "31";
}
{
type = "shell";
key = " ";
keyColor = "31";
}
{
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";
}
{
type = "custom";
format = "";
}
"break"
{
type = "custom";
format = "Age / Uptime";
}
{
type = "command";
key = " IN";
text =
#bash
''
birth_install=$(stat -c %W /)
if [ "$birth_install" -gt 0 ]; then
echo "Installed $(date -d @"$birth_install" +"%Y-%m-%d")"
else
echo "Installation date unknown"
fi
'';
}
{
type = "command";
key = " ";
text =
#bash
''
birth_install=$(stat -c %W /)
current=$(date +%s)
delta=$((current - birth_install))
delta_days=$((delta / 86400))
echo $delta_days days
'';
}
{
type = "uptime";
key = " ";
}
{
type = "custom";
format = "";
}
"break"
];
};
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

View File

@@ -1,7 +1,8 @@
# Fzf is a general-purpose command-line fuzzy finder.
{ config
, lib
, ...
{
config,
lib,
...
}:
let
accent = "#" + config.lib.stylix.colors.base0D;
@@ -11,7 +12,7 @@ in
{
programs.fzf = {
enable = true;
enableZshIntegration = true;
enableBashIntegration = true;
colors = lib.mkForce {
"fg+" = accent;
"bg+" = "-1";
@@ -29,7 +30,7 @@ in
"--prompt='/ '"
"-i"
"--no-bold"
"--bind='enter:execute(nvim {})'"
"--bind='enter:execute(nano {})'"
"--preview='bat --style=numbers --color=always --line-range :500 {}'"
"--preview-window=right:60%:wrap"
];

View File

@@ -1,100 +0,0 @@
{ 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
'';
}

View File

@@ -1,42 +1,46 @@
{ config, ... }: {
{ 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;
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;
]
)
// (
with config.lib.htop;
rightMeters [
(text "Tasks")
(text "LoadAverage")
(text "Uptime")
(text "Systemd")
]);
]
);
};
}

View File

@@ -1,4 +1,5 @@
{ ... }: {
{ ... }:
{
wayland.windowManager.hyprland.settings = {
animations = {
enabled = true;

View File

@@ -1,4 +1,5 @@
{ ... }: {
{ ... }:
{
wayland.windowManager.hyprland.settings = {
# name "Dynamic"
# credit https://github.com/mylinuxforwork/dotfiles

View File

@@ -1,4 +1,5 @@
{ ... }: {
{ ... }:
{
wayland.windowManager.hyprland.settings = {
# Name: END-4
# Credit: END-4 project https://github.com/end-4/dots-hyprland

View File

@@ -1,4 +1,5 @@
{ ... }: {
{ ... }:
{
wayland.windowManager.hyprland.settings = {
# name "moving"
# credit https://github.com/mylinuxforwork/dotfiles

View File

@@ -1,7 +1,6 @@
{ host, ... }:
let
inherit
(import ../../../hosts/${host}/variables.nix)
inherit (import ../../../hosts/${host}/variables.nix)
browser
terminal
;
@@ -17,7 +16,6 @@ in
"$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"

View File

@@ -1,4 +1,5 @@
{ ... }: {
{ ... }:
{
wayland.windowManager.hyprland = {
settings = {
env = [
@@ -23,7 +24,7 @@
#"AQ_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1:/dev/card2"
"GDK_SCALE,1"
"QT_SCALE_FACTOR,1"
"EDITOR,nvim"
"EDITOR,nano"
# Set terminal and xdg_terminal_emulator to kitty
# To provent yazi from starting xterm when run from rofi menu
# You can set to your preferred terminal if you you like

View File

@@ -1,7 +1,6 @@
{ host, ... }:
let
inherit
(import ../../../hosts/${host}/variables.nix)
inherit (import ../../../hosts/${host}/variables.nix)
stylixImage
;
in

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 362 KiB

View File

@@ -1,11 +1,11 @@
{ host
, config
, pkgs
, ...
{
host,
config,
pkgs,
...
}:
let
inherit
(import ../../../hosts/${host}/variables.nix)
inherit (import ../../../hosts/${host}/variables.nix)
extraMonitorSettings
keyboardLayout
stylixImage
@@ -65,8 +65,8 @@ in
};
gestures = {
workspace_swipe = 1;
workspace_swipe_fingers = 3;
# workspace_swipe = 1;
# workspace_swipe_fingers = 3;
workspace_swipe_distance = 500;
workspace_swipe_invert = 1;
workspace_swipe_min_speed_to_force = 30;
@@ -82,7 +82,8 @@ in
gaps_out = 8;
border_size = 2;
resize_on_border = true;
"col.active_border" = "rgb(${config.lib.stylix.colors.base08}) rgb(${config.lib.stylix.colors.base0C}) 45deg";
"col.active_border" =
"rgb(${config.lib.stylix.colors.base08}) rgb(${config.lib.stylix.colors.base0C}) 45deg";
"col.inactive_border" = "rgb(${config.lib.stylix.colors.base01})";
};
@@ -95,7 +96,7 @@ in
disable_splash_rendering = true;
enable_swallow = false;
vfr = true; # Variable Frame Rate
vrr = 2; #Variable Refresh Rate Might need to set to 0 for NVIDIA/AQ_DRM_DEVICES
vrr = 2; # Variable Refresh Rate Might need to set to 0 for NVIDIA/AQ_DRM_DEVICES
# Screen flashing to black momentarily or going black when app is fullscreen
# Try setting vrr to 0
@@ -162,7 +163,9 @@ in
extraConfig = "
monitor=,preferred,auto,auto
monitor=Virtual-1,1920x1080@60,auto,1
${extraMonitorSettings}
${
extraMonitorSettings
}
# To enable blur on waybar uncomment the line below
# Thanks to SchotjeChrisman
#layerrule = blur,waybar

View File

@@ -1,4 +1,5 @@
{ username, ... }: {
{ username, ... }:
{
programs.hyprlock = {
enable = true;
settings = {

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }: {
{ pkgs, ... }:
{
home.packages = with pkgs; [ pyprland ];
home.file.".config/hypr/pyprland.toml".text = ''

View File

@@ -1,9 +1,10 @@
{host, ...}: let
inherit
(import ../../../hosts/${host}/variables.nix)
{ host, ... }:
let
inherit (import ../../../hosts/${host}/variables.nix)
extraMonitorSettings
;
in {
in
{
wayland.windowManager.hyprland = {
settings = {
windowrule = [

View File

@@ -1,229 +0,0 @@
#!/usr/bin/env bash
######################################
# Install script for zaneyos
# Author: Don Williams
# Date: June 27, 2005
#######################################
# Define colors
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
# Define log file
LOG_DIR="$(dirname "$0")"
LOG_FILE="${LOG_DIR}/install_$(date +"%Y-%m-%d_%H-%M-%S").log"
mkdir -p "$LOG_DIR"
exec > >(tee -a "$LOG_FILE") 2>&1
# Function to print a section header
print_header() {
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}${1} ${NC}"
echo -e "${GREEN}╚═══════════════════════════════════════════════════════════════════════╝${NC}"
}
# Function to print an error message
print_error() {
echo -e "${RED}Error: ${1}${NC}"
}
# Function to print a success banner
print_success_banner() {
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ zaneyos Installation Successful! ║${NC}"
echo -e "${GREEN}║ ║${NC}"
echo -e "${GREEN}║ Please reboot your system for changes to take full effect. ║${NC}"
echo -e "${GREEN}║ ║${NC}"
echo -e "${GREEN}╚═══════════════════════════════════════════════════════════════════════╝${NC}"
}
# Function to print a failure banner
print_failure_banner() {
echo -e "${RED}╔═══════════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${RED}║ zaneyos Installation Failed! ║${NC}"
echo -e "${RED}║ ║${NC}"
echo -e "${RED}║ Please review the log file for details: ║${NC}"
echo -e "${RED}${LOG_FILE}${NC}"
echo -e "${RED}║ ║${NC}"
echo -e "${RED}╚═══════════════════════════════════════════════════════════════════════╝${NC}"
}
print_header "Verifying System Requirements"
# Check for git
if ! command -v git &> /dev/null; then
print_error "Git is not installed."
echo -e "Please install git and pciutils are installed, then re-run the install script."
echo -e "Example: nix-shell -p git pciutils"
exit 1
fi
# Check for lspci (pciutils)
if ! command -v lspci &> /dev/null; then
print_error "pciutils is not installed."
echo -e "Please install git and pciutils, then re-run the install script."
echo -e "Example: nix-shell -p git pciutils"
exit 1
fi
if [ -n "$(grep -i nixos < /etc/os-release)" ]; then
echo -e "${GREEN}Verified this is NixOS.${NC}"
else
print_error "This is not NixOS or the distribution information is not available."
exit 1
fi
print_header "Initial Setup"
echo -e "Default options are in brackets []"
echo -e "Just press enter to select the default"
sleep 2
print_header "Ensure In Home Directory"
cd "$HOME" || exit 1
echo -e "${GREEN}Current directory: $(pwd)${NC}"
print_header "Hostname Configuration"
read -rp "Enter Your New Hostname: [ default ] " hostName
if [ -z "$hostName" ]; then
hostName="default"
fi
print_header "GPU Profile Detection"
# Attempt automatic detection
DETECTED_PROFILE=""
has_nvidia=false
has_intel=false
has_amd=false
has_vm=false
if lspci | grep -qi 'vga\|3d'; then
while read -r line; do
if echo "$line" | grep -qi 'nvidia'; then
has_nvidia=true
elif echo "$line" | grep -qi 'amd'; then
has_amd=true
elif echo "$line" | grep -qi 'intel'; then
has_intel=true
elif echo "$line" | grep -qi 'virtio\|vmware'; then
has_vm=true
fi
done < <(lspci | grep -i 'vga\|3d')
if $has_vm; then
DETECTED_PROFILE="vm"
elif $has_nvidia && $has_intel; then
DETECTED_PROFILE="hybrid"
elif $has_nvidia; then
DETECTED_PROFILE="nvidia"
elif $has_amd; then
DETECTED_PROFILE="amd"
elif $has_intel; then
DETECTED_PROFILE="intel"
fi
fi
# Handle detected profile or fall back to manual input
if [ -n "$DETECTED_PROFILE" ]; then
profile="$DETECTED_PROFILE"
echo -e "${GREEN}Detected GPU profile: $profile${NC}"
read -p "Correct? (Y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo -e "${RED}GPU profile not confirmed. Falling back to manual selection.${NC}"
profile="" # Clear profile to force manual input
fi
fi
# If profile is still empty (either not detected or not confirmed), prompt manually
if [ -z "$profile" ]; then
echo -e "${RED}Automatic GPU detection failed or no specific profile found.${NC}"
read -rp "Enter Your Hardware Profile (GPU)\nOptions:\n[ amd ]\nnvidia\nnvidia-laptop\nintel\nvm\nPlease type out your choice: " profile
if [ -z "$profile" ]; then
profile="amd"
fi
echo -e "${GREEN}Selected GPU profile: $profile${NC}"
fi
print_header "Backup Existing zaneyos (if any)"
backupname=$(date +"%Y-%m-%d-%H-%M-%S")
if [ -d "zaneyos" ]; then
echo -e "${GREEN}zaneyos exists, backing up to .config/zaneyos-backups folder.${NC}"
if [ -d ".config/zaneyos-backups" ]; then
echo -e "${GREEN}Moving current version of zaneyos to backups folder.${NC}"
mv "$HOME"/zaneyos .config/zaneyos-backups/"$backupname"
sleep 1
else
echo -e "${GREEN}Creating the backups folder & moving zaneyos to it.${NC}"
mkdir -p .config/zaneyos-backups
mv "$HOME"/zaneyos .config/zaneyos-backups/"$backupname"
sleep 1
fi
else
echo -e "${GREEN}Thank you for choosing zaneyos.${NC}"
echo -e "${GREEN}I hope you find your time here enjoyable!${NC}"
fi
print_header "Cloning zaneyos Repository"
git clone https://gitlab.com/dwilliam62/zaneyos.git --depth=1 ~/zaneyos
cd ~/zaneyos || exit 1
print_header "Configuring Host and Profile"
mkdir -p hosts/"$hostName"
cp hosts/default/*.nix hosts/"$hostName"
installusername=$(echo $USER)
git config --global user.name "$installusername"
git config --global user.email "$installusername@gmail.com"
git add .
git config --global --unset-all user.name
git config --global --unset-all user.email
sed -i "/^[[:space:]]*host[[:space:]]*=[[:space:]]*\"/ s/\"[^\"]*\"/\"$hostName\"/" ./flake.nix
sed -i "/^[[:space:]]*profile[[:space:]]*=[[:space:]]*\"/ s/\"[^\"]*\"/\"$profile\"/" ./flake.nix
print_header "Keyboard Layout Configuration"
read -rp "Enter your keyboard layout: [ us ] " keyboardLayout
if [ -z "$keyboardLayout" ]; then
keyboardLayout="us"
fi
sed -i "/^[[:space:]]*keyboardLayout[[:space:]]*=[[:space:]]*\"/ s/\"[^\"]*\"/\"$keyboardLayout\"/" ./hosts/$hostName/variables.nix
print_header "Console Keymap Configuration"
read -rp "Enter your console keymap: [ us ] " consoleKeyMap
if [ -z "$consoleKeyMap" ]; then
consoleKeyMap="us"
fi
sed -i "/^[[:space:]]*consoleKeyMap[[:space:]]*=[[:space:]]*\"/ s/\"[^\"]*\"/\"$consoleKeyMap\"/" ./hosts/$hostName/variables.nix
print_header "Username Configuration"
sed -i "/^[[:space:]]*username[[:space:]]*=[[:space:]]*\"/ s/\"[^\"]*\"/\"$installusername\"/" ./flake.nix
print_header "Generating Hardware Configuration -- Ignore ERROR: cannot access /bin"
sudo nixos-generate-config --show-hardware-config > ./hosts/$hostName/hardware.nix
print_header "Setting Nix Configuration"
NIX_CONFIG="experimental-features = nix-command flakes"
print_header "Initiating NixOS Build"
read -p "Ready to run initial build? (Y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo -e "${RED}Build cancelled.${NC}"
exit 1
fi
sudo nixos-rebuild boot --flake ~/zaneyos/#${profile}
# Check the exit status of the last command (nixos-rebuild)
if [ $? -eq 0 ]; then
print_success_banner
else
print_failure_banner
fi

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }: {
{ pkgs, ... }:
{
programs.kitty = {
enable = true;
package = pkgs.kitty;

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