Compare commits
9
Commits
f662dcf150
...
c3597ce723
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c3597ce723
|
||
|
|
5bb5a413c2
|
||
|
|
ac497c0f92
|
||
|
|
89544407d8
|
||
|
|
03270a1384
|
||
|
|
dc15394417
|
||
|
|
208564537f
|
||
|
|
0ff9424868
|
||
|
|
66620a1ff9
|
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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
|
||||||
@@ -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)'
|
||||||
@@ -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
|
||||||
@@ -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"
|
||||||
@@ -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."
|
||||||
Executable
+198
@@ -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
|
||||||
Binary file not shown.
Binary file not shown.
+66
-1
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user