Compare commits
9 Commits
a95d1fbd35
...
7321b840b7
| Author | SHA1 | Date | |
|---|---|---|---|
| 7321b840b7 | |||
| 7a7917b361 | |||
| bcfe305813 | |||
| 51d333d289 | |||
| 1bb36771dd | |||
| beda752703 | |||
| 849b0f0cfd | |||
| c2e5500051 | |||
| 1b44016dab |
@@ -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.
|
||||
Generated
+258
-183
@@ -213,98 +213,6 @@
|
||||
"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": {
|
||||
"locked": {
|
||||
"lastModified": 1779130139,
|
||||
@@ -372,6 +280,38 @@
|
||||
}
|
||||
},
|
||||
"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,
|
||||
"locked": {
|
||||
"lastModified": 1777699697,
|
||||
@@ -442,6 +382,24 @@
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"nixpkgs-lib": [
|
||||
"nvf",
|
||||
@@ -462,7 +420,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_5": {
|
||||
"flake-parts_6": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"stylix",
|
||||
@@ -499,6 +457,32 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -521,6 +505,28 @@
|
||||
"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": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -999,6 +1005,50 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -1021,8 +1071,8 @@
|
||||
},
|
||||
"nixarr": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_7",
|
||||
"treefmt-nix": "treefmt-nix_4",
|
||||
"nixpkgs": "nixpkgs_9",
|
||||
"treefmt-nix": "treefmt-nix_5",
|
||||
"vpnconfinement": "vpnconfinement",
|
||||
"website-builder": "website-builder"
|
||||
},
|
||||
@@ -1042,7 +1092,7 @@
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_8"
|
||||
"nixpkgs": "nixpkgs_10"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780310866,
|
||||
@@ -1120,6 +1170,21 @@
|
||||
"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": {
|
||||
"locked": {
|
||||
"lastModified": 1779796641,
|
||||
@@ -1137,6 +1202,35 @@
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"lastModified": 1778869304,
|
||||
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
|
||||
@@ -1152,7 +1246,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_11": {
|
||||
"nixpkgs_13": {
|
||||
"locked": {
|
||||
"lastModified": 1780749050,
|
||||
"narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=",
|
||||
@@ -1168,7 +1262,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_12": {
|
||||
"nixpkgs_14": {
|
||||
"locked": {
|
||||
"lastModified": 1778869304,
|
||||
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
|
||||
@@ -1184,7 +1278,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_13": {
|
||||
"nixpkgs_15": {
|
||||
"locked": {
|
||||
"lastModified": 1775888245,
|
||||
"narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=",
|
||||
@@ -1200,7 +1294,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_14": {
|
||||
"nixpkgs_16": {
|
||||
"locked": {
|
||||
"lastModified": 1780243769,
|
||||
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=",
|
||||
@@ -1297,6 +1391,38 @@
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"lastModified": 1775595990,
|
||||
"narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=",
|
||||
@@ -1312,39 +1438,10 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"crane": "crane",
|
||||
"nixpkgs": "nixpkgs_10",
|
||||
"nixpkgs": "nixpkgs_12",
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
@@ -1388,7 +1485,7 @@
|
||||
},
|
||||
"nur-anotherhadi": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_11"
|
||||
"nixpkgs": "nixpkgs_13"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781028989,
|
||||
@@ -1427,11 +1524,11 @@
|
||||
},
|
||||
"nvf": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-parts": "flake-parts_4",
|
||||
"flake-compat": "flake-compat_4",
|
||||
"flake-parts": "flake-parts_5",
|
||||
"mnw": "mnw",
|
||||
"ndg": "ndg",
|
||||
"nixpkgs": "nixpkgs_12",
|
||||
"nixpkgs": "nixpkgs_14",
|
||||
"systems": "systems_5"
|
||||
},
|
||||
"locked": {
|
||||
@@ -1471,64 +1568,21 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"awesome-wallpapers": "awesome-wallpapers",
|
||||
"blog": "blog",
|
||||
"caelestia-cli": "caelestia-cli",
|
||||
"caelestia-shell": "caelestia-shell_2",
|
||||
"default-creds": "default-creds",
|
||||
"helium-browser": "helium-browser",
|
||||
"home-manager": "home-manager",
|
||||
"hyprland": "hyprland",
|
||||
"iknowyou": "iknowyou",
|
||||
"nix-citizen": "nix-citizen",
|
||||
"nix-gaming": "nix-gaming",
|
||||
"nix-index-database": "nix-index-database",
|
||||
"nixarr": "nixarr",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_9",
|
||||
"nixpkgs": "nixpkgs_11",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"notashelf-tuigreet": "notashelf-tuigreet",
|
||||
"nur-anotherhadi": "nur-anotherhadi",
|
||||
@@ -1560,7 +1614,7 @@
|
||||
},
|
||||
"sops-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_13"
|
||||
"nixpkgs": "nixpkgs_15"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780547341,
|
||||
@@ -1583,9 +1637,9 @@
|
||||
"base16-helix": "base16-helix",
|
||||
"base16-vim": "base16-vim",
|
||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||
"flake-parts": "flake-parts_5",
|
||||
"flake-parts": "flake-parts_6",
|
||||
"gnome-shell": "gnome-shell",
|
||||
"nixpkgs": "nixpkgs_14",
|
||||
"nixpkgs": "nixpkgs_16",
|
||||
"nur": "nur",
|
||||
"systems": "systems_6",
|
||||
"tinted-kitty": "tinted-kitty",
|
||||
@@ -1828,6 +1882,27 @@
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"nixpkgs": [
|
||||
"nixarr",
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
notashelf-tuigreet.url = "github:NotAShelf/tuigreet";
|
||||
helium-browser.url = "github:oxcl/nix-flake-helium-browser";
|
||||
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 = {
|
||||
url = "github:nix-community/nix-index-database";
|
||||
@@ -25,14 +28,7 @@
|
||||
url = "github:nix-community/home-manager";
|
||||
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
|
||||
nixarr.url = "github:rasmus-kirk/nixarr";
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
pkgs.wifitui # TUI for managing wifi
|
||||
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
|
||||
httpie # Command-line HTTP client, a user-friendly cURL replacement
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
]);
|
||||
}
|
||||
@@ -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 you’re 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 doesn’t 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.
|
||||
@@ -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,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 = {
|
||||
# Better Steam scaling on HiDPI displays
|
||||
STEAM_FORCE_DESKTOPUI_SCALING = "1.25";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,13 +1,27 @@
|
||||
{ ... }: {
|
||||
# Steam runtime tweaks (user-session level, not NixOS system config)
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
|
||||
home.sessionVariables = {
|
||||
# Improves scaling consistency on HiDPI / Wayland setups
|
||||
STEAM_FORCE_DESKTOPUI_SCALING = "1.25";
|
||||
|
||||
# Optional Proton-related behavior toggles (safe defaults)
|
||||
PROTON_ENABLE_NVAPI = "1";
|
||||
PROTON_NO_ESYNC = "0";
|
||||
PROTON_NO_FSYNC = "0";
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -2,11 +2,14 @@
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
pkgs-nur-hadi,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
colors = config.lib.stylix.colors;
|
||||
|
||||
mkMenu = menu: let
|
||||
mkMenu = menu:
|
||||
let
|
||||
configFile = pkgs.writeText "config.yaml" (
|
||||
lib.generators.toYAML { } {
|
||||
anchor = "bottom-right";
|
||||
@@ -24,7 +27,201 @@
|
||||
pkgs.writeShellScriptBin "menu" ''
|
||||
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 = {
|
||||
"$mod" = "SUPER";
|
||||
"$shiftMod" = "SUPER_SHIFT";
|
||||
@@ -37,53 +234,28 @@ in {
|
||||
+ lib.getExe (mkMenu [
|
||||
{
|
||||
key = "a";
|
||||
desc = "Proton Authenticator";
|
||||
cmd = "env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator";
|
||||
desc = "Apps";
|
||||
cmd = lib.getExe appsMenu;
|
||||
}
|
||||
{
|
||||
key = "p";
|
||||
desc = "Proton Pass";
|
||||
cmd = "${pkgs.proton-pass}/bin/proton-pass";
|
||||
key = "d";
|
||||
desc = "Dev";
|
||||
cmd = lib.getExe devMenu;
|
||||
}
|
||||
{
|
||||
key = "v";
|
||||
desc = "Proton VPN";
|
||||
cmd = "${pkgs.proton-vpn}/bin/protonvpn-app";
|
||||
key = "g";
|
||||
desc = "Gaming";
|
||||
cmd = lib.getExe gamingMenu;
|
||||
}
|
||||
{
|
||||
key = "c";
|
||||
desc = "Proton Calendar";
|
||||
cmd = "${config.programs.librewolf.package}/bin/helium 'https://calendar.proton.me/'";
|
||||
}
|
||||
{
|
||||
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 = "u";
|
||||
desc = "Utilities";
|
||||
cmd = lib.getExe utilityMenu;
|
||||
}
|
||||
{
|
||||
key = "s";
|
||||
desc = "Signal";
|
||||
cmd = "${pkgs.signal-desktop}/bin/signal-desktop";
|
||||
}
|
||||
{
|
||||
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";
|
||||
desc = "System";
|
||||
cmd = lib.getExe systemMenu;
|
||||
}
|
||||
])
|
||||
)
|
||||
@@ -91,14 +263,13 @@ in {
|
||||
"$mod,B, exec, uwsm app -- ${config.programs.librewolf.package}/bin/helium" # Browser
|
||||
|
||||
# Power
|
||||
"$mod, X, global, caelestia:session" # Powermenu
|
||||
(
|
||||
"$shiftMod, X, exec, "
|
||||
"$mod, X, exec, "
|
||||
+ lib.getExe (mkMenu [
|
||||
{
|
||||
key = "l";
|
||||
desc = "Lock";
|
||||
cmd = "hyprctl dispatch global caelestia:lock";
|
||||
cmd = "hyprlock";
|
||||
}
|
||||
{
|
||||
key = "s";
|
||||
@@ -122,8 +293,8 @@ in {
|
||||
}
|
||||
{
|
||||
key = "c";
|
||||
desc = "Restart caelestia";
|
||||
cmd = "hyprctl dispatch exec 'caelestia-shell kill | sleep 1 | caelestia-shell'";
|
||||
desc = "Restart Waybar";
|
||||
cmd = "pkill -x waybar; waybar";
|
||||
}
|
||||
])
|
||||
)
|
||||
@@ -131,10 +302,9 @@ in {
|
||||
# Quick launch
|
||||
"$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
|
||||
"$mod,E, exec, uwsm app -- ${pkgs.thunar}/bin/thunar" # Thunar
|
||||
"$shiftMod, E, exec, pkill fuzzel || caelestia emoji -p" # Emoji picker
|
||||
"$mod, SPACE, global, caelestia:launcher" # Launcher
|
||||
"$mod, N, exec, caelestia shell drawers toggle sidebar" # Sidebar (Notifications, quick actions)
|
||||
"$mod, D, exec, caelestia shell drawers toggle dashboard" # Dashboard
|
||||
"$mod, SPACE, exec, walker" # Launcher
|
||||
"$mod, N, exec, ${lib.getExe pkgs.grimblast} save area" # Save screenshot
|
||||
"$mod, D, exec, ${lib.getExe pkgs.grimblast} copy area" # Copy screenshot
|
||||
|
||||
# Windows
|
||||
"$mod,Q, killactive," # Close window
|
||||
@@ -152,10 +322,9 @@ in {
|
||||
"$shiftMod,L, focusmonitor, 1" # Focus next monitor
|
||||
|
||||
# Utilities
|
||||
"$shiftMod, SPACE, exec, caelestia shell gameMode toggle" # Toggle Focus/Game mode
|
||||
"$shiftMod, S, global, caelestia:screenshotFreeze" # Capture region (freeze)
|
||||
", Print, global, caelestia:screenshotFreeze" # Capture region (freeze)
|
||||
"$shiftMod+Alt, S, global, caelestia:screenshot" # Capture region
|
||||
"$shiftMod, S, exec, ${lib.getExe pkgs.grimblast} copy area" # Capture region
|
||||
", Print, exec, ${lib.getExe pkgs.grimblast} copy area" # Capture region
|
||||
"$shiftMod+Alt, S, exec, ${lib.getExe pkgs.grimblast} save area" # Capture region
|
||||
]
|
||||
++ (builtins.concatLists (
|
||||
builtins.genList (
|
||||
@@ -176,32 +345,20 @@ in {
|
||||
|
||||
bindl = [
|
||||
# Brightness
|
||||
", XF86MonBrightnessUp, global, caelestia:brightnessUp"
|
||||
", XF86MonBrightnessDown, global, caelestia:brightnessDown"
|
||||
", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} set 5%+"
|
||||
", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} set 5%-"
|
||||
|
||||
# Media
|
||||
", XF86AudioPlay, global, caelestia:mediaToggle"
|
||||
", XF86AudioPause, global, caelestia:mediaToggle"
|
||||
", XF86AudioNext, global, caelestia:mediaNext"
|
||||
", XF86AudioPrev, global, caelestia:mediaPrev"
|
||||
", XF86AudioStop, global, caelestia:mediaStop"
|
||||
", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause"
|
||||
", XF86AudioPause, exec, ${lib.getExe pkgs.playerctl} play-pause"
|
||||
", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next"
|
||||
", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous"
|
||||
", XF86AudioStop, exec, ${lib.getExe pkgs.playerctl} stop"
|
||||
|
||||
# Sound
|
||||
", 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%+"
|
||||
", 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"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ in {
|
||||
./animations.nix
|
||||
./bindings.nix
|
||||
./polkitagent.nix
|
||||
./hyprlock.nix
|
||||
./keyboard-backlight.nix # CHANGEME: This is for omen laptop only
|
||||
];
|
||||
|
||||
@@ -31,6 +32,7 @@ in {
|
||||
libxcb
|
||||
hyprland-qtutils
|
||||
adw-gtk3
|
||||
hyprlock
|
||||
hyprshot
|
||||
hyprpicker
|
||||
swappy
|
||||
|
||||
@@ -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
|
||||
}
|
||||
'';
|
||||
}
|
||||
@@ -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"
|
||||
];
|
||||
}
|
||||
@@ -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"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
{config, ...}: {
|
||||
imports = [
|
||||
# Mostly system related configuration
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# System configuration
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../nixos/audio.nix
|
||||
../../nixos/bluetooth.nix
|
||||
../../nixos/fonts.nix
|
||||
@@ -13,8 +15,14 @@
|
||||
../../nixos/utils.nix
|
||||
../../nixos/hyprland.nix
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Graphics Card
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../nixos/amd-graphics.nix
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# System integration for Steam
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../nixos/steam.nix
|
||||
|
||||
# You should let those lines as is
|
||||
|
||||
+21
-2
@@ -3,16 +3,35 @@
|
||||
nixpkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
nixpkgs.lib.nixosSystem {
|
||||
modules = [
|
||||
{
|
||||
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.stylix.nixosModules.stylix
|
||||
inputs.nix-index-database.nixosModules.default
|
||||
inputs.helium-browser.nixosModules.default
|
||||
|
||||
./configuration.nix
|
||||
];
|
||||
}
|
||||
|
||||
+21
-4
@@ -1,6 +1,8 @@
|
||||
{config, ...}: {
|
||||
imports = [
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Programs
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../home/programs/ghostty
|
||||
../../home/programs/nvf
|
||||
../../home/programs/shell
|
||||
@@ -12,21 +14,32 @@
|
||||
../../home/programs/nix-utils
|
||||
../../home/programs/spotatui
|
||||
../../home/programs/yazi
|
||||
../../home/programs/steam
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Gaming
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../home/programs/steam
|
||||
../../home/programs/star-citizen
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Groups
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../home/programs/group/basic-apps.nix
|
||||
../../home/programs/group/dev.nix
|
||||
../../home/programs/group/misc.nix
|
||||
../../home/programs/group/gaming-apps.nix
|
||||
|
||||
# System (Desktop environment like stuff)
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# System
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../home/system/hyprland
|
||||
../../home/system/caelestia-shell
|
||||
../../home/system/waybar
|
||||
../../home/system/walker
|
||||
../../home/system/hyprpaper
|
||||
../../home/system/mime
|
||||
../../home/system/udiskie
|
||||
|
||||
./variables.nix # Mostly user-specific configuration
|
||||
#./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
|
||||
];
|
||||
|
||||
home = {
|
||||
@@ -47,6 +60,10 @@
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
star-citizen = {
|
||||
enable = true;
|
||||
package = "rsi-launcher-umu";
|
||||
};
|
||||
nixy = {
|
||||
enable = true;
|
||||
configDirectory = config.var.configDirectory;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{ config, ... }:
|
||||
|
||||
{
|
||||
{ config, ... }: {
|
||||
imports = [
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# System configuration
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../nixos/audio.nix
|
||||
../../nixos/bluetooth.nix
|
||||
../../nixos/fonts.nix
|
||||
@@ -14,9 +14,12 @@ imports = [
|
||||
../../nixos/utils.nix
|
||||
../../nixos/hyprland.nix
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# System integration for Steam
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../nixos/steam.nix
|
||||
|
||||
# Machine-specific files
|
||||
# You should let those lines as is
|
||||
./hardware-configuration.nix
|
||||
./variables.nix
|
||||
|
||||
@@ -24,6 +27,6 @@ imports = [
|
||||
|
||||
home-manager.users."${config.var.username}" = import ./home.nix;
|
||||
services.flatpak.enable = true;
|
||||
|
||||
# Don't touch this
|
||||
system.stateVersion = "24.05";
|
||||
}
|
||||
|
||||
+10
-3
@@ -14,21 +14,29 @@ nixpkgs.lib.nixosSystem {
|
||||
}
|
||||
|
||||
({ config, pkgs, lib, ... }: {
|
||||
# Intel microcode
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Intel Microcode
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
|
||||
# Graphics support
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Hardware accelaration
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Power management
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
powerManagement.cpuFreqGovernor = "powersave";
|
||||
services.tlp.enable = true;
|
||||
services.power-profiles-daemon.enable = false;
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Kernel modules commonly needed on ThinkPads
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
boot.kernelModules = [
|
||||
"i915"
|
||||
"snd_hda_intel"
|
||||
@@ -39,7 +47,6 @@ nixpkgs.lib.nixosSystem {
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.stylix.nixosModules.stylix
|
||||
inputs.nix-index-database.nixosModules.default
|
||||
inputs.helium-browser.nixosModules.default
|
||||
|
||||
./configuration.nix
|
||||
];
|
||||
|
||||
+15
-2
@@ -1,6 +1,8 @@
|
||||
{config, ...}: {
|
||||
imports = [
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Programs
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../home/programs/ghostty
|
||||
../../home/programs/nvf
|
||||
../../home/programs/shell
|
||||
@@ -12,15 +14,26 @@
|
||||
../../home/programs/nix-utils
|
||||
../../home/programs/spotatui
|
||||
../../home/programs/yazi
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Gaming
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../home/programs/steam
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# Groups
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../home/programs/group/basic-apps.nix
|
||||
../../home/programs/group/dev.nix
|
||||
../../home/programs/group/misc.nix
|
||||
../../home/programs/group/gaming-apps.nix
|
||||
|
||||
# System (Desktop environment like stuff)
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# System
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
../../home/system/hyprland
|
||||
../../home/system/caelestia-shell
|
||||
../../home/system/waybar
|
||||
../../home/system/walker
|
||||
../../home/system/hyprpaper
|
||||
../../home/system/mime
|
||||
../../home/system/udiskie
|
||||
|
||||
+2
-1
@@ -22,7 +22,8 @@
|
||||
|
||||
# System (Desktop environment like stuff)
|
||||
../../home/system/hyprland
|
||||
../../home/system/caelestia-shell
|
||||
../../home/system/waybar
|
||||
../../home/system/walker
|
||||
../../home/system/hyprpaper
|
||||
../../home/system/mime
|
||||
../../home/system/udiskie
|
||||
|
||||
@@ -44,11 +44,13 @@ in {
|
||||
"https://cache.nixos.org?priority=10"
|
||||
|
||||
"https://hyprland.cachix.org"
|
||||
"https://nix-citizen.cachix.org"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://numtide.cachix.org"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||
"nix-citizen.cachix.org-1:lPMkWc2X8XD4/7YPEEwXKKBg+SVbYTVrAaLA2wQTKCo="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"numtide.cachix.org-1:2ps1kLBUWjxIneOy1Ik6cQjb41X0iXVXeHigGmycPPE="
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user