feat: Add little-rascal laptop config and lab-tool auto-update system
## New Machine: little-rascal - Add Lenovo Yoga Slim 7 14ARE05 configuration (AMD Ryzen 7 4700U) - Niri desktop with CLI login (greetd + tuigreet) - zram swap configuration (25% of RAM with zstd) - AMD-optimized hardware support and power management - Based on congenital-optimist structure with laptop-specific additions ## Lab Tool Auto-Update System - Implement Guile Scheme auto-update module (lab/auto-update.scm) - Add health checks, logging, and safety features - Integrate with existing deployment and machine management - Update main CLI with auto-update and auto-update-status commands - Create NixOS service module for automated updates - Document complete implementation in simple-auto-update-plan.md ## MCP Integration - Configure Task Master AI and Context7 MCP servers - Set up local Ollama integration for AI processing - Add proper environment configuration for existing models ## Infrastructure Updates - Add little-rascal to flake.nix with deploy-rs support - Fix common user configuration issues - Create missing emacs.nix module - Update package integrations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
5e1061382c
commit
6eac143f57
19 changed files with 1287 additions and 559 deletions
126
machines/little-rascal/configuration.nix
Normal file
126
machines/little-rascal/configuration.nix
Normal file
|
@ -0,0 +1,126 @@
|
|||
# Little Rascal - Development Laptop Configuration
|
||||
# Based on congenital-optimist with laptop-specific adjustments
|
||||
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
unstable,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
|
||||
# Common modules
|
||||
../../modules/common/base.nix
|
||||
../../modules/common/nix.nix
|
||||
../../modules/common/tty.nix
|
||||
../../modules/common/emacs.nix
|
||||
|
||||
# Desktop
|
||||
../../modules/desktop/niri.nix
|
||||
../../modules/desktop/fonts.nix
|
||||
|
||||
# Development
|
||||
../../modules/development/tools.nix
|
||||
../../modules/ai/claude-code.nix
|
||||
|
||||
# Users
|
||||
../../modules/users/geir.nix
|
||||
../../modules/users/common.nix
|
||||
../../modules/users/shell-aliases.nix
|
||||
|
||||
# Virtualization
|
||||
../../modules/virtualization/libvirt.nix
|
||||
../../modules/virtualization/incus.nix
|
||||
../../modules/virtualization/podman.nix
|
||||
|
||||
# Audio
|
||||
../../modules/sound/pipewire.nix
|
||||
|
||||
# Network
|
||||
../../modules/network/common.nix
|
||||
../../modules/network/extraHosts.nix
|
||||
|
||||
# Security
|
||||
../../modules/security/ssh-keys.nix
|
||||
];
|
||||
|
||||
networking = {
|
||||
hostName = "little-rascal";
|
||||
networkmanager.enable = true;
|
||||
|
||||
# Tailscale for home lab access
|
||||
firewall = {
|
||||
enable = true;
|
||||
allowedUDPPorts = [ 41641 ]; # Tailscale
|
||||
allowedTCPPorts = [ 22 ]; # SSH
|
||||
};
|
||||
};
|
||||
|
||||
# Boot configuration
|
||||
boot = {
|
||||
loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
timeout = 3;
|
||||
};
|
||||
|
||||
kernelModules = [ "kvm-amd" "zram" ];
|
||||
tmp.cleanOnBoot = true;
|
||||
|
||||
# zram swap like other machines
|
||||
kernel.sysctl."vm.swappiness" = 180;
|
||||
};
|
||||
|
||||
# zram configuration
|
||||
zramSwap = {
|
||||
enable = true;
|
||||
algorithm = "zstd";
|
||||
memoryPercent = 25; # Use 25% of RAM for zram
|
||||
};
|
||||
|
||||
# Hardware - minimal for laptop
|
||||
hardware = {
|
||||
bluetooth.enable = true;
|
||||
graphics.enable = true;
|
||||
};
|
||||
|
||||
# Laptop-specific services
|
||||
services = {
|
||||
# Power management for laptop
|
||||
power-profiles-daemon.enable = true;
|
||||
upower.enable = true;
|
||||
|
||||
# Display manager
|
||||
greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session = {
|
||||
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd ${pkgs.zsh}/bin/zsh";
|
||||
user = "greeter";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Essential services
|
||||
tailscale.enable = true;
|
||||
blueman.enable = true;
|
||||
printing.enable = true;
|
||||
|
||||
# Location services for time zone
|
||||
geoclue2.enable = true;
|
||||
};
|
||||
|
||||
# Localization
|
||||
time.timeZone = "Europe/Oslo";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
keyMap = "no";
|
||||
};
|
||||
|
||||
# System version
|
||||
system.stateVersion = "25.05";
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue