Merge pull request 'feat/gaming' (#3) from feat/gaming into main

Reviewed-on: #3
This commit was merged in pull request #3.
This commit is contained in:
2026-06-28 15:00:07 +00:00
23 changed files with 1227 additions and 585 deletions
-223
View File
@@ -1,223 +0,0 @@
# ThinkPad NixOS Installation Guide
This guide provides step-by-step instructions for installing the NixOS configuration on your ThinkPad laptop.
## Prerequisites
- **ThinkPad laptop** (tested models: T480, T490, X1 Carbon)
- **USB flash drive** (8GB+ recommended)
- **Backup your data** - this will erase everything on the target device
- **NixOS ISO** - Download from [nixos.org](https://nixos.org/download.html)
- **Internet connection** (wired recommended for initial setup)
## Preparation
### 1. Create NixOS Installation Media
```bash
# On another Linux machine or macOS:
sudo dd if=nixos-minimal-*.iso of=/dev/sdX bs=4M status=progress oflag=sync
# Replace /dev/sdX with your USB device (e.g., /dev/sdb)
# WARNING: This will erase the target device completely
```
### 2. Boot from USB
1. Insert USB drive into ThinkPad
2. Power on and press **F12** to enter boot menu
3. Select the USB drive
4. At GRUB menu, select "NixOS"
## Installation Steps
### 3. Prepare Disks
```bash
# Identify your disk (likely /dev/nvme0n1 for NVMe SSDs)
lsblk
# Partition the disk (adjust for your needs)
sudo gdisk /dev/nvme0n1
# Use: o (create new GPT), n (new partition), accept defaults for EFI (512M), then Linux filesystem (rest)
# Set type for EFI to EF00, Linux filesystem to 8300
# Write changes with w
```
### 4. Format Partitions
```bash
# Format EFI partition
sudo mkfs.fat -F32 /dev/nvme0n1p1
# Format root partition
sudo mkfs.ext4 /dev/nvme0n1p2
# Mount partitions
sudo mount /dev/nvme0n1p2 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
```
### 5. Generate NixOS Configuration
```bash
# Generate initial configuration
sudo nixos-generate-config --root /mnt
# This creates /mnt/etc/nixos/configuration.nix and hardware-configuration.nix
```
### 6. Clone Your Nixy Configuration
```bash
# Clone your nixy repository
sudo nix-shell -p git
git clone https://gitea.doomlabs.de/KptltD00M/nixy.git /mnt/etc/nixos/nixy
cd /mnt/etc/nixos/nixy
# Copy hardware configuration
sudo cp /mnt/etc/nixos/hardware-configuration.nix hosts/laptop/hardware-configuration.nix
```
### 7. Install NixOS
```bash
# Switch to your laptop configuration
sudo nixos-install --flake /mnt/etc/nixos/nixy#laptop
# When prompted, set a root password
```
### 8. Post-Installation
```bash
# After reboot, log in as root
# Clone your configuration to your user
git clone https://gitea.doomlabs.de/KptltD00M/nixy.git ~/nixy
cd ~/nixy
# Switch to your user configuration
nix run nixpkgs#home-manager -- switch --flake .#andi@laptop
# Reboot
reboot
```
## ThinkPad-Specific Configuration
### 1. Trackpad Configuration
The configuration includes touchpad settings optimized for ThinkPad hardware. If you need to adjust:
```nix
# Edit hosts/laptop/home.nix
programs.hyprland = {
touchpad = {
naturalScroll = true;
tap-to-click = true;
disableWhileTyping = false;
};
};
```
### 2. Keyboard Backlight
```bash
# Enable keyboard backlight control
sudo nix-env -iA nixos.hid-tools
sudo systemctl enable --now thinkpad-keyboard-backlight.service
```
### 3. Power Management
```bash
# Install TLP for better power management
sudo nix-env -iA nixos.tlp
sudo systemctl enable --now tlp
```
## Troubleshooting
### Common Issues
**1. WiFi not working:**
```bash
# Install firmware for your WiFi card
sudo nix-env -iA nixos.firmware
```
**2. Suspend/resume issues:**
```bash
# Edit hardware-configuration.nix
boot.kernelPackages = pkgs.linuxPackages_latest;
```
**3. Screen tearing:**
```bash
# Enable TearFree in hosts/laptop/configuration.nix
services.xserver.videoDrivers = [ "modesetting" ];
```
### Debugging Commands
```bash
# Check hardware detection
sudo dmesg | grep -i thinkpad
# Check battery status
upower -i /org/freedesktop/UPower/devices/battery_BAT0
# Check display configuration
hyprctl monitors
```
## Maintenance
### Updating Your System
```bash
# Update flake inputs
nix flake update
# Rebuild system
sudo nixos-rebuild switch --flake ~/nixy#laptop
# Rebuild home configuration
nix run nixpkgs#home-manager -- switch --flake ~/nixy#andi@laptop
```
### Backup Configuration
```bash
# Backup your hardware configuration
cp /etc/nixos/hardware-configuration.nix ~/nixy/hosts/laptop/
# Commit changes
cd ~/nixy
git add .
git commit -m "Update hardware config for ThinkPad"
git push
```
## Additional Resources
- [NixOS Manual](https://nixos.org/manual/nixos/stable/)
- [ThinkPad Wiki](https://www.thinkwiki.org/)
- [NixOS Discourse](https://discourse.nixos.org/)
## Notes
- **ThinkPad T480/X1 Carbon specific:** These models have excellent Linux support. The configuration includes:
- Trackpoint acceleration settings
- Keyboard backlight control
- Power management profiles
- Display brightness controls
- Suspend/resume fixes
- **Encryption:** If you enabled encryption during install, use:
```bash
sudo cryptsetup luksOpen /dev/nvme0n1p2 cryptroot
sudo mount /dev/mapper/cryptroot /mnt
```
- **Multi-boot:** If dual-booting with Windows, ensure Secure Boot is disabled in BIOS.
+16 -16
View File
@@ -1,16 +1,16 @@
# Contributing to Nixy # Contributing to Nixy
Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the issues! Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the issues!
The process is straight-forward. The process is straight-forward.
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0 and 1) - Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0 and 1)
- Fork Nixy [git repository](https://github.com/anotherhadi/nixy). - Fork Nixy [git repository](https://github.com/anotherhadi/nixy).
- Write your changes (new theme, bug fixes, issues fix, ...). - Write your changes (new theme, bug fixes, issues fix, ...).
- Create a Pull Request against the main branch of Nixy. - Create a Pull Request against the main branch of Nixy.
> [!TIP] > [!TIP]
> To update the README, change the `./.github/assets/README_template.md` > To update the README, change the `./.github/assets/README_template.md`
> [!IMPORTANT] > [!IMPORTANT]
> Don't push your host's folder > Don't push your host's folder
Generated
+258 -183
View File
@@ -213,98 +213,6 @@
"type": "github" "type": "github"
} }
}, },
"caelestia-cli": {
"inputs": {
"caelestia-shell": "caelestia-shell",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1780375472,
"narHash": "sha256-Q8RAJoYlakA6B2I5DVcuxzNbhCNU1nnIjqQZYP1KGrM=",
"owner": "caelestia-dots",
"repo": "cli",
"rev": "d1c8c8fc09738d1b40576e97c274b4a11a2e0ac7",
"type": "github"
},
"original": {
"owner": "caelestia-dots",
"repo": "cli",
"type": "github"
}
},
"caelestia-cli_2": {
"inputs": {
"caelestia-shell": [
"caelestia-shell"
],
"nixpkgs": [
"caelestia-shell",
"nixpkgs"
]
},
"locked": {
"lastModified": 1779768519,
"narHash": "sha256-2n/447oNfAZrl1yncafLPgXMx5tuTF6T2B+zI/zFYkI=",
"owner": "caelestia-dots",
"repo": "cli",
"rev": "64a5507e74f6c7d0c29f9131964412f8f8c4dd89",
"type": "github"
},
"original": {
"owner": "caelestia-dots",
"repo": "cli",
"type": "github"
}
},
"caelestia-shell": {
"inputs": {
"caelestia-cli": [
"caelestia-cli"
],
"nixpkgs": [
"caelestia-cli",
"nixpkgs"
],
"quickshell": "quickshell"
},
"locked": {
"lastModified": 1780196414,
"narHash": "sha256-iXmyWULTZuRd68xRL79e9GyYL9FZ6gfh6zl1PPlWX2A=",
"owner": "caelestia-dots",
"repo": "shell",
"rev": "63bb82762bb29ac9b7fcd5b97839abae721ce860",
"type": "github"
},
"original": {
"owner": "caelestia-dots",
"repo": "shell",
"type": "github"
}
},
"caelestia-shell_2": {
"inputs": {
"caelestia-cli": "caelestia-cli_2",
"nixpkgs": [
"nixpkgs"
],
"quickshell": "quickshell_2"
},
"locked": {
"lastModified": 1780196414,
"narHash": "sha256-iXmyWULTZuRd68xRL79e9GyYL9FZ6gfh6zl1PPlWX2A=",
"owner": "caelestia-dots",
"repo": "shell",
"rev": "63bb82762bb29ac9b7fcd5b97839abae721ce860",
"type": "github"
},
"original": {
"owner": "caelestia-dots",
"repo": "shell",
"type": "github"
}
},
"crane": { "crane": {
"locked": { "locked": {
"lastModified": 1779130139, "lastModified": 1779130139,
@@ -372,6 +280,38 @@
} }
}, },
"flake-compat_2": { "flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_4": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1777699697, "lastModified": 1777699697,
@@ -442,6 +382,24 @@
} }
}, },
"flake-parts_4": { "flake-parts_4": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_4"
},
"locked": {
"lastModified": 1778716662,
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_5": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
"nvf", "nvf",
@@ -462,7 +420,7 @@
"type": "github" "type": "github"
} }
}, },
"flake-parts_5": { "flake-parts_6": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
"stylix", "stylix",
@@ -499,6 +457,32 @@
"type": "github" "type": "github"
} }
}, },
"git-hooks": {
"inputs": {
"flake-compat": [
"nix-gaming",
"flake-compat"
],
"gitignore": "gitignore_2",
"nixpkgs": [
"nix-gaming",
"nixpkgs"
]
},
"locked": {
"lastModified": 1781733627,
"narHash": "sha256-U3yTuGBnmXvXoQI3qkpfEDsn9RovQPAjN7ndRco+3u0=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "3bbec39bc90eadfa031e6f3b77272f3f60803e39",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": { "gitignore": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -521,6 +505,28 @@
"type": "github" "type": "github"
} }
}, },
"gitignore_2": {
"inputs": {
"nixpkgs": [
"nix-gaming",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gnome-shell": { "gnome-shell": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -999,6 +1005,50 @@
"type": "github" "type": "github"
} }
}, },
"nix-citizen": {
"inputs": {
"flake-compat": "flake-compat_2",
"nix-gaming": [
"nix-gaming"
],
"nixpkgs": "nixpkgs_7",
"treefmt-nix": "treefmt-nix_4"
},
"locked": {
"lastModified": 1782345817,
"narHash": "sha256-HfMMa51hKi6KPrGGerg6vrdKdJcSEmhEbCM1hCCQNX8=",
"owner": "LovingMelody",
"repo": "nix-citizen",
"rev": "9d93df2ace0c1c2f83b7d03bfee81441d63ec5e0",
"type": "github"
},
"original": {
"owner": "LovingMelody",
"repo": "nix-citizen",
"type": "github"
}
},
"nix-gaming": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-parts": "flake-parts_4",
"git-hooks": "git-hooks",
"nixpkgs": "nixpkgs_8"
},
"locked": {
"lastModified": 1782619847,
"narHash": "sha256-13XsPDHTG3vkNjagqQvFRG0zZK0yrDwfcU5ou/KtIFM=",
"owner": "fufexan",
"repo": "nix-gaming",
"rev": "55d03bdd91952ff6fd0b0779efe79da67323b6c5",
"type": "github"
},
"original": {
"owner": "fufexan",
"repo": "nix-gaming",
"type": "github"
}
},
"nix-index-database": { "nix-index-database": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -1021,8 +1071,8 @@
}, },
"nixarr": { "nixarr": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_7", "nixpkgs": "nixpkgs_9",
"treefmt-nix": "treefmt-nix_4", "treefmt-nix": "treefmt-nix_5",
"vpnconfinement": "vpnconfinement", "vpnconfinement": "vpnconfinement",
"website-builder": "website-builder" "website-builder": "website-builder"
}, },
@@ -1042,7 +1092,7 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_8" "nixpkgs": "nixpkgs_10"
}, },
"locked": { "locked": {
"lastModified": 1780310866, "lastModified": 1780310866,
@@ -1120,6 +1170,21 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-lib_4": {
"locked": {
"lastModified": 1777168982,
"narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1779796641, "lastModified": 1779796641,
@@ -1137,6 +1202,35 @@
} }
}, },
"nixpkgs_10": { "nixpkgs_10": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_11": {
"locked": {
"lastModified": 1780243769,
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "331800de5053fcebacf6813adb5db9c9dca22a0c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_12": {
"locked": { "locked": {
"lastModified": 1778869304, "lastModified": 1778869304,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
@@ -1152,7 +1246,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_11": { "nixpkgs_13": {
"locked": { "locked": {
"lastModified": 1780749050, "lastModified": 1780749050,
"narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=", "narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=",
@@ -1168,7 +1262,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_12": { "nixpkgs_14": {
"locked": { "locked": {
"lastModified": 1778869304, "lastModified": 1778869304,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
@@ -1184,7 +1278,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_13": { "nixpkgs_15": {
"locked": { "locked": {
"lastModified": 1775888245, "lastModified": 1775888245,
"narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=", "narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=",
@@ -1200,7 +1294,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_14": { "nixpkgs_16": {
"locked": { "locked": {
"lastModified": 1780243769, "lastModified": 1780243769,
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=", "narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=",
@@ -1297,6 +1391,38 @@
} }
}, },
"nixpkgs_7": { "nixpkgs_7": {
"locked": {
"lastModified": 1781577229,
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_8": {
"locked": {
"lastModified": 1782175435,
"narHash": "sha256-EMzXKmnOtBQ2MnvpiNOm7E+kOMvdPrIKaeg52Tip2Uk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "89570f24e97e614aa34aa9ab1c927b6578a43775",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_9": {
"locked": { "locked": {
"lastModified": 1775595990, "lastModified": 1775595990,
"narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=", "narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=",
@@ -1312,39 +1438,10 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_8": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_9": {
"locked": {
"lastModified": 1780243769,
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "331800de5053fcebacf6813adb5db9c9dca22a0c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"notashelf-tuigreet": { "notashelf-tuigreet": {
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
"nixpkgs": "nixpkgs_10", "nixpkgs": "nixpkgs_12",
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
@@ -1388,7 +1485,7 @@
}, },
"nur-anotherhadi": { "nur-anotherhadi": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_11" "nixpkgs": "nixpkgs_13"
}, },
"locked": { "locked": {
"lastModified": 1781028989, "lastModified": 1781028989,
@@ -1427,11 +1524,11 @@
}, },
"nvf": { "nvf": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_4",
"flake-parts": "flake-parts_4", "flake-parts": "flake-parts_5",
"mnw": "mnw", "mnw": "mnw",
"ndg": "ndg", "ndg": "ndg",
"nixpkgs": "nixpkgs_12", "nixpkgs": "nixpkgs_14",
"systems": "systems_5" "systems": "systems_5"
}, },
"locked": { "locked": {
@@ -1471,64 +1568,21 @@
"type": "github" "type": "github"
} }
}, },
"quickshell": {
"inputs": {
"nixpkgs": [
"caelestia-cli",
"caelestia-shell",
"nixpkgs"
]
},
"locked": {
"lastModified": 1779430452,
"narHash": "sha256-zTslhsxLqUlRTML506iougTGzyR38Fzhzn7t4KDEuuE=",
"ref": "refs/heads/master",
"rev": "4b4fca3224ab977dc515ac0bb78d00b3dfa71e00",
"revCount": 819,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
"original": {
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}
},
"quickshell_2": {
"inputs": {
"nixpkgs": [
"caelestia-shell",
"nixpkgs"
]
},
"locked": {
"lastModified": 1779430452,
"narHash": "sha256-zTslhsxLqUlRTML506iougTGzyR38Fzhzn7t4KDEuuE=",
"ref": "refs/heads/master",
"rev": "4b4fca3224ab977dc515ac0bb78d00b3dfa71e00",
"revCount": 819,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
"original": {
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}
},
"root": { "root": {
"inputs": { "inputs": {
"awesome-wallpapers": "awesome-wallpapers", "awesome-wallpapers": "awesome-wallpapers",
"blog": "blog", "blog": "blog",
"caelestia-cli": "caelestia-cli",
"caelestia-shell": "caelestia-shell_2",
"default-creds": "default-creds", "default-creds": "default-creds",
"helium-browser": "helium-browser", "helium-browser": "helium-browser",
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprland": "hyprland", "hyprland": "hyprland",
"iknowyou": "iknowyou", "iknowyou": "iknowyou",
"nix-citizen": "nix-citizen",
"nix-gaming": "nix-gaming",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixarr": "nixarr", "nixarr": "nixarr",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_9", "nixpkgs": "nixpkgs_11",
"nixpkgs-stable": "nixpkgs-stable", "nixpkgs-stable": "nixpkgs-stable",
"notashelf-tuigreet": "notashelf-tuigreet", "notashelf-tuigreet": "notashelf-tuigreet",
"nur-anotherhadi": "nur-anotherhadi", "nur-anotherhadi": "nur-anotherhadi",
@@ -1560,7 +1614,7 @@
}, },
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_13" "nixpkgs": "nixpkgs_15"
}, },
"locked": { "locked": {
"lastModified": 1780547341, "lastModified": 1780547341,
@@ -1583,9 +1637,9 @@
"base16-helix": "base16-helix", "base16-helix": "base16-helix",
"base16-vim": "base16-vim", "base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme", "firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_5", "flake-parts": "flake-parts_6",
"gnome-shell": "gnome-shell", "gnome-shell": "gnome-shell",
"nixpkgs": "nixpkgs_14", "nixpkgs": "nixpkgs_16",
"nur": "nur", "nur": "nur",
"systems": "systems_6", "systems": "systems_6",
"tinted-kitty": "tinted-kitty", "tinted-kitty": "tinted-kitty",
@@ -1828,6 +1882,27 @@
} }
}, },
"treefmt-nix_4": { "treefmt-nix_4": {
"inputs": {
"nixpkgs": [
"nix-citizen",
"nixpkgs"
]
},
"locked": {
"lastModified": 1780220602,
"narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_5": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixarr", "nixarr",
+4 -8
View File
@@ -16,6 +16,9 @@
notashelf-tuigreet.url = "github:NotAShelf/tuigreet"; notashelf-tuigreet.url = "github:NotAShelf/tuigreet";
helium-browser.url = "github:oxcl/nix-flake-helium-browser"; helium-browser.url = "github:oxcl/nix-flake-helium-browser";
nur-anotherhadi.url = "github:anotherhadi/nur-packages"; nur-anotherhadi.url = "github:anotherhadi/nur-packages";
nix-citizen.url = "github:LovingMelody/nix-citizen";
nix-gaming.url = "github:fufexan/nix-gaming";
nix-citizen.inputs.nix-gaming.follows = "nix-gaming";
nix-index-database = { nix-index-database = {
url = "github:nix-community/nix-index-database"; url = "github:nix-community/nix-index-database";
@@ -25,14 +28,7 @@
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
caelestia-shell = {
url = "github:caelestia-dots/shell";
inputs.nixpkgs.follows = "nixpkgs";
};
caelestia-cli = {
url = "github:caelestia-dots/cli";
inputs.nixpkgs.follows = "nixpkgs";
};
# Server # Server
nixarr.url = "github:rasmus-kirk/nixarr"; nixarr.url = "github:rasmus-kirk/nixarr";
+3
View File
@@ -26,6 +26,9 @@
pkgs.wifitui # TUI for managing wifi pkgs.wifitui # TUI for managing wifi
pkgs-nur-hadi.usbguard-tui # TUI for managing USBGuard rules pkgs-nur-hadi.usbguard-tui # TUI for managing USBGuard rules
blueman # Bluetooth manager (blueman-manager, blueman-adapters, blueman-sendto)
bluez # Bluetooth stack tools (bluetoothctl)
# I love CLIs # I love CLIs
httpie # Command-line HTTP client, a user-friendly cURL replacement httpie # Command-line HTTP client, a user-friendly cURL replacement
+45
View File
@@ -0,0 +1,45 @@
{
pkgs,
...
}: {
home.packages = (with pkgs; [
# ─────────────────────────────────────────────────────────────
# Game launchers
# ─────────────────────────────────────────────────────────────
lutris # Universal launcher for Wine, emulators, and native games
#prismlauncher # Minecraft launcher with Fabric/Forge/Quilt support
# ─────────────────────────────────────────────────────────────
# Performance & overlays
# ─────────────────────────────────────────────────────────────
mangohud # FPS and hardware monitoring overlay
goverlay # GUI for MangoHud and vkBasalt
gamescope # Micro-compositor for better fullscreen, scaling and frame limiting
gamemode # Requests performance optimizations while gaming
# ─────────────────────────────────────────────────────────────
# Proton & Wine
# ─────────────────────────────────────────────────────────────
protonup-qt # Install and update GE-Proton, Wine-GE, Luxtorpeda, etc.
winetricks # Install Windows runtimes into Wine prefixes
protontricks # Winetricks for Steam Proton prefixes
wineWow64Packages.staging # Wine (32/64-bit) with staging patches
# ─────────────────────────────────────────────────────────────
# Vulkan layers
# ─────────────────────────────────────────────────────────────
vkbasalt # Vulkan post-processing (CAS sharpening, FXAA, etc.)
# ─────────────────────────────────────────────────────────────
# Runner layers
# ─────────────────────────────────────────────────────────────
steam-run # Run generic Linux binaries inside Steam's runtime
appimage-run # Execute AppImages on NixOS
]);
}
+110
View File
@@ -0,0 +1,110 @@
# Star Citizen on Nixy
This repo already includes Star Citizen support through `nix-citizen`.
Relevant files:
- `flake.nix` — declares the `nix-citizen` and `nix-gaming` inputs
- `home/programs/star-citizen/default.nix` — Home Manager module that installs the chosen Star Citizen package
- `home/programs/steam/system.nix` — Steam / gamescope / gamemode setup
- `home/programs/group/gaming-apps.nix` — extra gaming tools such as `lutris`, `mangohud`, `protonup-qt`, and `wine`
## Recommended package
For most setups, start with:
- `rsi-launcher-umu`
If you want the game package instead of just the launcher, try:
- `star-citizen-umu`
The `*-umu` variants are usually the safest choice on Nix-based gaming setups because they are designed around UMU/Proton style runtime handling.
## How to enable it
Your laptop and home-pc profiles already import the module:
- `hosts/laptop/home.nix`
- `hosts/home-pc/home.nix`
So you only need to turn it on in the relevant Home Manager config.
Add or update:
```nix
programs.star-citizen = {
enable = true;
package = "rsi-launcher-umu";
};
```
If you want the packaged game instead of the launcher, use:
```nix
programs.star-citizen = {
enable = true;
package = "star-citizen-umu";
};
```
## Rebuild
This flake exposes NixOS host outputs, so apply the change with your normal host rebuild command from the repo root:
```bash
sudo nixos-rebuild switch --flake .#thinkpad
```
or:
```bash
sudo nixos-rebuild switch --flake .#home-pc
```
If youre building from one of the host directories directly, use the host-specific `nixos-rebuild` flow you already use in this repo.
## First launch checklist
Before launching the game, make sure:
- `Steam` module is enabled
- `gamescope` and `gamemode` are available
- `protonup-qt` is installed so you can manage `GE-Proton` / `Wine-GE`
- you have enough disk space for the launcher and game files
- your GPU drivers are set up properly
Useful tools already included in this repo:
- `lutris`
- `mangohud`
- `goverlay`
- `gamescope`
- `gamemode`
- `protonup-qt`
- `winetricks`
- `protontricks`
## Notes
- Star Citizen is a Windows game, so the launcher/game still downloads its own data after installation.
- If the launcher starts but the game fails to launch, try switching the package to another `nix-citizen` option from `home/programs/star-citizen/default.nix`.
- If you want overlay/performance debugging, launch the game with `MANGOHUD=1` or use the included `mangohud` / `goverlay` tools.
## Troubleshooting
### Launcher doesnt appear
- Rebuild the Home Manager profile
- Check that `programs.star-citizen.enable = true;`
- Confirm the module is imported in the host profile you are using
### Launcher opens but game fails
- Try `rsi-launcher-umu` or `star-citizen-umu`
- Verify `protonup-qt` has a current `GE-Proton`
- Make sure `gamescope` / `gamemode` are enabled in your gaming setup
### Need a clean reset
If you want to switch package variants, change `programs.star-citizen.package` and rebuild again. The package selection is the only thing the module installs.
+35
View File
@@ -0,0 +1,35 @@
{
config,
inputs,
lib,
pkgs,
...
}:
let
cfg = config.programs.star-citizen;
system = pkgs.stdenv.hostPlatform.system;
in {
options.programs.star-citizen = {
enable = lib.mkEnableOption "Star Citizen via nix-citizen";
package = lib.mkOption {
type = lib.types.enum [
"rsi-launcher"
"rsi-launcher-git"
"rsi-launcher-umu"
"star-citizen"
"star-citizen-git"
"star-citizen-umu"
"lug-helper"
];
default = "rsi-launcher";
description = "Package from nix-citizen to install when Star Citizen is enabled.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [
inputs.nix-citizen.packages.${system}.${cfg.package}
];
};
}
+1 -20
View File
@@ -1,27 +1,8 @@
{ {
pkgs,
... ...
}: { }: {
home.packages = with pkgs; [
steam
protonup-ng
];
xdg.desktopEntries = {
Steam = {
name = "Steam";
exec = "${pkgs.steam}/bin/steam";
icon = "steam";
type = "Application";
categories = [
"Game"
"Network"
];
terminal = false;
};
};
home.sessionVariables = { home.sessionVariables = {
# Better Steam scaling on HiDPI displays
STEAM_FORCE_DESKTOPUI_SCALING = "1.25"; STEAM_FORCE_DESKTOPUI_SCALING = "1.25";
}; };
} }
+24 -10
View File
@@ -1,13 +1,27 @@
{ ... }: { {
# Steam runtime tweaks (user-session level, not NixOS system config) pkgs,
...
}: {
home.sessionVariables = { hardware.graphics = {
# Improves scaling consistency on HiDPI / Wayland setups enable = true;
STEAM_FORCE_DESKTOPUI_SCALING = "1.25"; enable32Bit = true;
# Optional Proton-related behavior toggles (safe defaults)
PROTON_ENABLE_NVAPI = "1";
PROTON_NO_ESYNC = "0";
PROTON_NO_FSYNC = "0";
}; };
programs.steam = {
enable = true;
gamescopeSession.enable = true;
remotePlay.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
extraCompatPackages = with pkgs; [
proton-ge-bin
];
};
programs.gamescope.enable = true;
programs.gamemode.enable = true;
hardware.steam-hardware.enable = true;
} }
+243 -86
View File
@@ -2,29 +2,226 @@
pkgs, pkgs,
lib, lib,
config, config,
pkgs-nur-hadi,
... ...
}: let }:
let
colors = config.lib.stylix.colors; colors = config.lib.stylix.colors;
mkMenu = menu: let mkMenu = menu:
configFile = pkgs.writeText "config.yaml" ( let
lib.generators.toYAML {} { configFile = pkgs.writeText "config.yaml" (
anchor = "bottom-right"; lib.generators.toYAML { } {
border = "#${colors.base0D}80"; anchor = "bottom-right";
background = "#${colors.base01}EE"; border = "#${colors.base0D}80";
color = "#${colors.base05}"; background = "#${colors.base01}EE";
margin_right = 15; color = "#${colors.base05}";
margin_bottom = 15; margin_right = 15;
rows_per_column = 5; margin_bottom = 15;
rows_per_column = 5;
inherit menu; inherit menu;
} }
); );
in in
pkgs.writeShellScriptBin "menu" '' pkgs.writeShellScriptBin "menu" ''
exec ${lib.getExe pkgs.wlr-which-key} ${configFile} exec ${lib.getExe pkgs.wlr-which-key} ${configFile}
''; '';
in {
gui = exe: "uwsm app -- ${exe}";
term = exe: "uwsm app -- ${pkgs.ghostty}/bin/ghostty -e ${exe}";
appsMenu = mkMenu [
{
key = "f";
desc = "Firefox";
cmd = gui "${pkgs.firefox}/bin/firefox";
}
{
key = "o";
desc = "Obsidian";
cmd = gui "${pkgs.obsidian}/bin/obsidian";
}
{
key = "t";
desc = "TickTick";
cmd = gui "${pkgs.ticktick}/bin/ticktick";
}
{
key = "n";
desc = "OnlyOffice";
cmd = gui "${pkgs.onlyoffice-desktopeditors}/bin/onlyoffice-desktopeditors";
}
{
key = "v";
desc = "Vesktop";
cmd = gui "${pkgs.vesktop}/bin/vesktop";
}
{
key = "l";
desc = "VLC";
cmd = gui "${pkgs.vlc}/bin/vlc";
}
];
devMenu = mkMenu [
{
key = "z";
desc = "Zed";
cmd = gui "${pkgs.zed-editor}/bin/zed";
}
{
key = "c";
desc = "VSCodium";
cmd = gui "${pkgs.vscodium}/bin/codium";
}
{
key = "g";
desc = "Ghostty";
cmd = gui "${pkgs.ghostty}/bin/ghostty";
}
{
key = "f";
desc = "Fastfetch";
cmd = term "${pkgs.fastfetch}/bin/fastfetch";
}
{
key = "d";
desc = "Dysk";
cmd = term "${pkgs.dysk}/bin/dysk";
}
{
key = "w";
desc = "Wikiman";
cmd = term "${pkgs.wikiman}/bin/wikiman";
}
{
key = "s";
desc = "STTR";
cmd = term "${pkgs.sttr}/bin/sttr";
}
];
gamingMenu = mkMenu [
{
key = "l";
desc = "Lutris";
cmd = gui "${pkgs.lutris}/bin/lutris";
}
{
key = "p";
desc = "ProtonUp-Qt";
cmd = gui "${pkgs.protonup-qt}/bin/protonup-qt";
}
{
key = "g";
desc = "GOverlay";
cmd = gui "${pkgs.goverlay}/bin/goverlay";
}
];
utilityMenu = mkMenu [
{
key = "B";
desc = "Blueman";
cmd = gui "${pkgs.blueman}/bin/blueman-manager";
}
{
key = "x";
desc = "Bluetoothctl";
cmd = term "${pkgs.bluez}/bin/bluetoothctl";
}
{
key = "w";
desc = "WiFi TUI";
cmd = term "${pkgs.wifitui}/bin/wifitui";
}
{
key = "m";
desc = "Wiremix";
cmd = term "${pkgs.wiremix}/bin/wiremix";
}
{
key = "u";
desc = "USBGuard TUI";
cmd = term "${pkgs-nur-hadi.usbguard-tui}/bin/usbguard-tui";
}
{
key = "c";
desc = "Caligula";
cmd = term "${pkgs.caligula}/bin/caligula";
}
{
key = "h";
desc = "Browsh";
cmd = term "${pkgs.browsh}/bin/browsh";
}
{
key = "p";
desc = "Peaclock";
cmd = term "${pkgs.peaclock}/bin/peaclock";
}
{
key = "o";
desc = "Cbonsai";
cmd = term "${pkgs.cbonsai}/bin/cbonsai";
}
{
key = "i";
desc = "Pipes";
cmd = term "${pkgs.pipes}/bin/pipes";
}
{
key = "t";
desc = "Tealdeer";
cmd = term "${pkgs.tealdeer}/bin/tldr";
}
{
key = "s";
desc = "Hyprlock";
cmd = gui "${pkgs.hyprlock}/bin/hyprlock";
}
];
systemMenu = mkMenu [
{
key = "l";
desc = "Lock";
cmd = "hyprlock";
}
{
key = "w";
desc = "Restart Waybar";
cmd = "pkill -x waybar; waybar";
}
{
key = "r";
desc = "Restart Walker";
cmd = "systemctl --user restart walker.service";
}
{
key = "e";
desc = "Restart Elephant";
cmd = "systemctl --user restart elephant.service";
}
{
key = "s";
desc = "Suspend";
cmd = "systemctl suspend";
}
{
key = "p";
desc = "Power Off";
cmd = "systemctl poweroff";
}
{
key = "b";
desc = "Reboot";
cmd = "systemctl reboot";
}
];
in
{
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
"$mod" = "SUPER"; "$mod" = "SUPER";
"$shiftMod" = "SUPER_SHIFT"; "$shiftMod" = "SUPER_SHIFT";
@@ -37,53 +234,28 @@ in {
+ lib.getExe (mkMenu [ + lib.getExe (mkMenu [
{ {
key = "a"; key = "a";
desc = "Proton Authenticator"; desc = "Apps";
cmd = "env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator"; cmd = lib.getExe appsMenu;
} }
{ {
key = "p"; key = "d";
desc = "Proton Pass"; desc = "Dev";
cmd = "${pkgs.proton-pass}/bin/proton-pass"; cmd = lib.getExe devMenu;
} }
{ {
key = "v"; key = "g";
desc = "Proton VPN"; desc = "Gaming";
cmd = "${pkgs.proton-vpn}/bin/protonvpn-app"; cmd = lib.getExe gamingMenu;
} }
{ {
key = "c"; key = "u";
desc = "Proton Calendar"; desc = "Utilities";
cmd = "${config.programs.librewolf.package}/bin/helium 'https://calendar.proton.me/'"; cmd = lib.getExe utilityMenu;
}
{
key = "m";
desc = "Proton Mail";
cmd = "${config.programs.librewolf.package}/bin/helium 'https://mail.proton.me/'";
}
{
key = "o";
desc = "Obsidian";
cmd = "${pkgs.obsidian}/bin/obsidian";
} }
{ {
key = "s"; key = "s";
desc = "Signal"; desc = "System";
cmd = "${pkgs.signal-desktop}/bin/signal-desktop"; cmd = lib.getExe systemMenu;
}
{
key = "t";
desc = "TickTick";
cmd = "${pkgs.ticktick}/bin/ticktick";
}
{
key = "b";
desc = "Helium";
cmd = "${config.programs.librewolf.package}/bin/helium";
}
{
key = "i";
desc = "Helium (Incognito)";
cmd = "${config.programs.librewolf.package}/bin/helium --incognito";
} }
]) ])
) )
@@ -91,14 +263,13 @@ in {
"$mod,B, exec, uwsm app -- ${config.programs.librewolf.package}/bin/helium" # Browser "$mod,B, exec, uwsm app -- ${config.programs.librewolf.package}/bin/helium" # Browser
# Power # Power
"$mod, X, global, caelestia:session" # Powermenu
( (
"$shiftMod, X, exec, " "$mod, X, exec, "
+ lib.getExe (mkMenu [ + lib.getExe (mkMenu [
{ {
key = "l"; key = "l";
desc = "Lock"; desc = "Lock";
cmd = "hyprctl dispatch global caelestia:lock"; cmd = "hyprlock";
} }
{ {
key = "s"; key = "s";
@@ -122,8 +293,8 @@ in {
} }
{ {
key = "c"; key = "c";
desc = "Restart caelestia"; desc = "Restart Waybar";
cmd = "hyprctl dispatch exec 'caelestia-shell kill | sleep 1 | caelestia-shell'"; cmd = "pkill -x waybar; waybar";
} }
]) ])
) )
@@ -131,10 +302,9 @@ in {
# Quick launch # Quick launch
"$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal) "$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
"$mod,E, exec, uwsm app -- ${pkgs.thunar}/bin/thunar" # Thunar "$mod,E, exec, uwsm app -- ${pkgs.thunar}/bin/thunar" # Thunar
"$shiftMod, E, exec, pkill fuzzel || caelestia emoji -p" # Emoji picker "$mod, SPACE, exec, walker" # Launcher
"$mod, SPACE, global, caelestia:launcher" # Launcher "$mod, N, exec, ${lib.getExe pkgs.grimblast} save area" # Save screenshot
"$mod, N, exec, caelestia shell drawers toggle sidebar" # Sidebar (Notifications, quick actions) "$mod, D, exec, ${lib.getExe pkgs.grimblast} copy area" # Copy screenshot
"$mod, D, exec, caelestia shell drawers toggle dashboard" # Dashboard
# Windows # Windows
"$mod,Q, killactive," # Close window "$mod,Q, killactive," # Close window
@@ -152,10 +322,9 @@ in {
"$shiftMod,L, focusmonitor, 1" # Focus next monitor "$shiftMod,L, focusmonitor, 1" # Focus next monitor
# Utilities # Utilities
"$shiftMod, SPACE, exec, caelestia shell gameMode toggle" # Toggle Focus/Game mode "$shiftMod, S, exec, ${lib.getExe pkgs.grimblast} copy area" # Capture region
"$shiftMod, S, global, caelestia:screenshotFreeze" # Capture region (freeze) ", Print, exec, ${lib.getExe pkgs.grimblast} copy area" # Capture region
", Print, global, caelestia:screenshotFreeze" # Capture region (freeze) "$shiftMod+Alt, S, exec, ${lib.getExe pkgs.grimblast} save area" # Capture region
"$shiftMod+Alt, S, global, caelestia:screenshot" # Capture region
] ]
++ (builtins.concatLists ( ++ (builtins.concatLists (
builtins.genList ( builtins.genList (
@@ -176,32 +345,20 @@ in {
bindl = [ bindl = [
# Brightness # Brightness
", XF86MonBrightnessUp, global, caelestia:brightnessUp" ", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} set 5%+"
", XF86MonBrightnessDown, global, caelestia:brightnessDown" ", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} set 5%-"
# Media # Media
", XF86AudioPlay, global, caelestia:mediaToggle" ", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause"
", XF86AudioPause, global, caelestia:mediaToggle" ", XF86AudioPause, exec, ${lib.getExe pkgs.playerctl} play-pause"
", XF86AudioNext, global, caelestia:mediaNext" ", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next"
", XF86AudioPrev, global, caelestia:mediaPrev" ", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous"
", XF86AudioStop, global, caelestia:mediaStop" ", XF86AudioStop, exec, ${lib.getExe pkgs.playerctl} stop"
# Sound # Sound
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" ", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" ", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
]; ];
bindin = [
# Launcher
"$mod, mouse:272, global, caelestia:launcherInterrupt"
"$mod, mouse:273, global, caelestia:launcherInterrupt"
"$mod, mouse:274, global, caelestia:launcherInterrupt"
"$mod, mouse:275, global, caelestia:launcherInterrupt"
"$mod, mouse:276, global, caelestia:launcherInterrupt"
"$mod, mouse:277, global, caelestia:launcherInterrupt"
"$mod, mouse_up, global, caelestia:launcherInterrupt"
"$mod, mouse_down, global, caelestia:launcherInterrupt"
];
}; };
} }
+2
View File
@@ -19,6 +19,7 @@ in {
./animations.nix ./animations.nix
./bindings.nix ./bindings.nix
./polkitagent.nix ./polkitagent.nix
./hyprlock.nix
./keyboard-backlight.nix # CHANGEME: This is for omen laptop only ./keyboard-backlight.nix # CHANGEME: This is for omen laptop only
]; ];
@@ -31,6 +32,7 @@ in {
libxcb libxcb
hyprland-qtutils hyprland-qtutils
adw-gtk3 adw-gtk3
hyprlock
hyprshot hyprshot
hyprpicker hyprpicker
swappy swappy
+58
View File
@@ -0,0 +1,58 @@
{config, ...}: let
c = config.lib.stylix.colors;
fontSans = config.stylix.fonts.sansSerif.name;
in {
xdg.configFile."hypr/hyprlock.conf".text = ''
general {
hide_cursor = true
grace = 0
}
background {
monitor =
color = rgba(${c."base00-rgb-r"}, ${c."base00-rgb-g"}, ${c."base00-rgb-b"}, 0.90)
blur_passes = 2
blur_size = 8
noise = 0.01
}
label {
monitor =
text = cmd[update:1000] date +"%A, %d %B %Y"
color = rgba(${c."base05-rgb-r"}, ${c."base05-rgb-g"}, ${c."base05-rgb-b"}, 1.0)
font_size = 30
font_family = "${fontSans}"
position = 0, 140
halign = center
valign = center
}
label {
monitor =
text = cmd[update:1000] date +"%H:%M"
color = rgba(${c."base0D-rgb-r"}, ${c."base0D-rgb-g"}, ${c."base0D-rgb-b"}, 1.0)
font_size = 54
font_family = "${fontSans}"
position = 0, 60
halign = center
valign = center
}
input-field {
monitor =
size = 320, 52
outline_thickness = 2
outer_color = rgba(${c."base03-rgb-r"}, ${c."base03-rgb-g"}, ${c."base03-rgb-b"}, 0.60)
inner_color = rgba(${c."base01-rgb-r"}, ${c."base01-rgb-g"}, ${c."base01-rgb-b"}, 0.92)
font_color = rgba(${c."base05-rgb-r"}, ${c."base05-rgb-g"}, ${c."base05-rgb-b"}, 1.0)
fail_color = rgba(${c."base08-rgb-r"}, ${c."base08-rgb-g"}, ${c."base08-rgb-b"}, 1.0)
check_color = rgba(${c."base0B-rgb-r"}, ${c."base0B-rgb-g"}, ${c."base0B-rgb-b"}, 1.0)
dots_spacing = 0.3
dots_center = true
hide_input = false
position = 0, -20
halign = center
valign = center
}
'';
}
+42
View File
@@ -0,0 +1,42 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
walker
elephant
];
systemd.user.services.elephant = {
Unit = {
Description = "Elephant backend service";
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${pkgs.elephant}/bin/elephant";
Restart = "on-failure";
RestartSec = 5;
};
};
systemd.user.services.walker = {
Unit = {
Description = "Walker application service";
PartOf = [ "graphical-session.target" ];
After = [ "elephant.service" "graphical-session.target" ];
Requires = [ "elephant.service" ];
};
Service = {
ExecStart = "${pkgs.walker}/bin/walker --gapplication-service";
Restart = "on-failure";
RestartSec = 5;
};
};
wayland.windowManager.hyprland.settings.exec-once = [
"dbus-update-activation-environment --systemd --all"
"systemctl --user start elephant.service walker.service"
];
}
+277
View File
@@ -0,0 +1,277 @@
{ pkgs, config, lib, ... }:
let
colors = config.lib.stylix.colors;
rgb = base:
"${colors."${base}-rgb-r"}, ${colors."${base}-rgb-g"}, ${colors."${base}-rgb-b"}";
terminal = cmd: "uwsm app -- ${lib.getExe pkgs.ghostty} -e ${cmd}";
radius = toString config.theme.bar-rounding;
in
{
home.packages = with pkgs; [
waybar
];
xdg.configFile."waybar/config".text = builtins.toJSON {
layer = "top";
position = "top";
height = 38;
spacing = 10;
"margin-top" = 8;
"margin-left" = 8;
"margin-right" = 8;
"gtk-layer-shell" = true;
"reload_style_on_change" = true;
"modules-left" = [
"hyprland/workspaces"
"tray"
];
"modules-center" = [
"hyprland/window"
];
"modules-right" = [
"custom/bluetooth"
"network"
"battery"
"pulseaudio"
"clock"
];
"hyprland/workspaces" = {
format = "{name}";
"disable-scroll" = true;
"all-outputs" = true;
"on-click" = "activate";
"persistent-workspaces" = {
"*" = 5;
};
};
"hyprland/window" = {
format = "{}";
"max-length" = 70;
"separate-outputs" = true;
};
tray = {
spacing = 8;
"icon-size" = 20;
};
network = {
interval = 2;
"format-wifi" = "󰖩 {signalStrength}%";
"format-ethernet" = "󰈀 {ifname}";
"format-linked" = "󰈀 {ifname}";
"format-disconnected" = "󰖪";
"tooltip-format" = "{essid}\n{ipaddr}";
"on-click" = terminal "wifitui";
};
battery = {
interval = 30;
states = {
warning = 30;
critical = 15;
};
format = "󰁹 {capacity}%";
"format-charging" = "󰂄 {capacity}%";
"format-plugged" = "󰂄 {capacity}%";
"format-full" = "󰁹 {capacity}%";
"tooltip-format" = "Battery {capacity}%\n{timeTo} remaining";
};
"custom/bluetooth" = {
exec = "echo 󰂯";
interval = 3600;
tooltip = false;
"on-click" = "uwsm app -- blueman-manager";
};
pulseaudio = {
"scroll-step" = 5;
format = "󰕾 {volume}%";
"format-muted" = "󰖁";
tooltip = true;
"on-click" = terminal "wiremix";
};
clock = {
interval = 1;
format = "󰥔 {:%H:%M}";
"tooltip-format" = "<big>{:%A, %d %B %Y}</big>";
};
};
xdg.configFile."waybar/style.css".text = ''
* {
border: none;
min-height: 0;
font-family:
"${config.stylix.fonts.sansSerif.name}",
"${config.stylix.fonts.monospace.name}",
sans-serif;
font-size: 13px;
}
window#waybar {
background: transparent;
color: #${colors.base05};
}
.modules-left,
.modules-center,
.modules-right {
margin: 6px 0;
}
#workspaces,
#window,
#tray,
#custom-bluetooth,
#network,
#battery,
#pulseaudio,
#clock {
background: rgba(${rgb "base01"}, 0.76);
border: 1px solid rgba(${rgb "base03"}, 0.45);
border-radius: ${radius}px;
padding: 0 14px;
margin: 6px 4px;
transition:
background-color 180ms ease,
border-color 180ms ease,
color 180ms ease;
}
#workspaces {
padding: 4px;
}
#workspaces button {
background: transparent;
color: #${colors.base04};
padding: 0 12px;
margin: 0 2px;
border-radius: ${radius}px;
transition: all 180ms ease;
}
#workspaces button:hover {
background: rgba(${rgb "base02"}, 0.70);
color: #${colors.base05};
}
#workspaces button.active {
background: #${colors.base0D};
color: #${colors.base00};
}
#workspaces button.urgent {
background: #${colors.base08};
color: #${colors.base00};
}
#window {
min-width: 260px;
padding-left: 18px;
padding-right: 18px;
color: #${colors.base05};
}
#window.empty {
background: transparent;
border: none;
}
#tray {
padding-left: 10px;
padding-right: 10px;
}
#custom-bluetooth {
color: #${colors.base0E};
}
#network {
color: #${colors.base0C};
}
#network.disconnected {
color: #${colors.base08};
}
#battery {
color: #${colors.base0A};
}
#battery.charging,
#battery.plugged {
color: #${colors.base0B};
}
#battery.warning {
color: #${colors.base0A};
}
#battery.critical {
color: #${colors.base08};
}
#pulseaudio {
color: #${colors.base0B};
}
#pulseaudio.muted {
color: #${colors.base08};
}
#clock {
color: #${colors.base0D};
font-weight: 600;
}
tooltip {
background: rgba(${rgb "base00"}, 0.90);
border: 1px solid rgba(${rgb "base03"}, 0.70);
border-radius: ${radius}px;
}
tooltip label {
color: #${colors.base05};
}
'';
wayland.windowManager.hyprland.settings = {
exec-once = [
"waybar"
];
};
}
+9 -1
View File
@@ -1,6 +1,8 @@
{config, ...}: { {config, ...}: {
imports = [ imports = [
# Mostly system related configuration # ─────────────────────────────────────────────────────────────
# System configuration
# ─────────────────────────────────────────────────────────────
../../nixos/audio.nix ../../nixos/audio.nix
../../nixos/bluetooth.nix ../../nixos/bluetooth.nix
../../nixos/fonts.nix ../../nixos/fonts.nix
@@ -13,8 +15,14 @@
../../nixos/utils.nix ../../nixos/utils.nix
../../nixos/hyprland.nix ../../nixos/hyprland.nix
# ─────────────────────────────────────────────────────────────
# Graphics Card
# ─────────────────────────────────────────────────────────────
../../nixos/amd-graphics.nix ../../nixos/amd-graphics.nix
# ─────────────────────────────────────────────────────────────
# System integration for Steam
# ─────────────────────────────────────────────────────────────
../../nixos/steam.nix ../../nixos/steam.nix
# You should let those lines as is # You should let those lines as is
+21 -2
View File
@@ -3,16 +3,35 @@
nixpkgs, nixpkgs,
... ...
}: }:
nixpkgs.lib.nixosSystem { nixpkgs.lib.nixosSystem {
modules = [ modules = [
{ {
nixpkgs.overlays = []; nixpkgs.overlays = [];
_module.args = {inherit inputs;}; _module.args = {
inherit inputs;
};
} }
({ config, pkgs, lib, ... }: {
# ─────────────────────────────────────────────────────────────
# AMD Microcode
# ─────────────────────────────────────────────────────────────
hardware.cpu.amd.updateMicrocode = true;
# ─────────────────────────────────────────────────────────────
# Hardware accelaration
# ─────────────────────────────────────────────────────────────
hardware.graphics = {
enable = true;
enable32Bit = true;
};
})
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
inputs.nix-index-database.nixosModules.default inputs.nix-index-database.nixosModules.default
inputs.helium-browser.nixosModules.default
./configuration.nix ./configuration.nix
]; ];
} }
+21 -4
View File
@@ -1,6 +1,8 @@
{config, ...}: { {config, ...}: {
imports = [ imports = [
# ─────────────────────────────────────────────────────────────
# Programs # Programs
# ─────────────────────────────────────────────────────────────
../../home/programs/ghostty ../../home/programs/ghostty
../../home/programs/nvf ../../home/programs/nvf
../../home/programs/shell ../../home/programs/shell
@@ -12,21 +14,32 @@
../../home/programs/nix-utils ../../home/programs/nix-utils
../../home/programs/spotatui ../../home/programs/spotatui
../../home/programs/yazi ../../home/programs/yazi
../../home/programs/steam
# ─────────────────────────────────────────────────────────────
# Gaming
# ─────────────────────────────────────────────────────────────
../../home/programs/steam
../../home/programs/star-citizen
# ─────────────────────────────────────────────────────────────
# Groups
# ─────────────────────────────────────────────────────────────
../../home/programs/group/basic-apps.nix ../../home/programs/group/basic-apps.nix
../../home/programs/group/dev.nix ../../home/programs/group/dev.nix
../../home/programs/group/misc.nix ../../home/programs/group/misc.nix
../../home/programs/group/gaming-apps.nix
# System (Desktop environment like stuff) # ─────────────────────────────────────────────────────────────
# System
# ─────────────────────────────────────────────────────────────
../../home/system/hyprland ../../home/system/hyprland
../../home/system/caelestia-shell ../../home/system/waybar
../../home/system/walker
../../home/system/hyprpaper ../../home/system/hyprpaper
../../home/system/mime ../../home/system/mime
../../home/system/udiskie ../../home/system/udiskie
./variables.nix # Mostly user-specific configuration ./variables.nix # Mostly user-specific configuration
#./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
]; ];
home = { home = {
@@ -47,6 +60,10 @@
programs = { programs = {
home-manager.enable = true; home-manager.enable = true;
star-citizen = {
enable = true;
package = "rsi-launcher-umu";
};
nixy = { nixy = {
enable = true; enable = true;
configDirectory = config.var.configDirectory; configDirectory = config.var.configDirectory;
+27 -24
View File
@@ -1,29 +1,32 @@
{ config, ... }: { config, ... }: {
imports = [
# ─────────────────────────────────────────────────────────────
# System configuration
# ─────────────────────────────────────────────────────────────
../../nixos/audio.nix
../../nixos/bluetooth.nix
../../nixos/fonts.nix
../../nixos/home-manager.nix
../../nixos/nix.nix
../../nixos/systemd-boot.nix
../../nixos/tuigreet.nix
../../nixos/users.nix
../../nixos/utils.nix
../../nixos/hyprland.nix
{ # ─────────────────────────────────────────────────────────────
imports = [ # System integration for Steam
# System configuration # ─────────────────────────────────────────────────────────────
../../nixos/audio.nix ../../nixos/steam.nix
../../nixos/bluetooth.nix
../../nixos/fonts.nix
../../nixos/home-manager.nix
../../nixos/nix.nix
../../nixos/systemd-boot.nix
../../nixos/tuigreet.nix
../../nixos/users.nix
../../nixos/utils.nix
../../nixos/hyprland.nix
../../nixos/steam.nix # You should let those lines as is
./hardware-configuration.nix
./variables.nix
# Machine-specific files ];
./hardware-configuration.nix
./variables.nix
]; home-manager.users."${config.var.username}" = import ./home.nix;
services.flatpak.enable = true;
home-manager.users."${config.var.username}" = import ./home.nix; # Don't touch this
services.flatpak.enable = true; system.stateVersion = "24.05";
system.stateVersion = "24.05";
} }
+12 -5
View File
@@ -14,21 +14,29 @@ nixpkgs.lib.nixosSystem {
} }
({ config, pkgs, lib, ... }: { ({ config, pkgs, lib, ... }: {
# Intel microcode # ─────────────────────────────────────────────────────────────
# Intel Microcode
# ─────────────────────────────────────────────────────────────
hardware.cpu.intel.updateMicrocode = true; hardware.cpu.intel.updateMicrocode = true;
# Graphics support # ─────────────────────────────────────────────────────────────
# Hardware accelaration
# ─────────────────────────────────────────────────────────────
hardware.graphics = { hardware.graphics = {
enable = true; enable = true;
enable32Bit = true; enable32Bit = true;
}; };
# Power management # ─────────────────────────────────────────────────────────────
# Power management
# ─────────────────────────────────────────────────────────────
powerManagement.cpuFreqGovernor = "powersave"; powerManagement.cpuFreqGovernor = "powersave";
services.tlp.enable = true; services.tlp.enable = true;
services.power-profiles-daemon.enable = false; services.power-profiles-daemon.enable = false;
# Kernel modules commonly needed on ThinkPads # ─────────────────────────────────────────────────────────────
# Kernel modules commonly needed on ThinkPads
# ─────────────────────────────────────────────────────────────
boot.kernelModules = [ boot.kernelModules = [
"i915" "i915"
"snd_hda_intel" "snd_hda_intel"
@@ -39,7 +47,6 @@ nixpkgs.lib.nixosSystem {
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
inputs.nix-index-database.nixosModules.default inputs.nix-index-database.nixosModules.default
inputs.helium-browser.nixosModules.default
./configuration.nix ./configuration.nix
]; ];
+15 -2
View File
@@ -1,6 +1,8 @@
{config, ...}: { {config, ...}: {
imports = [ imports = [
# ─────────────────────────────────────────────────────────────
# Programs # Programs
# ─────────────────────────────────────────────────────────────
../../home/programs/ghostty ../../home/programs/ghostty
../../home/programs/nvf ../../home/programs/nvf
../../home/programs/shell ../../home/programs/shell
@@ -12,15 +14,26 @@
../../home/programs/nix-utils ../../home/programs/nix-utils
../../home/programs/spotatui ../../home/programs/spotatui
../../home/programs/yazi ../../home/programs/yazi
# ─────────────────────────────────────────────────────────────
# Gaming
# ─────────────────────────────────────────────────────────────
../../home/programs/steam ../../home/programs/steam
# ─────────────────────────────────────────────────────────────
# Groups
# ─────────────────────────────────────────────────────────────
../../home/programs/group/basic-apps.nix ../../home/programs/group/basic-apps.nix
../../home/programs/group/dev.nix ../../home/programs/group/dev.nix
../../home/programs/group/misc.nix ../../home/programs/group/misc.nix
../../home/programs/group/gaming-apps.nix
# System (Desktop environment like stuff) # ─────────────────────────────────────────────────────────────
# System
# ─────────────────────────────────────────────────────────────
../../home/system/hyprland ../../home/system/hyprland
../../home/system/caelestia-shell ../../home/system/waybar
../../home/system/walker
../../home/system/hyprpaper ../../home/system/hyprpaper
../../home/system/mime ../../home/system/mime
../../home/system/udiskie ../../home/system/udiskie
+2 -1
View File
@@ -22,7 +22,8 @@
# System (Desktop environment like stuff) # System (Desktop environment like stuff)
../../home/system/hyprland ../../home/system/hyprland
../../home/system/caelestia-shell ../../home/system/waybar
../../home/system/walker
../../home/system/hyprpaper ../../home/system/hyprpaper
../../home/system/mime ../../home/system/mime
../../home/system/udiskie ../../home/system/udiskie
+2
View File
@@ -44,11 +44,13 @@ in {
"https://cache.nixos.org?priority=10" "https://cache.nixos.org?priority=10"
"https://hyprland.cachix.org" "https://hyprland.cachix.org"
"https://nix-citizen.cachix.org"
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"https://numtide.cachix.org" "https://numtide.cachix.org"
]; ];
trusted-public-keys = [ trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"nix-citizen.cachix.org-1:lPMkWc2X8XD4/7YPEEwXKKBg+SVbYTVrAaLA2wQTKCo="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"numtide.cachix.org-1:2ps1kLBUWjxIneOy1Ik6cQjb41X0iXVXeHigGmycPPE=" "numtide.cachix.org-1:2ps1kLBUWjxIneOy1Ik6cQjb41X0iXVXeHigGmycPPE="
]; ];