9 Commits
Author SHA1 Message Date
alvinlollo c3597ce723 Add dotfiles file structure 2026-09-14 11:36:12 +10:00
alvinlollo 5bb5a413c2 Add missing aur packages not in packages.x86_64 2026-09-14 11:34:52 +10:00
alvinlollo ac497c0f92 Add end-4 hyprland dependecies post-install 2026-09-14 11:34:15 +10:00
alvinlollo 89544407d8 Add zsh config 2026-09-14 11:26:32 +10:00
alvinlollo 03270a1384 Add starfish for fish 2026-09-14 11:26:15 +10:00
alvinlollo dc15394417 Add end-4 dotfiles config 2026-09-14 11:25:38 +10:00
alvinlollo 208564537f Add fish config 2026-09-14 11:25:01 +10:00
alvinlollo 0ff9424868 Add Bat config 2026-09-14 11:24:54 +10:00
alvinlollo 66620a1ff9 Add Lazyvim config 2026-09-14 11:24:16 +10:00
59 changed files with 4624 additions and 5 deletions
+108 -1
View File
@@ -1,8 +1,32 @@
# Complete Guide to Creating a Custom Arch Linux ISO # Complete Guide to Creating a Custom Arch Linux ISO
DistroTube: https://www.youtube.com/watch?v=tSGGBbJBgvk&t=1228s DistroTube: <https://www.youtube.com/watch?v=tSGGBbJBgvk&t=1228s>
Dotfiles install file structure:
```bash
AlvinArch/
├── airootfs/
│ ├── etc/skel/
│ │ ├── .config/bat/ # bat + catppuccin theme
│ │ ├── .config/fish/ # 20 files, quickshell guard
│ │ ├── .config/nvim/ # LazyVim (14 files)
│ │ ├── .config/hypr/custom/ # 8 files (kdeconnectd + cursor only)
│ │ ├── .config/starship.toml
│ │ ├── .zshrc # adapted (no hardcoded paths)
│ │ └── .fzf.zsh
│ └── root/customize_airootfs.sh # pre-installs oh-my-zsh, lazy.nvim, plugins
├── localrepo/
│ ├── build-end4-deps.sh # non-interactive AUR build (all deps)
│ ├── end4-pkgbuilds/ # microtex-git, quickshell-git, bibata
│ ├── illogical-impulse-quickshell-git-*.pkg.tar.zst
│ ├── illogical-impulse-bibata-modern-classic-bin-*.pkg.tar.zst
│ └── update.sh # existing, regenerates repo db
└── packages.x86_64 # 420 packages (65+ end-4 deps added)
```
## Table of Contents ## Table of Contents
1. [Overview](#overview) 1. [Overview](#overview)
2. [Prerequisites](#prerequisites) 2. [Prerequisites](#prerequisites)
3. [Directory Structure](#directory-structure) 3. [Directory Structure](#directory-structure)
@@ -26,6 +50,7 @@ DistroTube: https://www.youtube.com/watch?v=tSGGBbJBgvk&t=1228s
This guide provides comprehensive documentation for creating KyOS - a custom Arch Linux ISO distribution based on the archiso framework. Originally forked from DTOS (Derek Taylor's Operating System), KyOS has been completely rebranded and optimized for modern use cases, including VirtualBox compatibility. The ISO includes custom branding, curated package selection, optimized configurations, and intelligent installation scripts. This guide provides comprehensive documentation for creating KyOS - a custom Arch Linux ISO distribution based on the archiso framework. Originally forked from DTOS (Derek Taylor's Operating System), KyOS has been completely rebranded and optimized for modern use cases, including VirtualBox compatibility. The ISO includes custom branding, curated package selection, optimized configurations, and intelligent installation scripts.
### What You'll Learn ### What You'll Learn
- Complete archiso project structure for KyOS - Complete archiso project structure for KyOS
- Advanced package management (official repos + AUR + custom packages) - Advanced package management (official repos + AUR + custom packages)
- Custom configuration deployment and user management - Custom configuration deployment and user management
@@ -41,6 +66,7 @@ This guide provides comprehensive documentation for creating KyOS - a custom Arc
## Prerequisites ## Prerequisites
### Required Tools ### Required Tools
```bash ```bash
# Install archiso and dependencies # Install archiso and dependencies
sudo pacman -S archiso git base-devel sudo pacman -S archiso git base-devel
@@ -50,6 +76,7 @@ sudo pacman -S arch-install-scripts squashfs-tools
``` ```
### Knowledge Requirements ### Knowledge Requirements
- Basic Linux system administration - Basic Linux system administration
- Understanding of Arch Linux package management - Understanding of Arch Linux package management
- Shell scripting basics - Shell scripting basics
@@ -60,6 +87,7 @@ sudo pacman -S arch-install-scripts squashfs-tools
## Directory Structure ## Directory Structure
### Complete Project Layout ### Complete Project Layout
``` ```
your-custom-iso/ your-custom-iso/
├── profiledef.sh # Main ISO configuration file - defines ISO metadata, build options, and file permissions ├── profiledef.sh # Main ISO configuration file - defines ISO metadata, build options, and file permissions
@@ -212,24 +240,28 @@ your-custom-iso/
### Core Configuration Files ### Core Configuration Files
#### **profiledef.sh** #### **profiledef.sh**
- **Purpose**: Defines the entire ISO build configuration - **Purpose**: Defines the entire ISO build configuration
- **Use Case**: Sets ISO metadata (name, version, publisher), build modes, compression settings, and file permissions - **Use Case**: Sets ISO metadata (name, version, publisher), build modes, compression settings, and file permissions
- **When to Edit**: Always customize this first with your branding and build preferences - **When to Edit**: Always customize this first with your branding and build preferences
- **Key Settings**: `iso_name`, `iso_publisher`, `iso_application`, `file_permissions` - **Key Settings**: `iso_name`, `iso_publisher`, `iso_application`, `file_permissions`
#### **packages.x86_64** #### **packages.x86_64**
- **Purpose**: Packages installed in the live environment - **Purpose**: Packages installed in the live environment
- **Use Case**: Essential packages for the ISO to function (networking, hardware support, installation tools) - **Use Case**: Essential packages for the ISO to function (networking, hardware support, installation tools)
- **When to Edit**: Add packages needed for live environment functionality, but keep minimal for size - **When to Edit**: Add packages needed for live environment functionality, but keep minimal for size
- **Examples**: `base`, `linux-firmware`, `networkmanager`, `arch-install-scripts` - **Examples**: `base`, `linux-firmware`, `networkmanager`, `arch-install-scripts`
#### **bootstrap_packages.x86_64** #### **bootstrap_packages.x86_64**
- **Purpose**: Minimal packages needed during ISO build process - **Purpose**: Minimal packages needed during ISO build process
- **Use Case**: Packages required by mkarchiso to create the ISO - **Use Case**: Packages required by mkarchiso to create the ISO
- **When to Edit**: Rarely changed unless you need specific build tools - **When to Edit**: Rarely changed unless you need specific build tools
- **Default**: `arch-install-scripts`, `base` - **Default**: `arch-install-scripts`, `base`
#### **pacman.conf** #### **pacman.conf**
- **Purpose**: Package manager configuration for both build and live environment - **Purpose**: Package manager configuration for both build and live environment
- **Use Case**: Defines repositories, signing requirements, and package sources - **Use Case**: Defines repositories, signing requirements, and package sources
- **When to Edit**: Add custom repositories, AUR sources, or modify package verification - **When to Edit**: Add custom repositories, AUR sources, or modify package verification
@@ -238,48 +270,56 @@ your-custom-iso/
### System Configuration Files (airootfs/etc/) ### System Configuration Files (airootfs/etc/)
#### **os-release** #### **os-release**
- **Purpose**: Operating system identification and branding - **Purpose**: Operating system identification and branding
- **Use Case**: Defines distro name, version, URLs shown in system info - **Use Case**: Defines distro name, version, URLs shown in system info
- **When to Edit**: Essential for branding - change `NAME`, `ID`, `HOME_URL`, etc. - **When to Edit**: Essential for branding - change `NAME`, `ID`, `HOME_URL`, etc.
- **Impact**: Affects system info commands, desktop environment about dialogs - **Impact**: Affects system info commands, desktop environment about dialogs
#### **motd (Message of the Day)** #### **motd (Message of the Day)**
- **Purpose**: Welcome message displayed on terminal login - **Purpose**: Welcome message displayed on terminal login
- **Use Case**: Provides instructions and information to live environment users - **Use Case**: Provides instructions and information to live environment users
- **When to Edit**: Customize with your installation instructions and support info - **When to Edit**: Customize with your installation instructions and support info
- **Best Practice**: Include installation command, documentation links, network setup help - **Best Practice**: Include installation command, documentation links, network setup help
#### **hostname** #### **hostname**
- **Purpose**: Default system hostname for live environment - **Purpose**: Default system hostname for live environment
- **Use Case**: Sets the computer name shown in network and terminal - **Use Case**: Sets the computer name shown in network and terminal
- **When to Edit**: Change from default to match your distro branding - **When to Edit**: Change from default to match your distro branding
- **Example**: `yourcustomlinux` instead of `archiso` - **Example**: `yourcustomlinux` instead of `archiso`
#### **locale.conf** #### **locale.conf**
- **Purpose**: System language and regional settings - **Purpose**: System language and regional settings
- **Use Case**: Defines default language, character encoding, date/time formats - **Use Case**: Defines default language, character encoding, date/time formats
- **When to Edit**: Set default locale for your target audience - **When to Edit**: Set default locale for your target audience
- **Common Values**: `LANG=en_US.UTF-8` for US English, `LANG=de_DE.UTF-8` for German - **Common Values**: `LANG=en_US.UTF-8` for US English, `LANG=de_DE.UTF-8` for German
#### **bash.bashrc** #### **bash.bashrc**
- **Purpose**: Global bash shell configuration for all users - **Purpose**: Global bash shell configuration for all users
- **Use Case**: System-wide shell settings, aliases, and environment variables - **Use Case**: System-wide shell settings, aliases, and environment variables
- **When to Edit**: Add custom aliases, modify PATH, set environment variables - **When to Edit**: Add custom aliases, modify PATH, set environment variables
- **Examples**: Custom aliases like `ll='ls -la'`, custom PATH additions - **Examples**: Custom aliases like `ll='ls -la'`, custom PATH additions
#### **doas.conf** #### **doas.conf**
- **Purpose**: Privilege escalation configuration (alternative to sudo) - **Purpose**: Privilege escalation configuration (alternative to sudo)
- **Use Case**: Defines which users can run commands as root - **Use Case**: Defines which users can run commands as root
- **When to Edit**: Modify privilege rules or switch to sudo configuration - **When to Edit**: Modify privilege rules or switch to sudo configuration
- **DTOS Example**: `permit persist setenv {PATH=...} :wheel` (allows wheel group users) - **DTOS Example**: `permit persist setenv {PATH=...} :wheel` (allows wheel group users)
#### **group & passwd** #### **group & passwd**
- **Purpose**: System user and group definitions - **Purpose**: System user and group definitions
- **Use Case**: Defines system accounts and their IDs - **Use Case**: Defines system accounts and their IDs
- **When to Edit**: Add system users or modify group memberships - **When to Edit**: Add system users or modify group memberships
- **Security Note**: Contains sensitive system account information - **Security Note**: Contains sensitive system account information
#### **shadow & gshadow** #### **shadow & gshadow**
- **Purpose**: Encrypted password storage - **Purpose**: Encrypted password storage
- **Use Case**: Stores password hashes and group passwords securely - **Use Case**: Stores password hashes and group passwords securely
- **When to Edit**: Set default passwords for live environment users - **When to Edit**: Set default passwords for live environment users
@@ -288,18 +328,21 @@ your-custom-iso/
### User Configuration Templates (airootfs/etc/skel/) ### User Configuration Templates (airootfs/etc/skel/)
#### **.config/qtile/config.py** #### **.config/qtile/config.py**
- **Purpose**: Qtile window manager configuration template - **Purpose**: Qtile window manager configuration template
- **Use Case**: Default Qtile setup for new users (keybindings, layouts, themes) - **Use Case**: Default Qtile setup for new users (keybindings, layouts, themes)
- **When to Edit**: Customize window manager behavior, add custom keybindings - **When to Edit**: Customize window manager behavior, add custom keybindings
- **Key Elements**: Key bindings, layouts, bar configuration, autostart applications - **Key Elements**: Key bindings, layouts, bar configuration, autostart applications
#### **.config/alacritty/alacritty.yml** #### **.config/alacritty/alacritty.yml**
- **Purpose**: Terminal emulator configuration template - **Purpose**: Terminal emulator configuration template
- **Use Case**: Default terminal appearance and behavior - **Use Case**: Default terminal appearance and behavior
- **When to Edit**: Customize fonts, colors, window settings - **When to Edit**: Customize fonts, colors, window settings
- **Popular Changes**: Font family, color scheme, window padding, opacity - **Popular Changes**: Font family, color scheme, window padding, opacity
#### **.config/rofi/config.rasi** #### **.config/rofi/config.rasi**
- **Purpose**: Application launcher configuration - **Purpose**: Application launcher configuration
- **Use Case**: Defines launcher appearance and behavior - **Use Case**: Defines launcher appearance and behavior
- **When to Edit**: Customize launcher theme, fonts, behavior - **When to Edit**: Customize launcher theme, fonts, behavior
@@ -308,18 +351,21 @@ your-custom-iso/
### System Services (airootfs/etc/systemd/system/) ### System Services (airootfs/etc/systemd/system/)
#### **choose-mirror.service** #### **choose-mirror.service**
- **Purpose**: Automatic mirror selection service - **Purpose**: Automatic mirror selection service
- **Use Case**: Helps users select fastest package repository mirrors - **Use Case**: Helps users select fastest package repository mirrors
- **When to Edit**: Modify mirror selection logic or add custom mirrors - **When to Edit**: Modify mirror selection logic or add custom mirrors
- **Activation**: Triggered by `mirror` kernel parameter - **Activation**: Triggered by `mirror` kernel parameter
#### **display-manager.service** #### **display-manager.service**
- **Purpose**: Symlink to display manager (login screen) - **Purpose**: Symlink to display manager (login screen)
- **Use Case**: Defines which display manager to use (sddm, gdm, lightdm) - **Use Case**: Defines which display manager to use (sddm, gdm, lightdm)
- **When to Edit**: Change display manager or modify startup behavior - **When to Edit**: Change display manager or modify startup behavior
- **DTOS Example**: Links to `sddm.service` - **DTOS Example**: Links to `sddm.service`
#### **pacman-init.service** #### **pacman-init.service**
- **Purpose**: Initializes package manager keyring - **Purpose**: Initializes package manager keyring
- **Use Case**: Sets up GPG keys for package verification - **Use Case**: Sets up GPG keys for package verification
- **When to Edit**: Modify keyring initialization or add custom keys - **When to Edit**: Modify keyring initialization or add custom keys
@@ -328,12 +374,14 @@ your-custom-iso/
### Network Configuration (airootfs/etc/systemd/network/) ### Network Configuration (airootfs/etc/systemd/network/)
#### **20-ethernet.network** #### **20-ethernet.network**
- **Purpose**: Ethernet interface configuration - **Purpose**: Ethernet interface configuration
- **Use Case**: Automatic DHCP configuration for wired connections - **Use Case**: Automatic DHCP configuration for wired connections
- **When to Edit**: Modify network settings or add static IP configurations - **When to Edit**: Modify network settings or add static IP configurations
- **Default**: DHCP enabled with privacy extensions - **Default**: DHCP enabled with privacy extensions
#### **20-wlan.network** #### **20-wlan.network**
- **Purpose**: Wireless interface configuration - **Purpose**: Wireless interface configuration
- **Use Case**: Basic wireless network setup - **Use Case**: Basic wireless network setup
- **When to Edit**: Add wireless-specific settings or security configurations - **When to Edit**: Add wireless-specific settings or security configurations
@@ -342,18 +390,21 @@ your-custom-iso/
### Package Management (airootfs/etc/pacman.d/) ### Package Management (airootfs/etc/pacman.d/)
#### **hooks/uncomment-mirrors.hook** #### **hooks/uncomment-mirrors.hook**
- **Purpose**: Automatically enables package repository mirrors - **Purpose**: Automatically enables package repository mirrors
- **Use Case**: Ensures package mirrors are available after installation - **Use Case**: Ensures package mirrors are available after installation
- **When to Edit**: Modify mirror management or add custom mirror logic - **When to Edit**: Modify mirror management or add custom mirror logic
- **Trigger**: Runs during package operations - **Trigger**: Runs during package operations
#### **hooks/waypaper.hook** #### **hooks/waypaper.hook**
- **Purpose**: Updates wallpaper database after package changes - **Purpose**: Updates wallpaper database after package changes
- **Use Case**: Ensures wallpaper applications see new wallpapers - **Use Case**: Ensures wallpaper applications see new wallpapers
- **When to Edit**: Add similar hooks for other applications - **When to Edit**: Add similar hooks for other applications
- **Pattern**: Update application databases after package installation - **Pattern**: Update application databases after package installation
#### **chaotic-mirrorlist** #### **chaotic-mirrorlist**
- **Purpose**: Mirror list for Chaotic AUR repository - **Purpose**: Mirror list for Chaotic AUR repository
- **Use Case**: Provides pre-compiled AUR packages - **Use Case**: Provides pre-compiled AUR packages
- **When to Edit**: Add or modify AUR package sources - **When to Edit**: Add or modify AUR package sources
@@ -362,24 +413,28 @@ your-custom-iso/
### Installation Scripts (airootfs/usr/local/bin/) ### Installation Scripts (airootfs/usr/local/bin/)
#### **dtosinstall** #### **dtosinstall**
- **Purpose**: Main system installation script - **Purpose**: Main system installation script
- **Use Case**: Guides users through system installation process - **Use Case**: Guides users through system installation process
- **When to Edit**: Customize installation options, add features, modify UI - **When to Edit**: Customize installation options, add features, modify UI
- **Key Features**: Disk partitioning, package installation, user creation, bootloader setup - **Key Features**: Disk partitioning, package installation, user creation, bootloader setup
#### **choose-mirror** #### **choose-mirror**
- **Purpose**: Repository mirror selection utility - **Purpose**: Repository mirror selection utility
- **Use Case**: Helps users select fastest package mirrors - **Use Case**: Helps users select fastest package mirrors
- **When to Edit**: Add custom mirrors or modify selection logic - **When to Edit**: Add custom mirrors or modify selection logic
- **Integration**: Used by installation scripts and services - **Integration**: Used by installation scripts and services
#### **dtos-welcome** #### **dtos-welcome**
- **Purpose**: Welcome application for new users - **Purpose**: Welcome application for new users
- **Use Case**: Provides information and quick actions for live environment - **Use Case**: Provides information and quick actions for live environment
- **When to Edit**: Customize welcome message, add custom actions - **When to Edit**: Customize welcome message, add custom actions
- **UI**: Can be GUI or terminal-based - **UI**: Can be GUI or terminal-based
#### **Installation_guide** #### **Installation_guide**
- **Purpose**: Interactive installation documentation - **Purpose**: Interactive installation documentation
- **Use Case**: Provides step-by-step installation help - **Use Case**: Provides step-by-step installation help
- **When to Edit**: Update with your specific installation procedures - **When to Edit**: Update with your specific installation procedures
@@ -388,24 +443,28 @@ your-custom-iso/
### Package Lists (airootfs/root/) ### Package Lists (airootfs/root/)
#### **pkgs-base** #### **pkgs-base**
- **Purpose**: Essential system packages for installation - **Purpose**: Essential system packages for installation
- **Use Case**: Packages installed on every system (bootloader, kernel, basic tools) - **Use Case**: Packages installed on every system (bootloader, kernel, basic tools)
- **When to Edit**: Add/remove essential system packages - **When to Edit**: Add/remove essential system packages
- **Examples**: `base-devel`, `grub`, `networkmanager`, `yay` - **Examples**: `base-devel`, `grub`, `networkmanager`, `yay`
#### **pkgs-qtile** #### **pkgs-qtile**
- **Purpose**: Desktop environment packages - **Purpose**: Desktop environment packages
- **Use Case**: Packages for complete desktop experience - **Use Case**: Packages for complete desktop experience
- **When to Edit**: Customize desktop environment, add/remove applications - **When to Edit**: Customize desktop environment, add/remove applications
- **Examples**: `qtile`, `alacritty`, `rofi`, `firefox` - **Examples**: `qtile`, `alacritty`, `rofi`, `firefox`
#### **pkgs-btrfs** #### **pkgs-btrfs**
- **Purpose**: Btrfs filesystem-specific packages - **Purpose**: Btrfs filesystem-specific packages
- **Use Case**: Additional tools for Btrfs filesystem support - **Use Case**: Additional tools for Btrfs filesystem support
- **When to Edit**: Modify filesystem support packages - **When to Edit**: Modify filesystem support packages
- **Examples**: `btrfs-progs`, `snapper`, `grub-btrfs` - **Examples**: `btrfs-progs`, `snapper`, `grub-btrfs`
#### **pkgs-applications** #### **pkgs-applications**
- **Purpose**: User applications and productivity software - **Purpose**: User applications and productivity software
- **Use Case**: Software that users typically want installed - **Use Case**: Software that users typically want installed
- **When to Edit**: Customize default application selection - **When to Edit**: Customize default application selection
@@ -414,24 +473,28 @@ your-custom-iso/
### Boot Configuration ### Boot Configuration
#### **efiboot/loader/loader.conf** #### **efiboot/loader/loader.conf**
- **Purpose**: UEFI boot loader configuration - **Purpose**: UEFI boot loader configuration
- **Use Case**: Defines boot timeout, default entry, and boot behavior - **Use Case**: Defines boot timeout, default entry, and boot behavior
- **When to Edit**: Customize boot experience for UEFI systems - **When to Edit**: Customize boot experience for UEFI systems
- **Settings**: `timeout`, `default`, `editor` (enable/disable boot parameter editing) - **Settings**: `timeout`, `default`, `editor` (enable/disable boot parameter editing)
#### **efiboot/loader/entries/*.conf** #### **efiboot/loader/entries/*.conf**
- **Purpose**: Individual boot menu entries - **Purpose**: Individual boot menu entries
- **Use Case**: Defines specific boot options (normal, accessibility, memtest) - **Use Case**: Defines specific boot options (normal, accessibility, memtest)
- **When to Edit**: Customize boot options, kernel parameters, or entry names - **When to Edit**: Customize boot options, kernel parameters, or entry names
- **Parameters**: `title`, `linux`, `initrd`, `options` - **Parameters**: `title`, `linux`, `initrd`, `options`
#### **grub/grub.cfg** #### **grub/grub.cfg**
- **Purpose**: GRUB boot loader configuration - **Purpose**: GRUB boot loader configuration
- **Use Case**: Defines boot menu for BIOS and UEFI systems - **Use Case**: Defines boot menu for BIOS and UEFI systems
- **When to Edit**: Customize boot menu appearance and options - **When to Edit**: Customize boot menu appearance and options
- **Features**: Multiple boot entries, kernel parameters, theme support - **Features**: Multiple boot entries, kernel parameters, theme support
#### **syslinux/syslinux.cfg** #### **syslinux/syslinux.cfg**
- **Purpose**: BIOS boot loader configuration - **Purpose**: BIOS boot loader configuration
- **Use Case**: Legacy BIOS boot support - **Use Case**: Legacy BIOS boot support
- **When to Edit**: Customize BIOS boot experience - **When to Edit**: Customize BIOS boot experience
@@ -460,6 +523,7 @@ fi
#### 1. Qtile Autostart Script (`~/.config/qtile/scripts/autostart.sh`) #### 1. Qtile Autostart Script (`~/.config/qtile/scripts/autostart.sh`)
**Features:** **Features:**
- Skips picom compositor in VirtualBox (prevents transparency issues) - Skips picom compositor in VirtualBox (prevents transparency issues)
- Disables problematic applications (eww, volctl) that cause rendering problems - Disables problematic applications (eww, volctl) that cause rendering problems
- Maintains essential applications (nm-applet, flameshot, blueman-applet) - Maintains essential applications (nm-applet, flameshot, blueman-applet)
@@ -497,6 +561,7 @@ fi
#### 2. VirtualBox-Safe Picom Configuration (`~/.config/picom.conf`) #### 2. VirtualBox-Safe Picom Configuration (`~/.config/picom.conf`)
**Features:** **Features:**
- Uses stable xrender backend - Uses stable xrender backend
- Disables transparency and effects - Disables transparency and effects
- Prevents visual artifacts and black bars - Prevents visual artifacts and black bars
@@ -541,6 +606,7 @@ wintypes:
#### 3. Qtile Bar with VirtualBox Detection (`~/.config/qtile/core/bar.py`) #### 3. Qtile Bar with VirtualBox Detection (`~/.config/qtile/core/bar.py`)
**Features:** **Features:**
- Detects VirtualBox environment - Detects VirtualBox environment
- Forces solid backgrounds and full opacity - Forces solid backgrounds and full opacity
- Prevents transparency-related rendering issues - Prevents transparency-related rendering issues
@@ -578,6 +644,7 @@ def create_bar(extra_bar=False):
#### 4. VirtualBox Fix Script (`~/.config/qtile/scripts/vbox-fix.sh`) #### 4. VirtualBox Fix Script (`~/.config/qtile/scripts/vbox-fix.sh`)
**Features:** **Features:**
- Manual fix utility for VirtualBox issues - Manual fix utility for VirtualBox issues
- Kills problematic processes - Kills problematic processes
- Restarts Qtile with proper settings - Restarts Qtile with proper settings
@@ -628,19 +695,25 @@ fi
### Common VirtualBox Issues and Solutions ### Common VirtualBox Issues and Solutions
#### Issue: Black Bars or Visual Artifacts #### Issue: Black Bars or Visual Artifacts
**Solution:** VirtualBox-optimized picom configuration automatically applied **Solution:** VirtualBox-optimized picom configuration automatically applied
#### Issue: Transparent Terminal Text Invisible #### Issue: Transparent Terminal Text Invisible
**Solution:** **Solution:**
1. Edit terminal configuration (e.g., `~/.config/alacritty/alacritty.yml`) 1. Edit terminal configuration (e.g., `~/.config/alacritty/alacritty.yml`)
2. Set `window.opacity: 1.0` 2. Set `window.opacity: 1.0`
3. Restart terminal application 3. Restart terminal application
#### Issue: Desktop Effects Not Working #### Issue: Desktop Effects Not Working
**Solution:** Effects are automatically disabled in VirtualBox for stability **Solution:** Effects are automatically disabled in VirtualBox for stability
#### Issue: Poor Performance #### Issue: Poor Performance
**Solution:** **Solution:**
1. Ensure VirtualBox Guest Additions are installed 1. Ensure VirtualBox Guest Additions are installed
2. Allocate sufficient video memory (128MB recommended) 2. Allocate sufficient video memory (128MB recommended)
3. Enable 3D acceleration in VirtualBox settings 3. Enable 3D acceleration in VirtualBox settings
@@ -666,6 +739,7 @@ chmod +x ~/.config/qtile/scripts/vbox-fix.sh
### Testing VirtualBox Compatibility ### Testing VirtualBox Compatibility
**Recommended VirtualBox Settings:** **Recommended VirtualBox Settings:**
- RAM: 4GB minimum, 8GB recommended - RAM: 4GB minimum, 8GB recommended
- Video Memory: 128MB - Video Memory: 128MB
- 3D Acceleration: Enabled - 3D Acceleration: Enabled
@@ -673,6 +747,7 @@ chmod +x ~/.config/qtile/scripts/vbox-fix.sh
- Storage: 40GB minimum - Storage: 40GB minimum
**Test Checklist:** **Test Checklist:**
- [ ] Desktop loads without black bars - [ ] Desktop loads without black bars
- [ ] Terminal text is visible - [ ] Terminal text is visible
- [ ] Window decorations render properly - [ ] Window decorations render properly
@@ -682,6 +757,7 @@ chmod +x ~/.config/qtile/scripts/vbox-fix.sh
- [ ] File manager operates correctly - [ ] File manager operates correctly
--- ---
## KyOS Rebranding Process ## KyOS Rebranding Process
This section documents the complete rebranding process from DTOS to KyOS, including all file changes, script updates, and configuration modifications. This section documents the complete rebranding process from DTOS to KyOS, including all file changes, script updates, and configuration modifications.
@@ -689,6 +765,7 @@ This section documents the complete rebranding process from DTOS to KyOS, includ
### Overview of Changes ### Overview of Changes
**Complete Rebranding:** **Complete Rebranding:**
- All user-facing text changed from DTOS to KyOS - All user-facing text changed from DTOS to KyOS
- Boot loader messages updated to KyOS - Boot loader messages updated to KyOS
- Installation scripts renamed and updated - Installation scripts renamed and updated
@@ -697,12 +774,14 @@ This section documents the complete rebranding process from DTOS to KyOS, includ
- Default credentials changed to KyOS defaults - Default credentials changed to KyOS defaults
**Package Management:** **Package Management:**
- Removed all DTOS-specific packages - Removed all DTOS-specific packages
- Added user-specified packages from packages.txt - Added user-specified packages from packages.txt
- Maintained compatibility with DTOS repositories where needed - Maintained compatibility with DTOS repositories where needed
- Optimized package conflicts (pipewire-jack vs jack2) - Optimized package conflicts (pipewire-jack vs jack2)
**VirtualBox Compatibility:** **VirtualBox Compatibility:**
- Added automatic VirtualBox detection - Added automatic VirtualBox detection
- Implemented VirtualBox-specific configurations - Implemented VirtualBox-specific configurations
- Created compatibility fixes for common issues - Created compatibility fixes for common issues
@@ -710,6 +789,7 @@ This section documents the complete rebranding process from DTOS to KyOS, includ
### Rebranding Checklist ### Rebranding Checklist
#### Core System Files #### Core System Files
- [ ] `/etc/os-release` - Updated OS name and branding - [ ] `/etc/os-release` - Updated OS name and branding
- [ ] `/etc/motd` - Updated welcome message - [ ] `/etc/motd` - Updated welcome message
- [ ] `/etc/hostname` - Changed default hostname to kyos-pc - [ ] `/etc/hostname` - Changed default hostname to kyos-pc
@@ -717,6 +797,7 @@ This section documents the complete rebranding process from DTOS to KyOS, includ
- [ ] Installation scripts renamed (dtosinstall → kyosinstall) - [ ] Installation scripts renamed (dtosinstall → kyosinstall)
#### User Interface Elements #### User Interface Elements
- [x] Welcome application branding - [x] Welcome application branding
- [x] Installer prompts and messages - [x] Installer prompts and messages
- [x] Desktop environment themes - [x] Desktop environment themes
@@ -724,12 +805,14 @@ This section documents the complete rebranding process from DTOS to KyOS, includ
- [x] Application launcher entries - [x] Application launcher entries
#### Configuration Paths #### Configuration Paths
- [x] Config directory references - [x] Config directory references
- [x] Script path updates - [x] Script path updates
- [x] Theme and background paths - [x] Theme and background paths
- [x] User profile templates - [x] User profile templates
#### Package Lists #### Package Lists
- [x] Removed DTOS packages from pkgs-base - [x] Removed DTOS packages from pkgs-base
- [x] Removed DTOS packages from pkgs-qtile - [x] Removed DTOS packages from pkgs-qtile
- [x] Added user-specified packages avoiding duplicates - [x] Added user-specified packages avoiding duplicates
@@ -737,6 +820,7 @@ This section documents the complete rebranding process from DTOS to KyOS, includ
- [x] Maintained essential system packages - [x] Maintained essential system packages
#### Scripts and Executables #### Scripts and Executables
- [x] Renamed installation scripts - [x] Renamed installation scripts
- [x] Updated script internal references - [x] Updated script internal references
- [x] Changed default usernames and passwords - [x] Changed default usernames and passwords
@@ -745,6 +829,7 @@ This section documents the complete rebranding process from DTOS to KyOS, includ
### File Mapping ### File Mapping
#### Renamed Files #### Renamed Files
``` ```
Old Location New Location Old Location New Location
/usr/local/bin/dtosinstall → /usr/local/bin/kyosinstall /usr/local/bin/dtosinstall → /usr/local/bin/kyosinstall
@@ -754,6 +839,7 @@ Old Location New Location
``` ```
#### Updated Content Files #### Updated Content Files
``` ```
File Change File Change
/etc/os-release OS name and branding /etc/os-release OS name and branding
@@ -768,7 +854,9 @@ airootfs/root/pkgs-* Package lists
### Script Updates ### Script Updates
#### Installation Scripts #### Installation Scripts
**kyosinstall** (formerly dtosinstall): **kyosinstall** (formerly dtosinstall):
- Updated all prompts and messages to KyOS - Updated all prompts and messages to KyOS
- Changed default username to 'kyos' - Changed default username to 'kyos'
- Changed default password to 'kyos123' - Changed default password to 'kyos123'
@@ -778,12 +866,14 @@ airootfs/root/pkgs-* Package lists
- Enhanced chaotic-aur repository setup - Enhanced chaotic-aur repository setup
**kyosinstall-tui** (formerly dtosinstall-tui): **kyosinstall-tui** (formerly dtosinstall-tui):
- Updated TUI interface branding - Updated TUI interface branding
- Improved user input validation - Improved user input validation
- Added support for custom username/password/hostname - Added support for custom username/password/hostname
- Enhanced package installation error handling - Enhanced package installation error handling
**kyosinstall-auto** (formerly dtosinstall-auto): **kyosinstall-auto** (formerly dtosinstall-auto):
- Automated installation with KyOS defaults - Automated installation with KyOS defaults
- VirtualBox optimization integration - VirtualBox optimization integration
- Improved post-installation configuration - Improved post-installation configuration
@@ -791,7 +881,9 @@ airootfs/root/pkgs-* Package lists
### Package Management Changes ### Package Management Changes
#### Removed Packages #### Removed Packages
All DTOS-specific packages were removed: All DTOS-specific packages were removed:
``` ```
dtos-* # All DTOS branded packages dtos-* # All DTOS branded packages
dtos-core-repo # DTOS repository configuration dtos-core-repo # DTOS repository configuration
@@ -799,19 +891,24 @@ dtos-welcome # DTOS welcome application
``` ```
#### Added Packages #### Added Packages
User-specified packages from packages.txt were added: User-specified packages from packages.txt were added:
``` ```
# Selected packages avoiding duplicates and Wayland conflicts # Selected packages avoiding duplicates and Wayland conflicts
# See packages.txt for complete list # See packages.txt for complete list
``` ```
#### Conflict Resolution #### Conflict Resolution
**pipewire-jack vs jack2:** **pipewire-jack vs jack2:**
- Removed conflicting audio packages - Removed conflicting audio packages
- Standardized on pipewire-jack - Standardized on pipewire-jack
- Added explicit package removal in installer - Added explicit package removal in installer
**AUR Package Handling:** **AUR Package Handling:**
- Improved chaotic-aur repository setup - Improved chaotic-aur repository setup
- Added fallback mirrors for reliability - Added fallback mirrors for reliability
- Enhanced keyring management - Enhanced keyring management
@@ -819,6 +916,7 @@ User-specified packages from packages.txt were added:
### VirtualBox Integration ### VirtualBox Integration
#### Automatic Detection #### Automatic Detection
```bash ```bash
# Detect VirtualBox environment # Detect VirtualBox environment
if [ "$(systemd-detect-virt)" = "oracle" ]; then if [ "$(systemd-detect-virt)" = "oracle" ]; then
@@ -827,6 +925,7 @@ fi
``` ```
#### Optimized Configurations #### Optimized Configurations
- **Autostart Script**: Skips problematic applications in VirtualBox - **Autostart Script**: Skips problematic applications in VirtualBox
- **Picom Config**: Uses stable backend with disabled effects - **Picom Config**: Uses stable backend with disabled effects
- **Qtile Bar**: Forces solid backgrounds and full opacity - **Qtile Bar**: Forces solid backgrounds and full opacity
@@ -835,6 +934,7 @@ fi
### Testing and Validation ### Testing and Validation
#### Installation Testing #### Installation Testing
- [x] Automated installation works correctly - [x] Automated installation works correctly
- [x] TUI installation accepts user input - [x] TUI installation accepts user input
- [x] User credentials are set properly - [x] User credentials are set properly
@@ -842,6 +942,7 @@ fi
- [x] Package installation completes successfully - [x] Package installation completes successfully
#### VirtualBox Testing #### VirtualBox Testing
- [x] Desktop loads without visual artifacts - [x] Desktop loads without visual artifacts
- [x] Terminal text is visible - [x] Terminal text is visible
- [x] Applications launch successfully - [x] Applications launch successfully
@@ -849,6 +950,7 @@ fi
- [x] Audio works properly - [x] Audio works properly
#### Compatibility Testing #### Compatibility Testing
- [x] Works on real hardware - [x] Works on real hardware
- [x] Functions in VirtualBox - [x] Functions in VirtualBox
- [x] Compatible with different VM configurations - [x] Compatible with different VM configurations
@@ -857,12 +959,14 @@ fi
### Maintenance and Updates ### Maintenance and Updates
#### Ongoing Tasks #### Ongoing Tasks
- Monitor package conflicts - Monitor package conflicts
- Update VirtualBox compatibility as needed - Update VirtualBox compatibility as needed
- Maintain installer script functionality - Maintain installer script functionality
- Update documentation and guides - Update documentation and guides
#### Version Control #### Version Control
- All changes tracked in git - All changes tracked in git
- Separate branches for major updates - Separate branches for major updates
- Tagged releases for stable versions - Tagged releases for stable versions
@@ -870,6 +974,7 @@ fi
### Distribution Preparation ### Distribution Preparation
#### ISO Building #### ISO Building
```bash ```bash
# Build KyOS ISO # Build KyOS ISO
cd /path/to/kyos-iso/releng cd /path/to/kyos-iso/releng
@@ -877,6 +982,7 @@ sudo mkarchiso -v -w /tmp/kyos-work -o /tmp/kyos-out .
``` ```
#### Testing Checklist #### Testing Checklist
- [ ] ISO boots successfully - [ ] ISO boots successfully
- [ ] Live environment functions properly - [ ] Live environment functions properly
- [ ] Installation completes without errors - [ ] Installation completes without errors
@@ -885,6 +991,7 @@ sudo mkarchiso -v -w /tmp/kyos-work -o /tmp/kyos-out .
- [ ] All KyOS branding appears correctly - [ ] All KyOS branding appears correctly
--- ---
## Conclusion ## Conclusion
This comprehensive guide provides everything needed to create KyOS - a professional custom Arch Linux ISO distribution with complete rebranding, VirtualBox optimization, and modern package management. The modular approach allows for easy customization while maintaining compatibility with standard Arch tooling. This comprehensive guide provides everything needed to create KyOS - a professional custom Arch Linux ISO distribution with complete rebranding, VirtualBox optimization, and modern package management. The modular approach allows for easy customization while maintaining compatibility with standard Arch tooling.
+6
View File
@@ -0,0 +1,6 @@
# Bat configuration
--theme="Catppuccin Mocha"
--style="numbers,changes,header"
--map-syntax="*.conf:INI"
--map-syntax=".gitconfig:Git Config"
--map-syntax=" Kitty:kitty"
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,5 @@
# Auto start Hyprland on tty1
if test -z "$DISPLAY" ;and test "$XDG_VTNR" -eq 1
mkdir -p ~/.cache
exec start-hyprland > ~/.cache/hyprland.log 2>&1
end
@@ -0,0 +1,7 @@
complete --command fisher --exclusive --long help --description "Print help"
complete --command fisher --exclusive --long version --description "Print version"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"
@@ -0,0 +1,21 @@
complete --command nvm --exclusive
complete --command nvm --exclusive --long version --description "Print version"
complete --command nvm --exclusive --long help --description "Print help"
complete --command nvm --long silent --description "Suppress standard output"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments install --description "Download and activate the specified Node version"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments use --description "Activate the specified Node version in the current shell"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments list --description "List installed Node versions"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments list-remote --description "List available Node versions to install"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments current --description "Print the currently-active Node version"
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from install" --arguments "(
test -e $nvm_data && string split ' ' <$nvm_data/.index
)"
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from use" --arguments "(_nvm_list | string split ' ')"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments uninstall --description "Uninstall the specified Node version"
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from uninstall" --arguments "(
_nvm_list | string split ' ' | string replace system ''
)"
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from use uninstall" --arguments "(
set --query nvm_default_version && echo default
)"
@@ -0,0 +1,14 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# the 'fish_key_bindings' variable from its old default scope (universal)
# to its new default scope (global). We recommend you delete this file
# and configure key bindings in ~/.config/fish/config.fish if needed.
# set --global fish_key_bindings fish_default_key_bindings
# Prior to version 4.3, fish shipped an event handler that runs
# `set --universal fish_key_bindings fish_default_key_bindings`
# whenever the fish_key_bindings variable is erased.
# This means that as long as any fish < 4.3 is still running on this system,
# we cannot complete the migration.
# As a workaround, erase the universal variable at every shell startup.
set --erase --universal fish_key_bindings
@@ -0,0 +1,37 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# theme variables from universal to global scope.
# Don't edit this file, as it will be written by the web-config tool (`fish_config`).
# To customize your theme, delete this file and see
# help interactive#syntax-highlighting
# or
# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING
# for appropriate commands to add to ~/.config/fish/config.fish instead.
# See also the release notes for fish 4.3.0 (run `help relnotes`).
set --global fish_color_autosuggestion 555 brblack
set --global fish_color_cancel -r
set --global fish_color_command blue
set --global fish_color_comment red
set --global fish_color_cwd green
set --global fish_color_cwd_root red
set --global fish_color_end green
set --global fish_color_error brred
set --global fish_color_escape brcyan
set --global fish_color_history_current --bold
set --global fish_color_host normal
set --global fish_color_host_remote yellow
set --global fish_color_normal normal
set --global fish_color_operator brcyan
set --global fish_color_param cyan
set --global fish_color_quote yellow
set --global fish_color_redirection cyan --bold
set --global fish_color_search_match --background=111
set --global fish_color_selection white --bold --background=brblack
set --global fish_color_status red
set --global fish_color_user brgreen
set --global fish_color_valid_path --underline
set --global fish_pager_color_completion normal
set --global fish_pager_color_description B3A06D yellow -i
set --global fish_pager_color_prefix cyan --bold --underline
set --global fish_pager_color_progress brwhite --background=cyan
set --global fish_pager_color_selected_background -r
@@ -0,0 +1,28 @@
set --query XDG_DATA_HOME || set --local XDG_DATA_HOME ~/.local/share
set --query nvm_mirror || set --global nvm_mirror https://nodejs.org/dist
set --query nvm_data || set --global nvm_data $XDG_DATA_HOME/nvm
function _nvm_install --on-event nvm_install
test ! -d $nvm_data && command mkdir -p $nvm_data
echo "Downloading the Node distribution index..." 2>/dev/null
_nvm_index_update
end
function _nvm_update --on-event nvm_update
set --query --universal nvm_data && set --erase --universal nvm_data
set --query --universal nvm_mirror && set --erase --universal nvm_mirror
set --query nvm_mirror || set --global nvm_mirror https://nodejs.org/dist
end
function _nvm_uninstall --on-event nvm_uninstall
command rm -rf $nvm_data
set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version
set --names | string replace --filter --regex -- "^nvm" "set --erase nvm" | source
functions --erase (functions --all | string match --entire --regex -- "^_nvm_")
end
if status is-interactive && set --query nvm_default_version && ! set --query nvm_current_version
nvm use --silent $nvm_default_version
end
@@ -0,0 +1,33 @@
# Commands to run in interactive sessions can go here
if status is-interactive
# No greeting
set fish_greeting
# Use starship
function starship_transient_prompt_func
starship module character
end
if test "$TERM" != "linux"
starship init fish | source
enable_transience
end
# Colors
if test -f ~/.local/state/quickshell/user/generated/terminal/sequences.txt
cat ~/.local/state/quickshell/user/generated/terminal/sequences.txt
end
# Aliases
# kitty doesn't clear properly so we need to do this weird printing
alias clear "printf '\033[2J\033[3J\033[1;1H'"
alias celar "printf '\033[2J\033[3J\033[1;1H'"
alias claer "printf '\033[2J\033[3J\033[1;1H'"
alias pamcan pacman
alias q 'qs -c ii'
if test "$TERM" != "linux"
alias ls 'eza --icons'
end
if test "$TERM" = "xterm-kitty"
alias ssh 'kitten ssh'
end
end
@@ -0,0 +1,2 @@
jorgebucaran/fisher
jorgebucaran/nvm.fish
@@ -0,0 +1,7 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:4300
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
SETUVAR _fisher_jorgebucaran_2F_nvm_2E_fish_files:\x7e/\x2econfig/fish/functions/_nvm_index_update\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_list\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_activate\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_deactivate\x2efish\x1e\x7e/\x2econfig/fish/functions/nvm\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/nvm\x2efish\x1e\x7e/\x2econfig/fish/completions/nvm\x2efish
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejorgebucaran/nvm\x2efish
SETUVAR _fisher_upgraded_to_4_4:\x1d
@@ -0,0 +1,20 @@
function _nvm_index_update
test ! -d $nvm_data && command mkdir -p $nvm_data
set --local index $nvm_data/.index
if not command curl -q --location --silent $nvm_mirror/index.tab >$index.temp
command rm -f $index.temp
echo "nvm: Can't update index, host unavailable: \"$nvm_mirror\"" >&2
return 1
end
command awk -v OFS=\t '
/v0.9.12/ { exit } # Unsupported
NR > 1 {
print $1 (NR == 2 ? " latest" : $10 != "-" ? " lts/" tolower($10) : "")
}
' $index.temp >$index
command rm -f $index.temp
end
@@ -0,0 +1,14 @@
function _nvm_list
set --local versions $nvm_data/*
set --query versions[1] &&
string match --entire --regex -- (
string replace --all -- $nvm_data/ "" $versions |
string match --regex -- "v\d.+" |
string escape --style=regex |
string join "|"
) <$nvm_data/.index
command --all node |
string match --quiet --invert --regex -- "^$nvm_data" && echo system
end
@@ -0,0 +1,4 @@
function _nvm_version_activate --argument-names ver
set --global --export nvm_current_version $ver
set --prepend PATH $nvm_data/$ver/bin
end
@@ -0,0 +1,5 @@
function _nvm_version_deactivate --argument-names ver
test "$nvm_current_version" = "$ver" && set --erase nvm_current_version
set --local index (contains --index -- $nvm_data/$ver/bin $PATH) &&
set --erase PATH[$index]
end
@@ -0,0 +1,3 @@
function edit --wraps=nvim --description 'alias edit=nvim'
nvim $argv
end
@@ -0,0 +1,251 @@
function fisher --argument-names cmd --description "A plugin manager for Fish"
set --query fisher_path || set --local fisher_path $__fish_config_dir
set --local fisher_version 4.4.8
set --local fish_plugins $__fish_config_dir/fish_plugins
switch "$cmd"
case -v --version
echo "fisher, version $fisher_version"
case "" -h --help
echo "Usage: fisher install <plugins...> Install plugins"
echo " fisher remove <plugins...> Remove installed plugins"
echo " fisher uninstall <plugins...> Remove installed plugins (alias)"
echo " fisher update <plugins...> Update installed plugins"
echo " fisher update Update all installed plugins"
echo " fisher list [<regex>] List installed plugins matching regex"
echo "Options:"
echo " -v, --version Print version"
echo " -h, --help Print this help message"
echo "Variables:"
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
case ls list
string match --entire --regex -- "$argv[2]" $_fisher_plugins
case install update remove uninstall
isatty || read --local --null --array stdin && set --append argv $stdin
test "$cmd" = uninstall && set cmd remove
set --local install_plugins
set --local update_plugins
set --local remove_plugins
set --local arg_plugins $argv[2..-1]
set --local old_plugins $_fisher_plugins
set --local new_plugins
test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins | string replace -- \~ ~)
if ! set --query argv[2]
if test "$cmd" != update
echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1
else if ! set --query file_plugins
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
end
set arg_plugins $file_plugins
else if test "$cmd" = install && ! set --query old_plugins[1]
set --append arg_plugins $file_plugins
end
for plugin in $arg_plugins
set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin)
contains -- "$plugin" $new_plugins || set --append new_plugins $plugin
end
if set --query argv[2]
for plugin in $new_plugins
if contains -- "$plugin" $old_plugins
test "$cmd" = remove &&
set --append remove_plugins $plugin ||
set --append update_plugins $plugin
else if test "$cmd" = install
set --append install_plugins $plugin
else
echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1
end
end
else
for plugin in $new_plugins
contains -- "$plugin" $old_plugins &&
set --append update_plugins $plugin ||
set --append install_plugins $plugin
end
for plugin in $old_plugins
contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin
end
end
set --local pid_list
set --local source_plugins
set --local fetch_plugins $update_plugins $install_plugins
set --local fish_path (status fish-path)
echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal)
for plugin in $fetch_plugins
set --local source (command mktemp -d)
set --append source_plugins $source
command mkdir -p $source/{completions,conf.d,themes,functions}
$fish_path --command "
if test -e $plugin
command cp -Rf $plugin/* $source
else
set resp (command mktemp)
set temp (command mktemp -d)
set repo (string split -- \@ $plugin) || set repo[2] HEAD
if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1])
set name (string split -- / \$path)[-1]
set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz
else
set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2]
end
echo Fetching (set_color --underline)\$url(set_color normal)
set http (command curl -q --silent -L -o \$resp -w %{http_code} \$url)
if test \"\$http\" = 200 && command tar -xzC \$temp -f \$resp 2>/dev/null
command cp -Rf \$temp/*/* $source
else if test \"\$http\" = 403
echo fisher: GitHub API rate limit exceeded \(HTTP 403\) >&2
command rm -rf $source
else
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
command rm -rf $source
end
command rm -rf \$temp
end
set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files
" &
set --append pid_list (jobs --last --pid)
end
wait $pid_list 2>/dev/null
for plugin in $fetch_plugins
if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source
if set --local index (contains --index -- "$plugin" $install_plugins)
set --erase install_plugins[$index]
else
set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)]
end
end
end
for plugin in $update_plugins $remove_plugins
if set --local index (contains --index -- "$plugin" $_fisher_plugins)
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
if contains -- "$plugin" $remove_plugins
for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var)
emit {$name}_uninstall
end
printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
set --erase _fisher_plugins[$index]
end
command rm -rf (string replace -- \~ ~ $$plugin_files_var)
functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var)
for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var)
complete --erase --command $name
end
set --erase $plugin_files_var
end
end
if set --query update_plugins[1] || set --query install_plugins[1]
command mkdir -p $fisher_path/{functions,themes,conf.d,completions}
end
for plugin in $update_plugins $install_plugins
set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)]
set --local files $source/{functions,themes,conf.d,completions}/*
if set --local index (contains --index -- $plugin $install_plugins)
set --local user_files $fisher_path/{functions,themes,conf.d,completions}/*
set --local conflict_files
for file in (string replace -- $source/ $fisher_path/ $files)
contains -- $file $user_files && set --append conflict_files $file
end
if set --query conflict_files[1] && set --erase install_plugins[$index]
echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2
continue
end
end
for file in (string replace -- $source/ "" $files)
command cp -RLf $source/$file $fisher_path/$file
end
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~)
contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin
contains -- $plugin $install_plugins && set --local event install || set --local event update
printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~)
source $file
if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file)
emit {$name}_$event
end
end
end
command rm -rf $source_plugins
if set --query _fisher_plugins[1]
set --local commit_plugins
for plugin in $file_plugins
contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin
end
for plugin in $_fisher_plugins
contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin
end
string replace --regex -- $HOME \~ $commit_plugins >$fish_plugins
else
set --erase _fisher_plugins
command rm -f $fish_plugins
end
set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins)
test "$total" != "0 0 0" && echo (string join ", " (
test $total[1] = 0 || echo "Installed $total[1]") (
test $total[2] = 0 || echo "Updated $total[2]") (
test $total[3] = 0 || echo "Removed $total[3]")
) plugin/s
case \*
echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1
end
end
if ! set --query _fisher_upgraded_to_4_4
set --universal _fisher_upgraded_to_4_4
if functions --query _fisher_list
set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share
command rm -rf $XDG_DATA_HOME/fisher
functions --erase _fisher_{list,plugin_parse}
fisher update >/dev/null 2>/dev/null
else
for var in (set --names | string match --entire --regex '^_fisher_.+_files$')
set $var (string replace -- ~ \~ $$var)
end
functions --erase _fisher_fish_postexec
end
end
@@ -0,0 +1,3 @@
function lzd --wraps=lazydocker --description 'alias lzd=lazydocker'
lazydocker $argv
end
@@ -0,0 +1,237 @@
function nvm --description "Node version manager"
for silent in --silent -s
if set --local index (contains --index -- $silent $argv)
set --erase argv[$index] && break
end
set --erase silent
end
set --local cmd $argv[1]
set --local ver $argv[2]
if set --query silent && ! set --query cmd[1]
echo "nvm: Version number not specified (see nvm -h for usage)" >&2
return 1
end
if ! set --query ver[1] && contains -- "$cmd" install use
for file in .nvmrc .node-version
set file (_nvm_find_up $PWD $file) && read ver <$file && break
end
if ! set --query ver[1]
echo "nvm: Invalid version or missing \".nvmrc\" file" >&2
return 1
end
end
set --local their_version $ver
switch "$cmd"
case -v --version
echo "nvm, version 2.2.18"
case "" -h --help
echo "Usage: nvm install <version> Download and activate the specified Node version"
echo " nvm install Install the version specified in the nearest .nvmrc file"
echo " nvm use <version> Activate the specified Node version in the current shell"
echo " nvm use Activate the version specified in the nearest .nvmrc file"
echo " nvm list List installed Node versions"
echo " nvm list-remote List available Node versions to install"
echo " nvm list-remote <regex> List Node versions matching a given regex pattern"
echo " nvm current Print the currently-active Node version"
echo " nvm uninstall <version> Uninstall the specified Node version"
echo "Options:"
echo " -s, --silent Suppress standard output"
echo " -v, --version Print the version of nvm"
echo " -h, --help Print this help message"
echo "Variables:"
echo " nvm_arch Override architecture, e.g. x64-musl"
echo " nvm_mirror Use a mirror for downloading Node binaries"
echo " nvm_default_version Set the default version for new shells"
echo " nvm_default_packages Install a list of packages every time a Node version is installed"
echo " nvm_data Set a custom directory for storing nvm data"
echo "Examples:"
echo " nvm install latest Install the latest version of Node"
echo " nvm use 14.15.1 Use Node version 14.15.1"
echo " nvm use system Activate the system's Node version"
case install
_nvm_index_update
string match --entire --regex -- (_nvm_version_match $ver) <$nvm_data/.index | read ver alias
if ! set --query ver[1]
echo "nvm: Invalid version number or alias: \"$their_version\"" >&2
return 1
end
if test ! -e $nvm_data/$ver
set --local os (command uname -s | string lower)
set --local ext tar.gz
set --local arch (command uname -m)
set --local tarcmd tar
switch $os
case aix
set arch ppc64
case sunos
case linux
case darwin
case {msys_nt,mingw\*_nt}\*
set os win
set ext zip
set tarcmd bsdtar
case \*
echo "nvm: Unsupported operating system: \"$os\"" >&2
return 1
end
switch $arch
case i\*86
set arch x86
case x86_64
set arch x64
case arm64
string match --regex --quiet "v(?<major>\d+)" $ver
if test "$os" = darwin -a $major -lt 16
set arch x64
end
case armv6 armv6l
set arch armv6l
case armv7 armv7l
set arch armv7l
case armv8 armv8l aarch64
set arch arm64
end
set --query nvm_arch && set arch $nvm_arch
set --local dir "node-$ver-$os-$arch"
set --local url $nvm_mirror/$ver/$dir.$ext
command mkdir -p $nvm_data/$ver
if ! set --query silent
echo -e "Installing Node \x1b[1m$ver\x1b[22m $alias"
echo -e "Fetching \x1b[4m$url\x1b[24m\x1b[7m"
end
if ! command curl -q $silent --progress-bar --location $url |
command $tarcmd --extract --gzip --directory $nvm_data/$ver 2>/dev/null
command rm -rf $nvm_data/$ver
echo -e "\033[F\33[2K\x1b[0mnvm: Invalid mirror or host unavailable: \"$url\"" >&2
return 1
end
set --query silent || echo -en "\033[F\33[2K\x1b[0m"
if test "$os" = win
command mv $nvm_data/$ver/$dir $nvm_data/$ver/bin
else
command mv $nvm_data/$ver/$dir/* $nvm_data/$ver
command rm -rf $nvm_data/$ver/$dir
end
end
if test $ver != "$nvm_current_version"
set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version
_nvm_version_activate $ver
set --query nvm_default_packages[1] && npm install --global $silent $nvm_default_packages
end
set --query silent || printf "Now using Node %s (npm %s) %s\n" (_nvm_node_info)
case use
test $ver = default && set ver $nvm_default_version
_nvm_list | string match --entire --regex -- (_nvm_version_match $ver) | read ver __
if ! set --query ver[1]
echo "nvm: Can't use Node \"$their_version\", version must be installed first" >&2
return 1
end
if test $ver != "$nvm_current_version"
set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version
test $ver != system && _nvm_version_activate $ver
end
set --query silent || printf "Now using Node %s (npm %s) %s\n" (_nvm_node_info)
case uninstall
if test -z "$ver"
echo "nvm: Not enough arguments for command: \"$cmd\"" >&2
return 1
end
test $ver = default && test ! -z "$nvm_default_version" && set ver $nvm_default_version
_nvm_list | string match --entire --regex -- (_nvm_version_match $ver) | read ver __
if ! set -q ver[1]
echo "nvm: Node version not installed or invalid: \"$their_version\"" >&2
return 1
end
set --query silent || printf "Uninstalling Node %s %s\n" $ver (string replace ~ \~ "$nvm_data/$ver/bin/node")
_nvm_version_deactivate $ver
command rm -rf $nvm_data/$ver
case current
_nvm_current
case ls list
_nvm_list | _nvm_list_format (_nvm_current) $argv[2]
case lsr {ls,list}-remote
_nvm_index_update || return
_nvm_list | command awk '
FILENAME == "-" && (is_local[$1] = FNR == NR) { next } {
print $0 (is_local[$1] ? " ✓" : "")
}
' - $nvm_data/.index | _nvm_list_format (_nvm_current) $argv[2]
case \*
echo "nvm: Unknown command or option: \"$cmd\" (see nvm -h for usage)" >&2
return 1
end
end
function _nvm_find_up --argument-names path file
test -e "$path/$file" && echo $path/$file || begin
test ! -z "$path" || return
_nvm_find_up (string replace --regex -- '/[^/]*$' "" $path) $file
end
end
function _nvm_version_match --argument-names ver
string replace --regex -- '^v?(\d+|\d+\.\d+)$' 'v$1.' $ver |
string replace --filter --regex -- '^v?(\d+)' 'v$1' |
string escape --style=regex || string lower '\b'$ver'(?:/\w+)?$'
end
function _nvm_list_format --argument-names current regex
command awk -v current="$current" -v regex="$regex" '
$0 ~ regex {
aliases[versions[i++] = $1] = $2 " " $3
pad = (n = length($1)) > pad ? n : pad
}
END {
if (!i) exit 1
while (i--)
printf((current == versions[i] ? " ▶ " : " ") "%"pad"s %s\n",
versions[i], aliases[versions[i]])
}
'
end
function _nvm_current
command --search --quiet node || return
set --query nvm_current_version && echo $nvm_current_version || echo system
end
function _nvm_node_info
set --local npm_path (string replace bin/npm-cli.js "" (realpath (command --search npm)))
test -f $npm_path/package.json || set --local npm_version_default (command npm --version)
command node --eval "
console.log(process.version)
console.log('$npm_version_default' ? '$npm_version_default': require('$npm_path/package.json').version)
console.log(process.execPath)
" | string replace -- ~ \~
end
@@ -0,0 +1,3 @@
function precmd --wraps="print -Pn '\\e]133;D;%?\\a\\e]133;A\\a'" --description "alias precmd=print -Pn '\\e]133;D;%?\\a\\e]133;A\\a'"
print -Pn '\e]133;D;%?\a\e]133;A\a' $argv
end
@@ -0,0 +1,3 @@
function preexec --wraps="print -Pn '\\e]133;B\\a\\e]133;C\\a'" --description "alias preexec=print -Pn '\\e]133;B\\a\\e]133;C\\a'"
print -Pn '\e]133;B\a\e]133;C\a' $argv
end
@@ -0,0 +1,41 @@
function update --description 'Automatically finds binarys and uses update commands'
if command -v pacman >/dev/null && command -v yay >/dev/null
echo "✅ 'pacman' and 'yay' found. Updating."
sudo pacman -Syu --noconfirm
yay -Syu --sudoloop --save --answerclean None --answerdiff None --noconfirm
else if command -v pacman >/dev/null
echo "✅ 'pacman' found. Updating."
sudo pacman -Syu --noconfirm
end
if command -v paru >/dev/null
echo "✅ 'paru' found. Updating."
paru -Syu
end
if command -v apt >/dev/null
echo "✅ 'apt' found. Updating."
sudo apt update && sudo apt full-upgrade -y
end
if command -v hyprpm >/dev/null
echo "✅ 'hyprpm' found. Updating."
hyprpm reload
sleep 2
hyprpm update
end
if command -v flatpak >/dev/null
echo "✅ 'flatpak' found. Updating."
flatpak update -y
end
if command -v npm >/dev/null
echo "✅ 'npm' found. Updating."
sudo npm install -g npm-check-updates
end
if command -v omz >/dev/null
omz update
end
end
@@ -0,0 +1,15 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
--
hl.env("XCURSOR_THEME", "Catppuccin Macchiato Dark")
hl.env("XCURSOR_SIZE", "24")
hl.env("HYPRCURSOR_THEME", "Catppuccin Macchiato Dark")
hl.env("HYPRCURSOR_SIZE", "24")
hl.env("WEBKIT_DISABLE_DMABUF_RENDERER", "1")
ecosystem = {
no_donation_nag = true,
no_update_news = false,
}
@@ -0,0 +1,8 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
hl.on("hyprland.start", function()
hl.exec_cmd("hyprctl setcursor 'Catppuccin Macchiato Dark' 24")
hl.exec_cmd("kdeconnectd &")
end)
@@ -0,0 +1,9 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
hl.config({
input = {
kb_options = "caps:escape",
},
})
@@ -0,0 +1,79 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
--##! Overrides
--# Unbind upstream binds we want to replace
hl.unbind("SUPER + B") -- sidebar toggle -> we use this for browser
hl.unbind("SUPER + T") -- terminal (we don't want this combo)
hl.unbind("CTRL + ALT + T") -- terminal (we don't want this combo)
hl.unbind("SUPER + W") -- browser (we use B instead)
hl.unbind("SUPER + ALT + Page_Up")
hl.unbind("SUPER + ALT + Page_Down")
hl.unbind("SUPER + SHIFT + Page_Up")
hl.unbind("SUPER + SHIFT + Page_Down")
hl.unbind("SUPER + O")
hl.unbind("SUPER + X")
--# Unbind workspace focus with named keys (we use code: keys)
for i = 0, 9 do
hl.unbind("SUPER + " .. i)
end
--# Rebind browser on B (previously sidebar toggle)
hl.bind("SUPER + B", hl.dsp.exec_cmd(browser), { description = "App: Browser" })
--# Rebind Obsidian
hl.bind(
"SUPER + X",
hl.dsp.exec_cmd("/home/alvin/.local/bin/Obsidian.AppImage --password-store=gnome-libsecret"),
{ description = "App: Obsidian" }
)
--##! Workspace
--# Switching with raw keycodes (layout-independent)
for i = 1, 10 do
local numberkey = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
hl.bind("SUPER + code:" .. numberkey[i], function()
hl.dispatch(hl.dsp.focus({ workspace = workspace_in_group(i) }))
end)
end
--# keypad numbers
for i = 1, 10 do
local numpadkey = { 87, 88, 89, 83, 84, 85, 79, 80, 81, 90 }
hl.bind("SUPER + code:" .. numpadkey[i], function()
hl.dispatch(hl.dsp.focus({ workspace = workspace_in_group(i) }))
end)
end
--#/# bind = SUPER+CTRL, code:,, -- Send to workspace & switch
for i = 1, 10 do
local numberkey = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
hl.bind("SUPER + CTRL + code:" .. numberkey[i], function()
hl.dispatch(hl.dsp.window.move({ workspace = workspace_in_group(i), follow = true }))
end)
end
--# keypad numbers
for i = 1, 10 do
local numpadkey = { 87, 88, 89, 83, 84, 85, 79, 80, 81, 90 }
hl.bind("SUPER + CTRL + code:" .. numpadkey[i], function()
hl.dispatch(hl.dsp.window.move({ workspace = workspace_in_group(i), follow = true }))
end)
end
--#/# bind = SUPER+ALT+SHIFT, Page_↑/↓,, -- Send to workspace left/right
for i = 1, 6 do
local key = { "SUPER + ALT + Page_", "SUPER + SHIFT + Page_", "CTRL + SUPER + SHIFT + " }
local keycombos =
{ key[1] .. "down", key[1] .. "up", key[2] .. "down", key[2] .. "up", key[3] .. "Right", key[3] .. "Left" }
local prefix = { "+", "-", "r+", "r-", "r+", "r-" }
hl.bind(keycombos[i], hl.dsp.window.move({ workspace = prefix[i] .. "1" })) -- # [hidden]
end
--##! Utilities
--#/# bind = SUPER+SHIFT+V, -- Paste as keystrokes
hl.bind(
"SUPER + SHIFT + V",
hl.dsp.exec_cmd("/home/alvin/.config/hypr/custom/scripts/paste-as-type.sh"),
{ description = "App: Browser Script" }
)
@@ -0,0 +1,3 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
@@ -0,0 +1,2 @@
#!/bin/bash
# The content of this script will be generated by switchwall.sh - Don't modify it by yourself.
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Grab text content from wayland clipboard
text=$(wl-paste --no-newline 2>/dev/null)
if [ -n "$text" ]; then
# Type out the clipboard string using ydotool
ydotool type -- "$text"
fi
@@ -0,0 +1,8 @@
-- This file will not be overwritten across dots-hyprland updates.
-- The file name is for the sake of organization and does not matter
-- See the corresponding files in ~/.config/hypr/hyprland for examples
terminal = "kitty"
browser = "zen-browser"
codeEditor = "nvim"
textEditor = "obsidian"
@@ -0,0 +1,9 @@
tt.*
.tests
doc/tags
debug
.repro
foo.*
*.log
data
.stfolder/
@@ -0,0 +1,15 @@
{
"neodev": {
"library": {
"enabled": true,
"plugins": true
}
},
"neoconf": {
"plugins": {
"lua_ls": {
"enabled": true
}
}
}
}
+201
View File
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+4
View File
@@ -0,0 +1,4 @@
# 💤 LazyVim
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
+2
View File
@@ -0,0 +1,2 @@
-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")
@@ -0,0 +1,54 @@
{
"Arduino-Nvim": { "branch": "main", "commit": "c9983b5ead3b2ce574d9bcb9708febad0f8ddbd7" },
"CopilotChat.nvim": { "branch": "main", "commit": "f0c2a23ab79dc295f5e0eef0d8b587a39020c852" },
"LazyVim": { "branch": "main", "commit": "c10948c50b18fae7f256433afdef09e432410480" },
"SchemaStore.nvim": { "branch": "main", "commit": "1f8835ba58a2ad341c9c1515316a3183596dbb60" },
"blink-copilot": { "branch": "main", "commit": "7ad8209b2f880a2840c94cdcd80ab4dc511d4f39" },
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
"blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"catppuccin": { "branch": "main", "commit": "058e83dc009e4dd62f30807054de9cc849699e27" },
"codeium.nvim": { "branch": "main", "commit": "821b570b526dbb05b57aa4ded578b709a704a38a" },
"conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" },
"copilot.lua": { "branch": "master", "commit": "2a849bc7bec4d175524c332c20d48ca9ece735df" },
"dial.nvim": { "branch": "master", "commit": "f2634758455cfa52a8acea6f142dcd6271a1bf57" },
"flash.nvim": { "branch": "main", "commit": "b6346946d10d07998efee029fb0f7a593806d0cd" },
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
"gitsigns.nvim": { "branch": "main", "commit": "31d6fb2d618bca1482b9f274751ead5f03461408" },
"grug-far.nvim": { "branch": "main", "commit": "1cc080f55706b38aabfa97d40acb6adf59ac4a5a" },
"inc-rename.nvim": { "branch": "main", "commit": "0074b551a17338ccdcd299bd86687cc651bcb33d" },
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
"lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" },
"lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "7adc933dabcc7c86ae6b07aff7ee68eac398491f" },
"mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" },
"mini.ai": { "branch": "main", "commit": "25248c6aa002391936a6200f12d1466015987133" },
"mini.hipatterns": { "branch": "main", "commit": "7c840c71d6a91f53d734cab2b6fe2290d285ec3b" },
"mini.icons": { "branch": "main", "commit": "98faae31e9be1cc054ae63485e58ceb185efcad0" },
"mini.pairs": { "branch": "main", "commit": "b1fd9df3bb4a41c8f45778a3859ee80ef6b367e3" },
"neotest": { "branch": "master", "commit": "4e2cd42c4252ee9d2435571d9adcdbc1d47931fe" },
"neotest-dart": { "branch": "main", "commit": "f10fc22a17559b3a7abb400e266db0a1201979e7" },
"neotest-golang": { "branch": "main", "commit": "61726ad54b6b94c73d130b65c33575d13a61fc11" },
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-ansible": { "branch": "main", "commit": "c7f595d568b588942d4d0c37b5cd6cae3764a148" },
"nvim-lint": { "branch": "master", "commit": "a219b2c9e5b4765e5c845aba119dad55806fcaf1" },
"nvim-lspconfig": { "branch": "master", "commit": "e7ca2c95ba316a8b846d3f3546d407908c5c4ccb" },
"nvim-nio": { "branch": "master", "commit": "edcc181a875301dd21840189aa2f2f9ad69fc172" },
"nvim-treesitter": { "branch": "main", "commit": "7248feaca45e4d944591497964bc19afa89ad1c6" },
"nvim-treesitter-textobjects": { "branch": "main", "commit": "898ee307df58f854d11cd7edd06472574d48014e" },
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
"render-markdown.nvim": { "branch": "main", "commit": "f422cb5c6855f150e2ddcfaf44e7157b98b34f6a" },
"snacks.nvim": { "branch": "main", "commit": "882c996cf28183f4d63640de0b4c02ec886d01f2" },
"telescope.nvim": { "branch": "master", "commit": "427b576c16792edad01a92b89721d923c19ad60f" },
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
"ts-comments.nvim": { "branch": "main", "commit": "a59d6092213447450191122c9346f309161504cb" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" },
"yanky.nvim": { "branch": "main", "commit": "020c22d0cfa60358569e49d1d7b91630f175aef0" }
}
@@ -0,0 +1,29 @@
{
"extras": [
"lazyvim.plugins.extras.ai.codeium",
"lazyvim.plugins.extras.ai.copilot",
"lazyvim.plugins.extras.ai.copilot-chat",
"lazyvim.plugins.extras.coding.yanky",
"lazyvim.plugins.extras.editor.dial",
"lazyvim.plugins.extras.editor.inc-rename",
"lazyvim.plugins.extras.lang.ansible",
"lazyvim.plugins.extras.lang.dart",
"lazyvim.plugins.extras.lang.docker",
"lazyvim.plugins.extras.lang.git",
"lazyvim.plugins.extras.lang.go",
"lazyvim.plugins.extras.lang.json",
"lazyvim.plugins.extras.lang.markdown",
"lazyvim.plugins.extras.lang.toml",
"lazyvim.plugins.extras.lang.typescript",
"lazyvim.plugins.extras.lang.typescript.vtsls",
"lazyvim.plugins.extras.lang.yaml",
"lazyvim.plugins.extras.test.core",
"lazyvim.plugins.extras.util.dot",
"lazyvim.plugins.extras.util.mini-hipatterns"
],
"install_version": 8,
"news": {
"NEWS.md": "11866"
},
"version": 8
}
@@ -0,0 +1,8 @@
-- Autocmds are automatically loaded on the VeryLazy event
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
--
-- Add any additional autocmds here
-- with `vim.api.nvim_create_autocmd`
--
-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
@@ -0,0 +1,3 @@
-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
-- Add any additional keymaps here
@@ -0,0 +1,53 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
spec = {
-- add LazyVim and import its plugins
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
-- import/override with your plugins
{ import = "plugins" },
},
defaults = {
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
lazy = false,
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
-- have outdated releases, which may break your Neovim install.
version = false, -- always use the latest git commit
-- version = "*", -- try installing the latest stable version for plugins that support semver
},
install = { colorscheme = { "tokyonight", "habamax" } },
checker = {
enabled = true, -- check for plugin updates periodically
notify = false, -- notify on update
}, -- automatically check for plugin updates
performance = {
rtp = {
-- disable some rtp plugins
disabled_plugins = {
"gzip",
-- "matchit",
-- "matchparen",
-- "netrwPlugin",
"tarPlugin",
"tohtml",
"tutor",
"zipPlugin",
},
},
},
})
@@ -0,0 +1,27 @@
-- Options are automatically loaded before lazy.nvim startup
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
-- Add any additional options here
-- SpellCheck
-- Filter diagnostics to hide warnings but keep errors, info, and hints
local function filter_warnings(diagnostic)
return diagnostic.severity ~= vim.diagnostic.severity.WARN
end
vim.diagnostic.config({
virtual_text = {
format = function(diagnostic)
if diagnostic.severity == vim.diagnostic.severity.WARN then
return ""
end
return diagnostic.message
end,
},
signs = {
filter = filter_warnings,
},
underline = {
filter = filter_warnings,
},
})
@@ -0,0 +1,23 @@
return {
"yuukiflow/Arduino-Nvim",
ft = "arduino",
opts = {
use_default_keymaps = false,
keymaps = {
{ mode = "n", key = "<Leader>mc", func = ":InoCheck<CR>" },
{ mode = "n", key = "<Leader>mu", func = ":InoUpload<CR>" },
{ mode = "n", key = "<Leader>ms", func = ":InoStatus<CR>" },
{ mode = "n", key = "<Leader>mg", func = ":InoGUI<CR>" },
{ mode = "n", key = "<Leader>mm", func = ":InoMonitor<CR>" },
{ mode = "n", key = "<Leader>ml", func = ":InoLib<CR>" },
{ mode = "n", key = "<Leader>mb", func = ":InoSelectBoard<CR>" },
{ mode = "n", key = "<Leader>mp", func = ":InoSelectPort<CR>" },
{ mode = "n", key = "<Leader>mr", func = ":InoUploadReset<CR>" },
},
},
dependencies = {
"nvim-telescope/telescope.nvim",
-- optional: remove if you use Neovim's built-in LSP (>= 0.11)
"neovim/nvim-lspconfig",
},
}
@@ -0,0 +1,197 @@
-- since this is just an example spec, don't actually load anything here and return an empty spec
-- stylua: ignore
if true then return {} end
-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
--
-- In your plugin files, you can:
-- * add extra plugins
-- * disable/enabled LazyVim plugins
-- * override the configuration of LazyVim plugins
return {
-- add gruvbox
{ "ellisonleao/gruvbox.nvim" },
-- Configure LazyVim to load gruvbox
{
"LazyVim/LazyVim",
opts = {
colorscheme = "gruvbox",
},
},
-- change trouble config
{
"folke/trouble.nvim",
-- opts will be merged with the parent spec
opts = { use_diagnostic_signs = true },
},
-- disable trouble
{ "folke/trouble.nvim", enabled = false },
-- override nvim-cmp and add cmp-emoji
{
"hrsh7th/nvim-cmp",
dependencies = { "hrsh7th/cmp-emoji" },
---@param opts cmp.ConfigSchema
opts = function(_, opts)
table.insert(opts.sources, { name = "emoji" })
end,
},
-- change some telescope options and a keymap to browse plugin files
{
"nvim-telescope/telescope.nvim",
keys = {
-- add a keymap to browse plugin files
-- stylua: ignore
{
"<leader>fp",
function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
desc = "Find Plugin File",
},
},
-- change some options
opts = {
defaults = {
layout_strategy = "horizontal",
layout_config = { prompt_position = "top" },
sorting_strategy = "ascending",
winblend = 0,
},
},
},
-- add pyright to lspconfig
{
"neovim/nvim-lspconfig",
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
-- pyright will be automatically installed with mason and loaded with lspconfig
pyright = {},
},
},
},
-- add tsserver and setup with typescript.nvim instead of lspconfig
{
"neovim/nvim-lspconfig",
dependencies = {
"jose-elias-alvarez/typescript.nvim",
init = function()
require("lazyvim.util").lsp.on_attach(function(_, buffer)
-- stylua: ignore
vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
end)
end,
},
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
-- tsserver will be automatically installed with mason and loaded with lspconfig
tsserver = {},
},
-- you can do any additional lsp server setup here
-- return true if you don't want this server to be setup with lspconfig
---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
setup = {
-- example to setup with typescript.nvim
tsserver = function(_, opts)
require("typescript").setup({ server = opts })
return true
end,
-- Specify * to use this function as a fallback for any server
-- ["*"] = function(server, opts) end,
},
},
},
-- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
-- treesitter, mason and typescript.nvim. So instead of the above, you can use:
{ import = "lazyvim.plugins.extras.lang.typescript" },
-- add more treesitter parsers
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"bash",
"html",
"javascript",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"query",
"regex",
"tsx",
"typescript",
"vim",
"yaml",
},
},
},
-- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
-- would overwrite `ensure_installed` with the new value.
-- If you'd rather extend the default config, use the code below instead:
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
-- add tsx and treesitter
vim.list_extend(opts.ensure_installed, {
"tsx",
"typescript",
})
end,
},
-- the opts function can also be used to change the default opts:
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function(_, opts)
table.insert(opts.sections.lualine_x, {
function()
return "😄"
end,
})
end,
},
-- or you can return new options to override all the defaults
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function()
return {
--[[add your custom lualine config here]]
}
end,
},
-- use mini.starter instead of alpha
{ import = "lazyvim.plugins.extras.ui.mini-starter" },
-- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
{ import = "lazyvim.plugins.extras.lang.json" },
-- add any tools you want to have installed below
{
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"stylua",
"shellcheck",
"shfmt",
"flake8",
},
},
},
}
@@ -0,0 +1,44 @@
return {
"neovim/nvim-lspconfig",
opts = {
servers = {
harper_ls = {
settings = {
["harper-ls"] = {
userDictPath = {
"~/.config/obsidian/Custom Dictionary.txt",
-- "/usr/share/dict/words",
-- "$HOME/.local/share/harper-ls/file_dictionaries",
},
workspaceDictPath = "",
fileDictPath = "",
linters = {
SpellCheck = true,
SpelledNumbers = false,
AnA = true,
SentenceCapitalization = true,
UnclosedQuotes = true,
WrongApostrophe = false,
LongSentences = true,
RepeatedWords = true,
Spaces = true,
CorrectNumberSuffix = true,
},
codeActions = {
ForceStable = false,
},
markdown = {
IgnoreLinkTitle = false,
},
diagnosticSeverity = "hint",
isolateEnglish = false,
dialect = "Australian",
maxFileLength = 120000,
ignoredLintsPath = "",
excludePatterns = {},
},
},
},
},
},
}
@@ -0,0 +1,53 @@
return {
"epwalsh/obsidian.nvim",
version = "*",
lazy = true,
ft = "markdown",
dependencies = {
"nvim-lua/plenary.nvim",
"hrsh7th/nvim-cmp",
"nvim-telescope/telescope.nvim",
"nvim-treesitter/nvim-treesitter",
},
opts = {
workspaces = {
{
name = "Personal",
path = "~/Obsidian/Personal/",
},
{
name = "School-Obsidian",
path = "~/Obsidian/School-Obsidian/",
},
},
log_level = vim.log.levels.INFO,
daily_notes = {
folder = "notes/dailies",
date_format = "%Y-%m-%d",
alias_format = "%B %-d, %Y",
default_tags = { "daily-notes" },
template = nil,
},
new_notes_location = "1Projects",
completion = {
nvim_cmp = true,
min_chars = 2,
},
mappings = {
-- Toggle check-boxes
["<leader>ch"] = {
action = function()
return require("obsidian").util.toggle_checkbox()
end,
opts = { buffer = true },
},
-- Smart action (smart enter)
["<cr>"] = {
action = function()
return require("obsidian").util.smart_action()
end,
opts = { buffer = true, expr = true },
},
},
},
}
@@ -0,0 +1,3 @@
indent_type = "Spaces"
indent_width = 2
column_width = 120
+103
View File
@@ -0,0 +1,103 @@
# Don't print a new line at the start of the prompt
add_newline = false
# Pipes ╰─ ╭─
# Powerline symbols                                   
# Wedges 🭧🭒 🭣🭧🭓
# Random noise 🬖🬥🬔🬗
# Cool stuff 󰜥   
# format = """
# $directory $fill $git_branch $cmd_duration
# $character"""
format = """
$cmd_duration $directory$git_branch
$character"""
[fill]
symbol = '-'
style = 'fg:245'
# Replace the "❯" symbol in the prompt with "➜"
[character] # The name of the module we are configuring is "character"
success_symbol = "[ ](bold fg:243)"
error_symbol = "[ ](bold fg:244)"
# Disable the package module, hiding it from the prompt completely
[package]
disabled = true
[git_branch]
style = "bg: 252"
symbol = "󰘬"
truncation_length = 12
truncation_symbol = ""
format = " 󰜥 [](bold fg:252)[$symbol $branch(:$remote_branch)](fg:235 bg:252)[ ](bold fg:252)"
[git_commit]
commit_hash_length = 4
tag_symbol = " "
[git_state]
format = '[\($state( $progress_current of $progress_total)\)]($style) '
cherry_pick = "[🍒 PICKING](bold red)"
[git_status]
conflicted = " 🏳 "
ahead = " 🏎💨 "
behind = " 😰 "
diverged = " 😵 "
untracked = " 🤷 ‍"
stashed = " 📦 "
modified = " 📝 "
staged = '[++\($count\)](green)'
renamed = " ✍️ "
deleted = " 🗑 "
[hostname]
ssh_only = false
format = "[•$hostname](bg:252 bold fg:235)[](bold fg:252)"
trim_at = ".companyname.com"
disabled = false
[line_break]
disabled = false
[memory_usage]
disabled = true
threshold = -1
symbol = " "
style = "bold dimmed green"
[time]
disabled = true
format = '🕙[\[ $time \]]($style) '
time_format = "%T"
[username]
style_user = "bold bg:252 fg:235"
style_root = "red bold"
format = "[](bold fg:252)[$user]($style)"
disabled = false
show_always = true
[directory]
home_symbol = " "
read_only = "  "
style = "bg:255 fg:240"
truncation_length = 2
truncation_symbol = ".../"
format = '[](bold fg:255)[󰉋 → $path]($style)[](bold fg:255)'
[directory.substitutions]
"Desktop" = "  "
"Documents" = "  "
"Downloads" = "  "
"Music" = " 󰎈 "
"Pictures" = "  "
"Videos" = "  "
"GitHub" = " 󰊤 "
[cmd_duration]
min_time = 0
format = '[](bold fg:252)[󰪢 $duration](bold bg:252 fg:235)[](bold fg:252)'
+36
View File
@@ -0,0 +1,36 @@
# Setup fzf
# ---------
if [[ ! "$PATH" == *${FZF_PATH}/bin* ]]; then
export PATH="$PATH:${FZF_PATH}/bin"
fi
function _fzf_settings_has() {
which "$@" > /dev/null 2>&1
}
if _fzf_settings_has brew; then
# If fzf was installed via brew, use the brew paths
if [[ -x "$(brew --prefix)/bin/fzf" ]]; then
if [[ -f "$(brew --prefix fzf)/shell/completion.zsh" ]]; then
source "$(brew --prefix fzf)/shell/completion.zsh" 2> /dev/null
fi
if [[ -f "$(brew --prefix fzf)/shell/key-bindings.zsh" ]]; then
source "$(brew --prefix fzf)/shell/key-bindings.zsh"
fi
fi
fi
# Auto-completion
# ---------------
if [[ -f "${FZF_PATH}/shell/completion.zsh" ]]; then
[[ $- == *i* ]] && source "${FZF_PATH}/shell/completion.zsh" 2> /dev/null
fi
# Key bindings
# ------------
if [[ -f "${FZF_PATH}/shell/key-bindings.zsh" ]]; then
source "${FZF_PATH}/shell/key-bindings.zsh"
fi
# Cleanup internal functions
unset -f _fzf_settings_has
+186
View File
@@ -0,0 +1,186 @@
# If you come from bash, you might have to change your $PATH.
export PATH=$HOME/bin:/usr/local/bin:$PATH
export PATH="$HOME/.local/bin:$PATH"
export WAYLAND_DISPLAY=$WAYLAND_DISPLAY
export XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR
# Homebrew (If installed)
if [[ -f "/home/linusbrew/.linuxbrew/bin/brew" ]]; then
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv zsh)"
fi
# Ghostty (If exists)
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
fi
# Path to your oh-my-zsh installation.
export ZSH=~/.oh-my-zsh
# Set the name of the theme to load. If you set this to "random"
# It'll load a random theme each time that oh-my-zsh is loaded.
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="gnzh"
# Set the list of themes to load
# Setting this variable when ZSH_THEME=random
# cause zsh to load the theme from this variable instead of
# looking in ~/.oh-my-zsh/themes/
# An empty array has no effect
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
CASE_SENSITIVE="true"
#Zsh autocorrect
unsetopt correct_all
# Uncomment the following line to use hyphen-insensitive completion. Case
# sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"
# Uncomment the following line to change how often auto-update (in days) is used.
# export UPDATE_ZSH_DAYS=13
# Uncomment the following line to disable colours in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting the terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status checks for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# HIST_STAMPS="mm/dd/yyyy"
# Uncomment the following to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
git
zsh-history-substring-search
zsh-autosuggestions
zsh-autocomplete
# zsh-eza
fzf-zsh-plugin
zsh-syntax-highlighting
)
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to set your language environment manually
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='vim'
else
export EDITOR='nvim'
fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# ssh
# export SSH_KEY_PATH="~/.ssh/rsa_id"
update () {
# Update arch based systems with yay AUR helper
if command -v pacman >/dev/null && command -v yay >/dev/null; then
echo "✅ 'pacman' and 'yay' found. Updating."
sudo pacman -Syu --noconfirm
yay -Syu --sudoloop --save --answerclean None --answerdiff None --noconfirm
elif command -v pacman >/dev/null; then
echo "✅ 'pacman' found. Updating."
sudo pacman -Syu --noconfirm
fi
if command -v paru >/dev/null; then
echo "✅ 'flatpak' found. Updating."
paru -Syu
fi
# Update on debian based systems
if command -v apt >/dev/null; then
echo "✅ 'apt' found. Updating."
sudo apt update && sudo apt full-upgrade -y
fi
# Update Hyprland
if command -v hyprpm >/dev/null; then
echo "✅ 'hyprpm' found. Updating."
hyprpm reload && sleep 2
hyprpm update
fi
# Update Flatpak
if command -v flatpak >/dev/null; then
echo "✅ 'flatpak' found. Updating."
flatpak update -y
fi
# Update npm
if command -v npm >/dev/null; then
echo "✅ 'npm' found. Updating."
sudo npm install -g npm-check-updates
fi
omz update
}
# Sudo last command with control + u
zle -N sudo-last-command-execute
sudo-last-command-execute() {
zle -U $'sudo !!\n'
}
# Bind the widget to Alt+S
bindkey '^[S' sudo-last-command-execute
# Ydotool
if [[ -f "/tmp/.ydotool_socket" ]]; then
export YDOTOOL_SOCKET=/tmp/.ydotool_socket
fi
# Haven android ssh client
precmd() { print -Pn '\e]133;D;%?\a\e]133;A\a' }
preexec() { print -Pn '\e]133;B\a\e]133;C\a' }
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
alias lzd="lazydocker"
alias edit="nvim"
alias rpi="pkexec /usr/bin/rpi-imager"
+61
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail
# Populate the keyring in the built root from the keyring bundles # Populate the keyring in the built root from the keyring bundles
# (/usr/share/pacman/keyrings, incl. the copied cachyos keyring). # (/usr/share/pacman/keyrings, incl. the copied cachyos keyring).
# This mirrors the guide; it runs inside the image you are making. # This mirrors the guide; it runs inside the image you are making.
@@ -11,3 +13,62 @@ pacman-key --populate archlinux cachyos chaotic
# overwrite this directory's configured version. # overwrite this directory's configured version.
install -m 0644 /root/.live-pacman.conf /etc/pacman.conf install -m 0644 /root/.live-pacman.conf /etc/pacman.conf
rm -f /root/.live-pacman.conf rm -f /root/.live-pacman.conf
# ============================================================================
# Pre-install dotfile dependencies into /etc/skel so new users get them
# instantly on first login (no network required).
# ============================================================================
SKEL="/etc/skel"
# ── Oh-My-Zsh ────────────────────────────────────────────────────────────────
if [[ ! -d "${SKEL}/.oh-my-zsh" ]]; then
echo "[customize] Cloning Oh-My-Zsh into skel..."
git clone --depth=1 https://github.com/ohmyzsh/ohmyzsh.git "${SKEL}/.oh-my-zsh"
fi
# Oh-My-Zsh custom plugins
ZSH_CUSTOM="${SKEL}/.oh-my-zsh/custom"
mkdir -p "${ZSH_CUSTOM}/plugins"
declare -A OMZ_PLUGINS=(
[zsh-history-substring-search]="https://github.com/zsh-users/zsh-history-substring-search.git"
[zsh-autosuggestions]="https://github.com/zsh-users/zsh-autosuggestions.git"
[zsh-eza]="https://github.com/z-shell/zsh-eza.git"
[fzf-zsh-plugin]="https://github.com/unixorn/fzf-zsh-plugin.git"
[zsh-syntax-highlighting]="https://github.com/zsh-users/zsh-syntax-highlighting.git"
[zsh-autocomplete]="https://github.com/marlonrichert/zsh-autocomplete.git"
)
for plugin in "${!OMZ_PLUGINS[@]}"; do
target="${ZSH_CUSTOM}/plugins/${plugin}"
if [[ ! -d "${target}" ]]; then
echo "[customize] Cloning OMZ plugin: ${plugin}"
git clone --depth=1 "${OMZ_PLUGINS[${plugin}]}" "${target}"
fi
done
# ── LazyVim (lazy.nvim bootstraps on first launch, but pre-clone the plugin) ─
NVIM_DATA="${SKEL}/.local/share/nvim"
mkdir -p "${NVIM_DATA}"
if [[ ! -d "${NVIM_DATA}/lazy/lazy.nvim" ]]; then
echo "[customize] Pre-cloning lazy.nvim for LazyVim..."
git clone --filter=blob:none --branch=stable \
https://github.com/folke/lazy.nvim.git "${NVIM_DATA}/lazy/lazy.nvim"
fi
# ── Fish: ensure default shell is set for the live user ──────────────────────
# The live user (usually 'archlinux' or 'root') gets fish as default shell
if command -v fish &>/dev/null; then
echo "[customize] Setting fish as default shell for skel..."
chsh -s /usr/bin/fish root 2>/dev/null || true
fi
# ── Ensure skel directories have correct permissions ─────────────────────────
chmod 700 "${SKEL}/.config" 2>/dev/null || true
find "${SKEL}/.config" -type f -exec chmod 644 {} \; 2>/dev/null || true
find "${SKEL}/.config" -type d -exec chmod 755 {} \; 2>/dev/null || true
find "${SKEL}/.config" -name '*.sh' -exec chmod 755 {} \; 2>/dev/null || true
find "${SKEL}/.local" -type d -exec chmod 755 {} \; 2>/dev/null || true
echo "[customize] Dotfile pre-installation complete."
+198
View File
@@ -0,0 +1,198 @@
#!/usr/bin/env bash
# ============================================================================
# build-end4-deps.sh — Build ALL end-4 (illogical-impulse) AUR dependencies
#
# This script builds every AUR package required by the end-4 dots-hyprland
# dotfiles that is NOT in the official Arch repos or chaotic-aur.
#
# It uses --noconfirm throughout so the entire run is non-interactive.
#
# Usage:
# ./localrepo/build-end4-deps.sh # build all
# ./localrepo/build-end4-deps.sh --quick # skip large AUR pkgs (use existing)
#
# After building, run ./localrepo/update.sh to refresh the repo database.
# ============================================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_DIR="${SCRIPT_DIR}"
WORK_DIR=$(mktemp -d /tmp/end4-build.XXXXXX)
SKIP_LARGE=false
for arg in "$@"; do
case "$arg" in
--quick) SKIP_LARGE=true ;;
esac
done
# ── colours ──────────────────────────────────────────────────────────────────
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'
info() { echo -e "${CYAN}[INFO]${NC} $*"; }
ok() { echo -e "${GREEN}[OK]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
fail() { echo -e "${RED}[FAIL]${NC} $*"; }
# ── helper: build a single AUR package ───────────────────────────────────────
build_aur_pkg() {
local pkg="$1"
local src_url="https://aur.archlinux.org/cgit/aur.git/snapshot/${pkg}.tar.gz"
local pkg_dir="${WORK_DIR}/${pkg}"
info "Building AUR package: ${pkg}"
mkdir -p "${pkg_dir}"
if ! curl -fsSL "${src_url}" | tar xz -C "${WORK_DIR}"; then
fail "Failed to download ${pkg}"; return 1
fi
if ! (cd "${pkg_dir}" && makepkg -sfi --noconfirm --cleanbuild); then
fail "Failed to build ${pkg}"; return 1
fi
# Move built packages to localrepo
find "${pkg_dir}" -maxdepth 1 -name '*.pkg.tar.zst' -exec mv -f {} "${REPO_DIR}/" \;
ok "Built: ${pkg}"
return 0
}
# ── helper: build from a local PKGBUILD directory ────────────────────────────
build_local_pkgbuild() {
local pkg_dir="$1"
local pkg_name
pkg_name=$(basename "${pkg_dir}")
if ls "${REPO_DIR}"/illogical-impulse-"${pkg_name}"-*.pkg.tar.zst 1>/dev/null 2>&1; then
info "Package already exists in localrepo, skipping: ${pkg_name}"
return 0
fi
info "Building local PKGBUILD: ${pkg_name}"
if ! (cd "${pkg_dir}" && makepkg -sfi --noconfirm --cleanbuild); then
fail "Failed to build ${pkg_name}"; return 1
fi
find "${pkg_dir}" -maxdepth 1 -name '*.pkg.tar.zst' -exec mv -f {} "${REPO_DIR}/" \;
ok "Built: ${pkg_name}"
return 0
}
# ============================================================================
# 1. Build end-4 metapackages from local PKGBUILDs
# ============================================================================
info "═══ Step 1: Building end-4 metapackages ═══"
for pkg_dir in "${SCRIPT_DIR}"/end4-pkgbuilds/*/; do
build_local_pkgbuild "${pkg_dir}" || true
done
# ============================================================================
# 2. Build AUR dependencies required by end-4
# ============================================================================
info "═══ Step 2: Building AUR dependencies ═══"
# ── Theming & appearance ─────────────────────────────────────────────────────
AUR_THEMING=(
adw-gtk-theme-git
darkly-bin
ttf-material-symbols-variable-git
ttf-readex-pro
ttf-rubik-vf
ttf-twemoji
otf-space-grotesk
kde-material-you-colors-git
)
# ── end-4 specific / build-from-source packages ──────────────────────────────
# matugen — material you color generation tool
# speech-dispatcher — may need AUR build on some setups
AUR_TOOLS=(
matugen
python-rpypostprocess
tts
)
# ── Packages not in any standard repo ────────────────────────────────────────
AUR_MISSING=(
asciinema-agg
davs2
syncthingtray-qt6
varia
woeusb-ng
ttf-ms-fonts
)
# ── Large / complex builds (skipped with --quick) ────────────────────────────
AUR_LARGE=(
# quickshell is already built from end4-pkgbuilds above
)
# ── Run builds ───────────────────────────────────────────────────────────────
FAILED=()
for pkg in "${AUR_THEMING[@]}" "${AUR_TOOLS[@]}" "${AUR_MISSING[@]}"; do
build_aur_pkg "${pkg}" || FAILED+=("${pkg}")
done
if [[ "${SKIP_LARGE}" == false ]]; then
for pkg in "${AUR_LARGE[@]}"; do
build_aur_pkg "${pkg}" || FAILED+=("${pkg}")
done
fi
# ============================================================================
# 3. Build end-4 setup script dependencies (from dots-hyprland/setup)
# ============================================================================
info "═══ Step 3: Building end-4 setup helper packages ═══"
DOTS_DIR="${HOME}/dots-hyprland"
if [[ -d "${DOTS_DIR}" ]]; then
# Build any remaining metapackages from the dist-arch directory
for pkg_dir in "${DOTS_DIR}"/sdata/dist-arch/illogical-impulse-*/; do
pkg_name=$(basename "${pkg_dir}")
# Skip the ones we already built above
if ls "${REPO_DIR}"/illogical-impulse-"${pkg_name#illogical-impulse-}"-*.pkg.tar.zst 1>/dev/null 2>&1; then
info "Already built, skipping: ${pkg_name}"
continue
fi
# Only build packages that have a PKGBUILD (metapackages with depends=())
if [[ -f "${pkg_dir}/PKGBUILD" ]]; then
info "Building from dots-hyprland: ${pkg_name}"
(cd "${pkg_dir}" && makepkg -sfi --noconfirm --cleanbuild) || {
warn "Failed to build ${pkg_name} from dots-hyprland, skipping"
continue
}
find "${pkg_dir}" -maxdepth 1 -name '*.pkg.tar.zst' -exec mv -f {} "${REPO_DIR}/" \;
ok "Built: ${pkg_name}"
fi
done
else
warn "dots-hyprland not found at ${DOTS_DIR}, skipping dist-arch builds"
fi
# ============================================================================
# 4. Refresh local repository database
# ============================================================================
info "═══ Step 4: Refreshing local repository database ═══"
bash "${SCRIPT_DIR}/update.sh"
# ============================================================================
# 5. Cleanup & summary
# ============================================================================
rm -rf "${WORK_DIR}"
echo ""
echo "═══════════════════════════════════════════════════════════════"
if [[ ${#FAILED[@]} -gt 0 ]]; then
warn "Build completed with ${#FAILED[@]} failures:"
for f in "${FAILED[@]}"; do
echo " ✗ ${f}"
done
echo ""
echo "The following packages were built successfully into localrepo:"
else
ok "All builds completed successfully!"
fi
echo ""
echo "Packages in localrepo:"
ls -1 "${REPO_DIR}"/*.pkg.tar.zst 2>/dev/null | while read -r p; do
echo " ✓ $(basename "${p}")"
done
echo "═══════════════════════════════════════════════════════════════"
@@ -0,0 +1,18 @@
groups=(illogical-impulse)
pkgname=illogical-impulse-bibata-modern-classic-bin
pkgver=2.0.6
pkgrel=2
pkgdesc="Material Based Cursor Theme, installed for illogical-impulse dotfiles"
arch=('any')
url="https://github.com/ful1e5/Bibata_Cursor"
license=('GPL-3.0-or-later')
conflicts=("bibata-cursor-theme" "bibata-cursor-theme-bin")
options=('!strip')
_variant=Bibata-Modern-Classic
source=("${pkgname%-bin}-$pkgver.tar.xz::$url/releases/download/v$pkgver/$_variant.tar.xz")
sha256sums=('SKIP')
package() {
install -dm755 "$pkgdir/usr/share/icons"
cp -dr --no-preserve=mode $_variant "$pkgdir/usr/share/icons"
}
@@ -0,0 +1,39 @@
groups=(illogical-impulse)
pkgname=illogical-impulse-microtex-git
_pkgname=MicroTeX
pkgver=r494.0e3707f
pkgrel=4
pkgdesc='MicroTeX for illogical-impulse dotfiles.'
#pkgdesc="A dynamic, cross-platform, and embeddable LaTeX rendering library"
arch=("x86_64")
#url="https://github.com/NanoMichael/${_pkgname}"
url="https://github.com/end-4/${_pkgname}"
license=('MIT')
depends=(
tinyxml2
gtkmm3
gtksourceviewmm
cairomm
)
makedepends=("git" "cmake")
source=("git+${url}.git")
sha256sums=("SKIP")
prepare() {
cd $_pkgname
sed -i 's/gtksourceviewmm-3.0/gtksourceviewmm-4.0/' CMakeLists.txt
sed -i 's/tinyxml2.so.10/tinyxml2.so.11/' CMakeLists.txt
}
build() {
cd $_pkgname
cmake -B build -S . -DCMAKE_BUILD_TYPE=None
cmake --build build
}
package() {
cd $_pkgname
install -Dm0755 -t "$pkgdir/opt/$_pkgname/" build/LaTeX
cp -r build/res "$pkgdir/opt/$_pkgname/"
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname/" LICENSE
}
@@ -0,0 +1,82 @@
_commit='7511545ee20664e3b8b8d3322c0ffe7567c56f7a'
# Useful links:
# https://git.outfoxxed.me/quickshell/quickshell/commits/branch/master
# https://aur.archlinux.org/packages/quickshell-git
groups=(illogical-impulse)
_prefix='illogical-impulse'
_pkgname=quickshell
pkgname="$_prefix-$_pkgname-git"
pkgver=0.1.0.r1
pkgrel=8
pkgdesc="$_pkgname-git pinned commit and extra deps for $_prefix"
arch=(x86_64 aarch64)
url='https://git.outfoxxed.me/quickshell/quickshell'
options=(!strip)
license=('LGPL-3.0-only')
depends=(
'cpptrace'
'jemalloc'
'mesa'
'qt6-declarative'
'qt6-base'
'qt6-svg'
'libdrm'
'libpipewire'
'libxcb'
'wayland'
# NOTE: Below are custom dependencies of illogical-impulse
qt6-5compat
qt6-avif-image-plugin
qt6-imageformats
qt6-multimedia
qt6-positioning
qt6-quicktimeline
qt6-sensors
qt6-svg
qt6-tools
qt6-translations
qt6-virtualkeyboard
qt6-wayland
kirigami
kdialog
syntax-highlighting
)
makedepends=(
'cli11'
'cmake'
'git'
'ninja'
'qt6-shadertools'
'spirv-tools'
'vulkan-headers'
'wayland'
'wayland-protocols'
)
provides=("$_pkgname" "$_pkgname-git")
conflicts=("$_pkgname" "$_pkgname-git")
_pkgsrc="$_pkgname"
source=("$_pkgsrc::git+$url.git#commit=$_commit"
quickshell-check.hook)
sha256sums=('SKIP'
'8543e21aeaaa5441b73a679160e7601a957f16c433e8d6bd9257e80bd0e94083')
build() {
cd "$_pkgname"
cmake -GNinja -B build \
-DCMAKE_BUILD_TYPE="RelWithDebInfo" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DDISTRIBUTOR="AUR (package: quickshell-git)" \
-DDISTRIBUTOR_DEBUGINFO_AVAILABLE=NO \
-DINSTALL_QML_PREFIX=lib/qt6/qml
cmake --build build
}
package() {
install -Dm644 "quickshell-check.hook" -t "$pkgdir/usr/share/libalpm/hooks"
cd "$_pkgname"
DESTDIR="$pkgdir" cmake --install build
install -Dm644 "LICENSE" -t "$pkgdir/usr/share/licenses/$_pkgname"
}
@@ -0,0 +1,10 @@
[Trigger]
Operation = Upgrade
Operation = Install
Type = Package
Target = qt6-base
Target = qt6-wayland
[Action]
Description = Querying Quickshell compatibility after Qt6 update...
When = PostTransaction
Exec = /usr/bin/quickshell --private-check-compat
+66 -1
View File
@@ -14,19 +14,23 @@ base
base-devel base-devel
bash bash
bat bat
bc
bcachefs-tools bcachefs-tools
bind bind
blueman blueman
bluez bluez
bluez-uttils bluez-utils
bolt bolt
brightnessctl
brltty brltty
btop btop
bullet
btrfs-progs btrfs-progs
bully bully
cachyos-keyring cachyos-keyring
cachyos-mirrorlist cachyos-mirrorlist
catppuccin-cursors-macchiato catppuccin-cursors-macchiato
cava
celt celt
chaotic-keyring chaotic-keyring
chaotic-mirrorlist chaotic-mirrorlist
@@ -34,6 +38,8 @@ cifs-utils
clamav clamav
clonezilla clonezilla
cloud-init cloud-init
cliphist
cmake
cmatrix cmatrix
code code
cowsay cowsay
@@ -50,6 +56,7 @@ dialog
diffutils diffutils
dmidecode dmidecode
dmraid dmraid
ddcutil
dnsmasq dnsmasq
dolphin-plugins dolphin-plugins
dosfstools dosfstools
@@ -69,6 +76,9 @@ exfatprogs
f2fs-tools f2fs-tools
faac faac
faad2 faad2
fish
flac
fontconfig
fastfetch fastfetch
fatresize fatresize
fcitx5 fcitx5
@@ -93,6 +103,7 @@ fzf
ghostty ghostty
ghostty-terminfo ghostty-terminfo
git git
geoclue
glib2-devel glib2-devel
gnome-disk-utility gnome-disk-utility
gnome-font-viewer gnome-font-viewer
@@ -100,6 +111,7 @@ gnome-online-accounts
gnome-power-manager gnome-power-manager
gpart gpart
gparted gparted
go-yq
gpm gpm
gptfdisk gptfdisk
grml-zsh-config grml-zsh-config
@@ -120,13 +132,20 @@ hcxtools
hdparm hdparm
htop htop
hyperv hyperv
hypridle
hyprlock
hyprpolkitagent hyprpolkitagent
hyprpicker
hyprshot
hyprsunset
icu
intel-ucode intel-ucode
inxi inxi
irssi irssi
iw iw
iwd iwd
jfsutils jfsutils
jq
just just
kdeconnect kdeconnect
kde-inotify-survey kde-inotify-survey
@@ -134,6 +153,8 @@ kdenetwork-filesharing
kimageformats kimageformats
kio-admin kio-admin
kio-gdrive kio-gdrive
kirigami
kitty
kitty-terminfo kitty-terminfo
kleopatra kleopatra
kmscon-terminfo kmscon-terminfo
@@ -146,6 +167,14 @@ kwalletmanager
lazygit lazygit
ldns ldns
less less
libass
libdbusmenu-gtk3
libdecor
libevdev
libportal
libportal-gtk4
libqalculate
libpipewire
lftp lftp
libfido2 libfido2
libfprint libfprint
@@ -172,10 +201,12 @@ magic-wormhole
mako mako
man-db man-db
man-pages man-pages
matugen
mc mc
mdadm mdadm
memtest86+ memtest86+
memtest86+-efi memtest86+-efi
meson
meshy-git meshy-git
mkinitcpio mkinitcpio
mkinitcpio-archiso mkinitcpio-archiso
@@ -188,6 +219,7 @@ mplayer
mpv-mpris mpv-mpris
mtools mtools
nano nano
ncurses
nbd nbd
ndisc6 ndisc6
neofetch neofetch
@@ -220,6 +252,7 @@ open-vm-tools
openvpn openvpn
os-prober os-prober
otf-font-awesome otf-font-awesome
otf-space-grotesk
pacman-contrib pacman-contrib
pacserve pacserve
pamixer pamixer
@@ -231,8 +264,11 @@ pcsclite
perl-image-exiftool perl-image-exiftool
piper piper
pipewire-alsa pipewire-alsa
pipewire-pulse
plasma-browser-integration plasma-browser-integration
playerctl
plocate plocate
polkit
power-profiles-daemon power-profiles-daemon
ppp ppp
pptpclient pptpclient
@@ -246,11 +282,24 @@ python-pyquery
python-ufonormalizer python-ufonormalizer
python-uv python-uv
python-virtualenv python-virtualenv
python-aiohttp
python-packaging
qalculate-gtk qalculate-gtk
qemu-full qemu-full
qemu-guest-agent qemu-guest-agent
qt5-quickcontrols2 qt5-quickcontrols2
qt6ct qt6ct
qt6-5compat
qt6-avif-image-plugin
qt6-imageformats
qt6-multimedia
qt6-positioning
qt6-quicktimeline
qt6-sensors
qt6-tools
qt6-translations
qt6-virtualkeyboard
qt6-wayland
rclone rclone
refind refind
reflector reflector
@@ -275,15 +324,18 @@ smartmontools
snapd snapd
sof-firmware sof-firmware
sox sox
songrec
speech-dispatcher speech-dispatcher
squashfs-tools squashfs-tools
sshfs sshfs
ssh-import-id ssh-import-id
starship
steam steam
sudo sudo
swaync swaync
syncthing syncthing
syncthingtray-qt6 syncthingtray-qt6
syntax-highlighting
syslinux syslinux
systemd-resolvconf systemd-resolvconf
tailscale tailscale
@@ -291,6 +343,8 @@ tcpdump
tea tea
terminus-font terminus-font
termshark termshark
tesseract
tesseract-data-eng
testdisk testdisk
texlive-bin texlive-bin
thunar thunar
@@ -310,7 +364,12 @@ ttf-droid
ttf-fantasque-nerd ttf-fantasque-nerd
ttf-fira-code ttf-fira-code
ttf-jetbrains-mono ttf-jetbrains-mono
ttf-jetbrains-mono-nerd
ttf-material-symbols-variable-git
ttf-ms-fonts ttf-ms-fonts
ttf-readex-pro
ttf-rubik-vf
ttf-twemoji
ttf-victor-mono ttf-victor-mono
tty-clock tty-clock
tumbler tumbler
@@ -318,6 +377,7 @@ udftools
uget uget
umockdev umockdev
unrar unrar
upower
upscayl-bin upscayl-bin
uriparser uriparser
usbguard usbguard
@@ -333,6 +393,7 @@ virt-manager
virtualbox-guest-utils-nox virtualbox-guest-utils-nox
vpnc vpnc
wallust wallust
wayland-protocols
wine wine
winetricks winetricks
wireless-regdb wireless-regdb
@@ -340,16 +401,20 @@ wireless_tools
woeusb-ng woeusb-ng
wpa_supplicant wpa_supplicant
wvdial wvdial
wtype
xarchiver xarchiver
xclip xclip
xdg-utils xdg-utils
xdg-user-dirs
xdotool xdotool
xfsprogs xfsprogs
xl2tpd xl2tpd
xwaylandvideobridge xwaylandvideobridge
yay yay
ydotool
yt-dlp yt-dlp
zen-browser-bin zen-browser-bin
yq
zram-generator zram-generator
zsh zsh
zsh-completions zsh-completions