Add plasma module
This commit is contained in:
parent
c1e2b34b50
commit
1e53199429
5 changed files with 82 additions and 253 deletions
26
flake.lock
generated
26
flake.lock
generated
|
|
@ -300,6 +300,29 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"plasma-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756632588,
|
||||||
|
"narHash": "sha256-ydam6eggXf3ZwRutyCABwSbMAlX+5lW6w1SVZQ+kfSo=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "plasma-manager",
|
||||||
|
"rev": "d47428e5390d6a5a8f764808a4db15929347cd77",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "plasma-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"claude-code": "claude-code",
|
"claude-code": "claude-code",
|
||||||
|
|
@ -309,7 +332,8 @@
|
||||||
"nix-darwin": "nix-darwin",
|
"nix-darwin": "nix-darwin",
|
||||||
"nix-homebrew": "nix-homebrew",
|
"nix-homebrew": "nix-homebrew",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nixvim": "nixvim"
|
"nixvim": "nixvim",
|
||||||
|
"plasma-manager": "plasma-manager"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,14 @@
|
||||||
nix-homebrew.url = "github:zhaofengli/nix-homebrew";
|
nix-homebrew.url = "github:zhaofengli/nix-homebrew";
|
||||||
disko.url = "github:nix-community/disko";
|
disko.url = "github:nix-community/disko";
|
||||||
disko.inputs.nixpkgs.follows = "nixpkgs";
|
disko.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
plasma-manager = {
|
||||||
|
url = "github:nix-community/plasma-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs@{ self, nix-darwin, nixpkgs, home-manager, nixvim, claude-code, firefox-addons, nix-homebrew, disko }:
|
outputs = inputs@{ self, nix-darwin, nixpkgs, home-manager, nixvim, claude-code, firefox-addons, nix-homebrew, disko, plasma-manager }:
|
||||||
{
|
{
|
||||||
darwinConfigurations."imac" = nix-darwin.lib.darwinSystem {
|
darwinConfigurations."imac" = nix-darwin.lib.darwinSystem {
|
||||||
modules = [
|
modules = [
|
||||||
|
|
@ -88,7 +93,7 @@
|
||||||
"yanlin@thinkpad" = home-manager.lib.homeManagerConfiguration {
|
"yanlin@thinkpad" = home-manager.lib.homeManagerConfiguration {
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
modules = [ ./hosts/nixos/thinkpad/home.nix ];
|
modules = [ ./hosts/nixos/thinkpad/home.nix ];
|
||||||
extraSpecialArgs = { inherit claude-code nixvim firefox-addons; };
|
extraSpecialArgs = { inherit claude-code nixvim firefox-addons plasma-manager; };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,249 +0,0 @@
|
||||||
# NixOS Installation Guide for ThinkPad P14s Gen 2
|
|
||||||
|
|
||||||
This guide will walk you through installing NixOS on your Lenovo ThinkPad P14s Gen 2 with Intel i7 and NVIDIA T500 GPU.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- USB drive (4GB or larger)
|
|
||||||
- NixOS ISO image
|
|
||||||
- Ethernet cable or WiFi credentials
|
|
||||||
- This configuration repository
|
|
||||||
|
|
||||||
## Step 1: Prepare Installation Media
|
|
||||||
|
|
||||||
1. Download the latest NixOS ISO (GNOME or Plasma edition recommended for GUI installer):
|
|
||||||
```bash
|
|
||||||
# Download from https://nixos.org/download.html
|
|
||||||
# Choose the 64-bit Intel/AMD ISO
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Write the ISO to USB drive:
|
|
||||||
```bash
|
|
||||||
# On Linux/macOS:
|
|
||||||
sudo dd if=nixos-24.05-x86_64.iso of=/dev/sdX bs=4M status=progress
|
|
||||||
|
|
||||||
# On Windows: Use Rufus or Etcher
|
|
||||||
```
|
|
||||||
|
|
||||||
## Step 2: Boot from USB
|
|
||||||
|
|
||||||
1. Insert the USB drive into your ThinkPad
|
|
||||||
2. Press F12 during boot to access boot menu
|
|
||||||
3. Select the USB drive
|
|
||||||
4. Choose "NixOS Installer" from the boot menu
|
|
||||||
|
|
||||||
## Step 3: Connect to Internet
|
|
||||||
|
|
||||||
### Option A: Ethernet (Easiest)
|
|
||||||
Simply plug in an ethernet cable.
|
|
||||||
|
|
||||||
### Option B: WiFi
|
|
||||||
```bash
|
|
||||||
# List available networks
|
|
||||||
sudo nmcli device wifi list
|
|
||||||
|
|
||||||
# Connect to WiFi
|
|
||||||
sudo nmcli device wifi connect "YOUR_SSID" password "YOUR_PASSWORD"
|
|
||||||
|
|
||||||
# Verify connection
|
|
||||||
ping -c 3 nixos.org
|
|
||||||
```
|
|
||||||
|
|
||||||
## Step 4: Prepare Disk
|
|
||||||
|
|
||||||
### IMPORTANT: Identify Your Disk
|
|
||||||
```bash
|
|
||||||
# List all disks
|
|
||||||
lsblk
|
|
||||||
|
|
||||||
# Your NVMe SSD will likely be /dev/nvme0n1
|
|
||||||
# Verify the size matches your disk
|
|
||||||
```
|
|
||||||
|
|
||||||
### Update Disk Configuration
|
|
||||||
Edit the disk device in your configuration if needed:
|
|
||||||
```bash
|
|
||||||
# If your disk is not /dev/nvme0n1, you'll need to update disk-config.nix
|
|
||||||
# after cloning the repository (see next step)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Step 5: Clone Configuration Repository
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Install git temporarily
|
|
||||||
nix-shell -p git
|
|
||||||
|
|
||||||
# Clone your configuration
|
|
||||||
git clone https://github.com/Logan-Lin/nix-config.git
|
|
||||||
cd nix-config
|
|
||||||
|
|
||||||
# If needed, update the disk device in hosts/nixos/thinkpad/disk-config.nix
|
|
||||||
nano hosts/nixos/thinkpad/disk-config.nix
|
|
||||||
# Change 'device = "/dev/nvme0n1"' to match your disk
|
|
||||||
```
|
|
||||||
|
|
||||||
## Step 6: Partition Disk with Disko
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# This will ERASE your entire disk!
|
|
||||||
# Make sure you have backups of any important data
|
|
||||||
|
|
||||||
# Partition the disk according to disk-config.nix
|
|
||||||
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- \
|
|
||||||
--mode disko \
|
|
||||||
--flake .#thinkpad
|
|
||||||
```
|
|
||||||
|
|
||||||
## Step 7: Generate Hardware Configuration
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Generate hardware-configuration.nix
|
|
||||||
sudo nixos-generate-config --show-hardware-config > hosts/nixos/thinkpad/hardware-configuration.nix
|
|
||||||
|
|
||||||
# Review the generated file
|
|
||||||
cat hosts/nixos/thinkpad/hardware-configuration.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
## Step 8: Find GPU Bus IDs
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Find your GPU bus IDs for NVIDIA PRIME
|
|
||||||
lspci | grep -E 'VGA|3D'
|
|
||||||
|
|
||||||
# You should see something like:
|
|
||||||
# 00:02.0 VGA compatible controller: Intel Corporation ...
|
|
||||||
# 01:00.0 3D controller: NVIDIA Corporation T500 ...
|
|
||||||
|
|
||||||
# Update system.nix with correct bus IDs:
|
|
||||||
nano hosts/nixos/thinkpad/system.nix
|
|
||||||
|
|
||||||
# Find and update these lines with your actual values:
|
|
||||||
# intelBusId = "PCI:0:2:0";
|
|
||||||
# nvidiaBusId = "PCI:1:0:0";
|
|
||||||
```
|
|
||||||
|
|
||||||
## Step 9: Install NixOS
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Install NixOS using the flake configuration
|
|
||||||
sudo nixos-install --flake .#thinkpad
|
|
||||||
|
|
||||||
# You will be prompted to set the root password
|
|
||||||
# (You can leave it blank since we use SSH keys and sudo)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Step 10: Reboot
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Remove the USB drive and reboot
|
|
||||||
sudo reboot
|
|
||||||
```
|
|
||||||
|
|
||||||
## Step 11: Post-Installation Setup
|
|
||||||
|
|
||||||
After rebooting into your new NixOS system:
|
|
||||||
|
|
||||||
### Login
|
|
||||||
- Username: `yanlin`
|
|
||||||
- Password: Use the password you know (the hashed one in the config)
|
|
||||||
|
|
||||||
### Apply Home Manager Configuration
|
|
||||||
```bash
|
|
||||||
# Clone the config repo to your home directory
|
|
||||||
cd ~
|
|
||||||
git clone https://github.com/Logan-Lin/nix-config.git .config/nix
|
|
||||||
|
|
||||||
# Apply home-manager configuration
|
|
||||||
home-manager switch --flake ~/.config/nix#yanlin@thinkpad
|
|
||||||
```
|
|
||||||
|
|
||||||
### Verify NVIDIA Setup
|
|
||||||
```bash
|
|
||||||
# Check if NVIDIA driver is loaded
|
|
||||||
lsmod | grep nvidia
|
|
||||||
|
|
||||||
# Test NVIDIA offload
|
|
||||||
nvidia-offload glxgears
|
|
||||||
|
|
||||||
# Check GPU status
|
|
||||||
nvidia-smi
|
|
||||||
```
|
|
||||||
|
|
||||||
### Set Up Power Management
|
|
||||||
```bash
|
|
||||||
# Check TLP status
|
|
||||||
sudo tlp-stat
|
|
||||||
|
|
||||||
# Monitor battery
|
|
||||||
acpi -b
|
|
||||||
|
|
||||||
# Check CPU frequency scaling
|
|
||||||
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
|
|
||||||
```
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### WiFi Not Working
|
|
||||||
- Some ThinkPad models need newer kernel: Already using latest kernel in config
|
|
||||||
- Check if WiFi is blocked: `rfkill list`
|
|
||||||
|
|
||||||
### NVIDIA Issues
|
|
||||||
- If NVIDIA doesn't work, boot with integrated graphics only:
|
|
||||||
- Comment out the nvidia configuration in system.nix
|
|
||||||
- Rebuild: `sudo nixos-rebuild switch --flake ~/.config/nix#thinkpad`
|
|
||||||
|
|
||||||
### Display Manager Not Starting
|
|
||||||
- Switch to TTY (Ctrl+Alt+F2)
|
|
||||||
- Check logs: `journalctl -xeu display-manager`
|
|
||||||
|
|
||||||
### Battery Drain
|
|
||||||
- Ensure TLP is running: `systemctl status tlp`
|
|
||||||
- Check if NVIDIA is always on: `cat /proc/acpi/bbswitch`
|
|
||||||
- Use `powertop` to identify power-hungry processes
|
|
||||||
|
|
||||||
## Useful Commands
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Rebuild system configuration
|
|
||||||
sudo nixos-rebuild switch --flake ~/.config/nix#thinkpad
|
|
||||||
|
|
||||||
# Rebuild home configuration
|
|
||||||
home-manager switch --flake ~/.config/nix#yanlin@thinkpad
|
|
||||||
|
|
||||||
# Update system
|
|
||||||
nix flake update ~/.config/nix
|
|
||||||
sudo nixos-rebuild switch --flake ~/.config/nix#thinkpad
|
|
||||||
|
|
||||||
# Check system health
|
|
||||||
nixos-option system.stateVersion
|
|
||||||
nix-store --verify --check-contents
|
|
||||||
|
|
||||||
# Clean up old generations
|
|
||||||
sudo nix-collect-garbage -d
|
|
||||||
```
|
|
||||||
|
|
||||||
## KDE Plasma Tips
|
|
||||||
|
|
||||||
- **Global Theme**: System Settings → Appearance → Global Theme
|
|
||||||
- **Display Configuration**: System Settings → Display and Monitor
|
|
||||||
- **Power Management**: System Settings → Power Management
|
|
||||||
- **NVIDIA Settings**: Run `nvidia-settings` from terminal or application menu
|
|
||||||
- **Virtual Desktops**: System Settings → Workspace → Virtual Desktops
|
|
||||||
|
|
||||||
## Running Applications with NVIDIA GPU
|
|
||||||
|
|
||||||
To run applications using the discrete NVIDIA GPU:
|
|
||||||
```bash
|
|
||||||
# Use the nvidia-offload command (alias: nvidia-run)
|
|
||||||
nvidia-offload firefox
|
|
||||||
nvidia-offload steam
|
|
||||||
nvidia-run blender
|
|
||||||
```
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
- The configuration includes Firefox add-ons support for the home-manager setup
|
|
||||||
- Claude Code is available after home-manager installation
|
|
||||||
- The system is configured for maximum battery life with TLP
|
|
||||||
- NVIDIA GPU is set to power-saving offload mode by default
|
|
||||||
- KDE Plasma 6 with Wayland support is configured
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
{ config, pkgs, firefox-addons, ... }:
|
{ config, pkgs, firefox-addons, plasma-manager, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# Import the common NixOS home configuration
|
# Import the common NixOS home configuration
|
||||||
imports = [
|
imports = [
|
||||||
../home-default.nix
|
../home-default.nix
|
||||||
../../../modules/firefox.nix
|
../../../modules/firefox.nix
|
||||||
|
../../../modules/plasma.nix
|
||||||
|
plasma-manager.homeModules.plasma-manager
|
||||||
];
|
];
|
||||||
|
|
||||||
# Enable Firefox with NixOS-specific package
|
# Enable Firefox with NixOS-specific package
|
||||||
|
|
|
||||||
47
modules/plasma.nix
Normal file
47
modules/plasma.nix
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# Enable plasma configuration
|
||||||
|
programs.plasma.enable = true;
|
||||||
|
|
||||||
|
# Configure Konsole through plasma-manager
|
||||||
|
programs.konsole = {
|
||||||
|
enable = true;
|
||||||
|
defaultProfile = "Main";
|
||||||
|
profiles.Main = {
|
||||||
|
font = {
|
||||||
|
name = "JetBrainsMono Nerd Font";
|
||||||
|
size = 14;
|
||||||
|
};
|
||||||
|
colorScheme = "Breeze";
|
||||||
|
extraConfig = {
|
||||||
|
General.SilenceSeconds = 0;
|
||||||
|
"Scrolling".ScrollBarPosition = 0;
|
||||||
|
"Terminal Features" = {
|
||||||
|
BlinkingTextEnabled = true;
|
||||||
|
FlowControlEnabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraConfig = {
|
||||||
|
MainWindow = {
|
||||||
|
ToolBarsMovable = "Disabled";
|
||||||
|
};
|
||||||
|
KonsoleWindow.ShowMenuBarByDefault = false;
|
||||||
|
MainToolBar.Visible = false;
|
||||||
|
SessionToolBar.Visible = false;
|
||||||
|
TabBar = {
|
||||||
|
TabBarPosition = "Top";
|
||||||
|
TabBarVisibility = "ShowTabBarWhenNeeded";
|
||||||
|
ShowQuickButtons = false;
|
||||||
|
NewTabButton = false;
|
||||||
|
CloseTabButton = false;
|
||||||
|
};
|
||||||
|
General.ShowWindowTitleOnTitleBar = false;
|
||||||
|
"Notification Messages".CloseSession = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure KWin for borderless windows
|
||||||
|
programs.plasma.kwin.borderlessMaximizedWindows = true;
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue