Adding all files and folders

This commit is contained in:
2026-02-01 12:08:31 +11:00
parent 892f3f2418
commit 1fb54400b4
24 changed files with 63803 additions and 0 deletions

7
.gemini/settings.json Normal file
View File

@@ -0,0 +1,7 @@
{
"security": {
"folderTrust": {
"enabled": true
}
}
}

2
dfsdw Normal file
View File

@@ -0,0 +1,2 @@
* master
remotes/origin/main

67
docs/00_backup_plan.md Normal file
View File

@@ -0,0 +1,67 @@
# Phase 0: Full System Backup (CRITICAL)
**Objective:** To create a complete, offline, and verified backup of all critical data from both the Ubuntu and Windows operating systems before beginning the migration process.
**Do not proceed to any other phase until this phase is 100% complete.** Data loss is irreversible.
## Instructions for Backup Operator (Human or AI)
### 1. Identify Backup Target
- **Requirement:** You will need an external storage device (e.g., a USB hard drive or NAS) with enough free space to hold all the data you intend to back up.
- **Recommendation:** This drive should be dedicated to the backup and stored offline (disconnected from the computer) once the backup is complete.
### 2. Backup Ubuntu Data
Your personal files are the top priority. System files can be reinstalled by the new OS.
- **Primary Tool:** `rsync` is the recommended tool for its efficiency and ability to preserve permissions and metadata.
- **Source Directories:** The most common locations for user data on Linux are within the `/home/<username>` directory. You must identify and back up, at a minimum:
- `/home/<username>/Documents`
- `/home/<username>/Pictures`
- `/home/<username>/Music`
- `/home/<username>/Videos`
- `/home/<username>/Desktop`
- `/home/<username>/Downloads`
- `/home/<username>/dotfiles` (as mentioned in the main plan)
- Any other project or data directories inside your home folder (e.g., `/home/<username>/dev`, `/home/<username>/workspaces`).
- **Docker Data:**
- Stop all running containers: `docker stop $(docker ps -aq)`
- Identify Docker's data directory, typically `/var/lib/docker`. This contains volumes, images, and container configurations. Back this entire directory up.
- **Server Configurations:**
- Snapcast config: Locate and back up the configuration files (e.g., `/etc/snapserver.conf`, `/etc/snapclient.conf`).
- Other server configs (Apache, Node.js services): Back up relevant files from `/etc/` and any service data files.
**Example `rsync` Command:**
```bash
# Replace <username>, <external_drive_mount_point>, and <backup_folder_name>
# The -a flag archives, -v is verbose, -h is human-readable, --progress shows progress.
rsync -avh --progress /home/<username>/Documents /<external_drive_mount_point>/<backup_folder_name>/
```
*Run this for each source directory.*
### 3. Backup Windows Data
- **Method:** Boot into your Windows 10 operating system.
- **Source Directories:** Connect your external backup drive. Manually copy the entire contents of your user folders to the backup drive. These are typically located at:
- `C:\Users\<YourUsername>\Documents`
- `C:\Users\<YourUsername>\Pictures`
- `C:\Users\<YourUsername>\Music`
- `C:\Users\<YourUsername>\Videos`
- `C:\Users<YourUsername>\Desktop`
- `C:\Users<YourUsername>\Downloads`
- **Thoroughness:** Be meticulous. Ensure you copy all personal data. Do not worry about program files or the Windows directory itself.
### 4. Verification
A backup is not a backup until it is verified.
- **Procedure:** After the copy process is complete for both operating systems, safely eject and reconnect the external drive.
- **Spot Check:** Browse the directories on the backup drive. Open a few files of different types (documents, images, music files) from both the Ubuntu and Windows backups to ensure they are not corrupted and are fully readable.
- **Compare Sizes:** Use a disk usage tool (like `du -sh` on Linux or checking folder properties on Windows) to compare the size of a few source directories with their backed-up counterparts. They should be identical.
### 5. Completion
- Once verified, disconnect the external backup drive.
- Store it in a safe, separate physical location.
- You may now proceed to Phase 1.

View File

@@ -0,0 +1,39 @@
# Phase 1: System Reconnaissance Guide
**Objective:** To execute the reconnaissance script that gathers essential information about the current system. This information will be used in subsequent phases to plan the file and software migration.
**Prerequisite:** Ensure you have completed **Phase 0: Full System Backup**. Do not run this script until you have a complete and verified offline backup of your data.
## Instructions for Operator (Human or AI)
### 1. Understand the Script
- **Script Location:** `scripts/01_system_recon.sh`
- **Purpose:** This script is designed to be **non-destructive**. It reads information about the system and saves it to a log file. It does not modify any files or settings.
- **Actions Performed:**
- Gathers disk, partition, and filesystem information.
- Calculates the total size of major user directories (Documents, Pictures, etc.).
- Lists installed software from `apt` and `snap`.
- Collects detailed information about the Docker setup (containers, images, volumes).
- Checks for versions of common development languages (Rust, Node, etc.).
- Looks for evidence of common servers and development workspaces (Eclipse, Arduino).
- **Output:** All findings are saved to `logs/01_system_recon.log`.
### 2. Execution
1. Open a terminal on the Ubuntu machine that is being migrated.
2. Navigate to the `nixos-migration` project directory.
3. Run the script. It may ask for a password as some commands (like inspecting Docker's data directory or listing packages) can require elevated privileges to get a complete picture.
```bash
sudo ./scripts/01_system_recon.sh
```
### 3. Review the Output
- Upon completion, the script will have created or updated the log file at `logs/01_system_recon.log`.
- Review this file to ensure the information appears correct and complete. This log is the foundation for all future planning steps.
### 4. Next Steps
Once the reconnaissance is complete and the log file has been generated, you may proceed to **Phase 2: Migration Analysis & Planning**. The data in the log file will be the primary input for this next phase.

View File

@@ -0,0 +1,65 @@
# Phase 2: Software Migration Plan & Mapping
**Objective:** To create a clear mapping from currently installed software (via APT and Snap) to their equivalents in the NixOS ecosystem. This list will directly inform the creation of the `configuration.nix` file.
## Analysis Summary
The reconnaissance scan revealed a large number of installed packages. The following is a high-level summary and a plan for the most critical software components identified.
**Instructions:** Review this list. Add any missing critical applications. The "NixOS Package Name" column should be filled in by searching for the application on [NixOS Search](https://search.nixos.org/packages).
---
### Tier 1: Critical Applications & Services
These are essential for your daily workflow and server functions.
| Application Name | Installed Via | Notes | NixOS Package Name / Module |
| ----------------------- | ------------- | ----------------------------------------------- | -------------------------------- |
| Docker | `apt` | Core virtualization tool. | `virtualisation.docker.enable = true;` |
| Docker Compose | `apt` | Used for multi-container Docker apps. | `docker-compose` |
| Firefox | `snap` | Primary web browser. | `firefox` |
| Thunderbird | `snap` | Email client. | `thunderbird` |
| Kitty | `apt` | Terminal emulator. | `kitty` |
| Neovim (from dotfiles) | Manual/Git | Primary text editor. | `neovim` |
| Snapcast (Server/Client)| `apt`? | Need to locate config files (`/etc/snap*`). | `snapcast-server`, `snapcast-client` |
| Gitea (mentioned) | Docker/Manual | Git service. | `gitea` or managed via Docker |
| Nushell | `snap` | Shell. | `nushell` |
| --- | --- | --- | --- |
### Tier 2: Development & CLI Tools
Essential tools for your development and command-line environment.
| Tool Name | Installed Via | Notes | NixOS Package Name |
| ----------------------- | ------------- | ----------------------------------------------- | -------------------------------- |
| Git | `apt` | Version control. | `git` |
| Rust (cargo, rustc) | `apt` | Rust programming language toolchain. | `rustc`, `cargo` |
| Node.js | `apt` | JavaScript runtime. | `nodejs` (specify version) |
| Python 3 | `apt` | Python programming language. | `python3` |
| build-essential / gcc | `apt` | C/C++ compiler and core build tools. | `gcc`, `gnumake` |
| btop | `apt` | Resource monitor. | `btop` |
| eza / bat / fzf | `apt` | Modern CLI tools. | `eza`, `bat`, `fzf` |
| --- | --- | --- | --- |
### Tier 3: Desktop & GUI Applications
Standard desktop applications.
| Application Name | Installed Via | Notes | NixOS Package Name |
| ----------------------- | ------------- | ----------------------------------------------- | -------------------------------- |
| LibreOffice | `apt` | Office suite. | `libreoffice` |
| Flameshot | `apt` | Screenshot tool. | `flameshot` |
| GIMP / Inkscape (if any)| `apt`? | Graphics editors. | `gimp`, `inkscape` |
| GNOME Apps (various) | `apt` | Calculator, Clocks, etc. | Handled by `services.xserver.desktopManager.gnome.enable = true;` |
| --- | --- | --- | --- |
## Plan for Other Packages
- **System Libraries:** The vast majority of packages listed in the log are system libraries (files ending in `...:amd64`, `...-dev`, `lib...`). These will be managed automatically by NixOS as dependencies for the applications you choose to install. You do not need to list them manually.
- **Snap Packages:** All applications installed via `snap` will need to be replaced with their NixOS/Flathub equivalents. NixOS does not support Snap out of the box.
- **De-duplication:** Many packages are related (e.g., `g++`, `gcc`, `cpp`). In NixOS, installing the `gcc` package will provide the necessary toolchain.
**Next Step:** Use this document as a worksheet to build the `environment.systemPackages` list in the `configuration.nix.template` file.

View File

@@ -0,0 +1,67 @@
# Phase 2: Software Migration Plan & Mapping (Filled)
**Objective:** To create a clear mapping from currently installed software (via APT and Snap) to their equivalents in the NixOS ecosystem. This list will directly inform the creation of the `configuration.nix` file.
## Analysis Summary
The following tables are based on the `logs/01_system_recon.log` file.
---
### Tier 1: Critical Applications & Services
These are essential for your daily workflow and server functions.
| Application Name | Installed Via | Notes | NixOS Package Name / Module |
| ----------------------- | ------------- | ----------------------------------------------- | -------------------------------- |
| Firefox | `snap` | Primary web browser. | `firefox` |
| Thunderbird | `snap` | Email client. | `thunderbird` |
| Kitty | `apt` | Terminal emulator. | `kitty` |
| Neovim | `apt` | Primary text editor. | `neovim` |
| Nushell | `snap` | Shell. | `nushell` |
| VS Code | `snap` | Code editor. | `vscode` |
| Telegram Desktop | `snap` | Messaging app. | `telegram-desktop` |
| --- | --- | --- | --- |
### Tier 2: Development & CLI Tools
Essential tools for your development and command-line environment.
| Tool Name | Installed Via | Notes | NixOS Package Name |
| ----------------------- | ------------- | ----------------------------------------------- | -------------------------------- |
| Git | `apt` | Version control. | `git` |
| Rust (cargo, rustc) | `apt` | Rust programming language toolchain. | `rustc`, `cargo` |
| Node.js | `apt` | JavaScript runtime. | `nodejs` (specify version) |
| Python 3 | `apt` | Python programming language. | `python3` |
| build-essential / gcc | `apt` | C/C++ compiler and core build tools. | `gcc`, `gnumake` |
| btop | `apt` | Resource monitor. | `btop` |
| eza | `apt` | Modern `ls` replacement. | `eza` |
| bat | `apt` | Modern `cat` replacement. | `bat` |
| fzf | `apt` | Command-line fuzzy finder. | `fzf` |
| ripgrep | `apt` | Fast search tool. | `ripgrep` |
| zoxide | `apt` | Smarter `cd` command. | `zoxide` |
| --- | --- | --- | --- |
### Tier 3: Desktop & GUI Applications
Standard desktop applications.
| Application Name | Installed Via | Notes | NixOS Package Name |
| ----------------------- | ------------- | ----------------------------------------------- | -------------------------------- |
| LibreOffice | `apt` | Office suite. | `libreoffice` |
| Flameshot | `apt` | Screenshot tool. | `flameshot` |
| VLC | `apt` | Media player. | `vlc` |
| Spotify | `snap` | Music player. | `spotify` |
| Timeshift | `apt` | System restore utility. | `timeshift` |
| GNOME Apps (various) | `apt` | Calculator, Clocks, etc. | Handled by `services.xserver.desktopManager.gnome.enable = true;` |
| --- | --- | --- | --- |
## Plan for Other Packages
- **System Libraries:** The vast majority of packages listed in the log are system libraries (files ending in `...:amd64`, `...-dev`, `lib...`). These will be managed automatically by NixOS as dependencies for the applications you choose to install. You do not need to list them manually.
- **Snap Packages:** All applications installed via `snap` will need to be replaced with their NixOS/Flathub equivalents. NixOS does not support Snap out of the box. The list above includes the most important ones.
- **De-duplication:** Many packages are related (e.g., `g++`, `gcc`, `cpp`). In NixOS, installing the `gcc` package will provide the necessary toolchain.
**Next Step:** Use this document as a worksheet to build the `environment.systemPackages` list in the `configuration.nix` file.

View File

@@ -0,0 +1,105 @@
# Phase 3: File Migration Scripting Guide
**Objective:** To prepare for the physical relocation of user data from the old directory structures to the new, consolidated structure on the NixOS system.
**Prerequisite:** A full analysis of the disk and file reconnaissance log (`logs/01_system_recon.log`) must be complete. The target directory structure should be agreed upon.
**Core Principle:** We will not move files directly. We will write a script that **copies** the files. The original data will be left untouched until the new NixOS system is fully configured and the copied data is verified. We will also implement a `--dry-run` feature for safety.
---
### Target Directory for Staging
To avoid disturbing the existing file structure on the 2.7TB drive, the migration script should consolidate all files from the Windows and old Ubuntu partitions into a single, new directory.
- **Staging Directory:** `/mnt/ubuntu_storage_3TB/migration_staging`
The script's primary purpose is to copy data from the other drives *into* this location. From there, you can organize it manually at your leisure after the migration is complete.
---
### Instructions for Operator (Human or AI)
Your task is to create a shell script named `scripts/02_migrate_files.sh`. This script will contain a series of `rsync` commands to copy data from the source drives to the target directories.
#### 1. Script Requirements
- **Shebang:** The script must start with `#!/bin/bash`.
- **Safety:** The script should not perform any operations if run as root without a specific override.
- **Dry-Run Flag:** The script must accept a `--dry-run` argument. If this flag is present, all `rsync` commands should be executed with the `--dry-run` flag, which shows what would be done without making any actual changes.
- **Verbosity:** All commands should be verbose (`-v`) and output human-readable sizes (`-h`) so the user can see the progress.
- **Logging:** The script should log its output to a file in the `logs/` directory.
#### 2. Source Data Locations
The script will need to access data from the following locations. These drives will be mounted on the running NixOS system *before* the script is executed (as defined in `configuration.nix`).
- **Primary Ubuntu Home:** `/home/sam/` on the old root partition. (This will need to be mounted temporarily during migration).
- **Ubuntu Storage Drive:** The contents of `/dev/sdd1` (which will become `/data`). The script will mostly be organizing files *within* this drive.
- **Windows Storage Drive:** `/mnt/windows-storage` (mounted from `/dev/sdb2`).
- **Windows User Folders:** The script may need to access `C:\Users\<YourUsername>` from one of the `ntfs` partitions.
#### 3. `rsync` Command Structure
Use the `rsync` command for all file copy operations. It is efficient, safe, and preserves metadata.
**Example `rsync` command for the script:**
```bash
# -a: archive mode (preserves permissions, ownership, etc.)
# -v: verbose
# -h: human-readable numbers
# --progress: show progress during transfer
# --exclude='*.tmp': example of excluding files
rsync -avh --progress --exclude='cache' /path/to/source/documents/ /data/work/
```
#### 4. Script Skeleton (to be created in `scripts/02_migrate_files.sh`)
```bash
#!/bin/bash
# ---
# Configuration ---
# ---
LOG_FILE="logs/02_file_migration.log"
DRY_RUN=""
# Check for --dry-run flag
if [ "$1" == "--dry-run" ]; then
DRY_RUN="--dry-run"
echo "---
PERFORMING DRY RUN ---"
fi
# ---
# Helper Functions ---
# ---
log() {
echo "$1" | tee -a "$LOG_FILE"
}
# ---
# Main Execution ---
# ---
log "Starting file migration script..."
# Create target directories
log "Creating target directories..."
mkdir -p $DRY_RUN /data/personal /data/work /data/dev /data/backups /data/media
# ---
# Migration Commands ---
# ---
# Add rsync commands here. Be specific.
# Example:
# log "Migrating Documents from Windows..."
# rsync -avh $DRY_RUN /mnt/windows-storage/Users/Sam/Documents/ /data/work/project-archives/
log "File migration script finished."
```
**Next Step:** A developer or another AI instance will now write the full `scripts/02_migrate_files.sh` script based on these instructions and a deeper analysis of the file contents revealed in `logs/02_deeper_scan.log`.

View File

@@ -0,0 +1,40 @@
# Migration Status and Next Steps (Jan 28, 2026)
This document summarizes the current status of the NixOS migration project and outlines the remaining critical steps.
## Current Status
**Phase 1: Data Staging and Relocation - COMPLETE**
* **Initial Data Review:** Identified and confirmed that primary user personal files (Documents, Pictures, Music, Videos, Downloads) were largely already present in `/data/personal`.
* **Missing Project Data Identified:** Discovered missing web projects (XAMPP `htdocs`) and IoT projects (`frei0r`) from the old Windows drive (`/media/sam/8294CD2994CD2111`).
* **Data Staging Completed:** Successfully copied the missing web projects to `/data/work/htdocs` and IoT projects to `/data/work/frei0r`. The `Espressif` toolchain was intentionally excluded.
* **Critical Data Relocation:** Both the entire `/data` directory (containing all staged user data, total ~86GB) and the `nixos-migration` project directory were successfully copied from the original Ubuntu OS drive to the external USB drive: `/media/sam/Integral300/`. This is crucial for safeguarding data before the main drive is formatted.
**Phase 2: Deep System Reconnaissance - COMPLETE**
* A comprehensive `04_nixos_recon.sh` script was created and executed.
* Detailed logs (`logs/04_nixos_recon.log`) have been generated, containing:
* Lists of all installed APT and Snap packages.
* Information on active systemd services and timers (system-wide and user-specific).
* Output from Docker commands (version, info, running containers, images, volumes) and a search for `docker-compose.yml` files.
* Analysis of shell history for frequently used command-line tools.
* Lists of manually installed binaries in `/usr/local/bin`, `~/bin`, and `~/.local/bin`.
**Gitea Archival - COMPLETE**
* The essential `logs/` and `results/` directories from this `nixos-migration` project have been successfully pushed to the `nixos-4screen` Gitea repository (`ssh://git@gitea.lab.audasmedia.com.au:2222/sam/nixos-4screen.git`). This ensures the reconnaissance data and any future NixOS configuration templates are safely version-controlled.
## Next Steps / Remaining Considerations
1. **Review All Reconnaissance Logs:** A thorough manual review of all logs (`04_nixos_recon.log` and `07_deep_cli_scan.log`) is essential to build your final NixOS configurations. The deep scan successfully identified numerous Cargo-installed CLI tools like `atuin`, `starship`, `zellij`, `yazi`, etc.
2. **Build `configuration.nix`:** Use the `results/generated_configuration.nix` as a starting template. Cross-reference with the logs to add any missing system-wide packages and services.
3. **Build `home.nix`:** A new draft, `results/generated_home.nix`, has been created. This file is a comprehensive template for using Home Manager to declaratively build your entire terminal environment, including Zsh, Oh My Zsh, Starship, and all the CLI tools discovered in the deep scan.
4. **Backup of Local Application Data (See `06_application_data_notes.md`):** Ensure critical items like GPG/SSH keys are securely backed up.
5. **Fireship Desktop App:** The "fireship" application was not found via standard package managers or `.desktop` files. It is likely an AppImage. You will need to re-download this manually on your new NixOS system.
Once these review steps are complete, you will be ready to begin the NixOS installation.

View File

@@ -0,0 +1,18 @@
# Application Data Notes for NixOS Migration
This document outlines considerations for application-specific data that may need special handling during the NixOS migration.
## Important Considerations:
* **GPG Keys:** Your GnuPG keys are critical for cryptographic operations (e.g., signing Git commits, encrypting files). These are typically stored in `~/.gnupg/`. It is paramount to ensure these keys are backed up securely.
* **Action:** Verify that your `~/.gnupg/` directory is either included in a secure backup separate from `/data` (e.g., an encrypted archive) or that you have a recovery method (e.g., revoked subkeys, passphrase-protected master key backup) that is outside of this system.
* **SSH Keys:** Your SSH keys (typically in `~/.ssh/`) are used for secure remote access (e.g., to Gitea, other servers). While you've indicated dotfiles will be managed, SSH private keys should *never* be committed directly to a public repository.
* **Action:** Confirm that you have a secure backup of your `~/.ssh/` directory, especially your private keys, in a location separate from `/data` (e.g., an encrypted USB stick, a secure password manager). These keys should be restored to the new NixOS system as part of your `home-manager` setup or manually.
## Exclusions (No Action Required):
* **Thunderbird Email:** You have confirmed that Thunderbird uses Gmail in the cloud. No local migration of email data is required.
* **Google Chrome / Mozilla Firefox Profiles:** You have confirmed that browser data (bookmarks, passwords, extensions) are synced via your accounts. No local migration of browser profiles is required.
This document serves as a reminder to address these specific local application data points when configuring your new NixOS environment.

3102
logs/01_system_recon.log Normal file

File diff suppressed because it is too large Load Diff

51261
logs/03_find_and_sync_data.log Normal file

File diff suppressed because one or more lines are too long

3145
logs/04_nixos_recon.log Normal file

File diff suppressed because it is too large Load Diff

808
logs/05_hardware_scan.log Normal file
View File

@@ -0,0 +1,808 @@
sam-4screen-desktop
description: Desktop Computer
product: Precision Tower 3620 (06B7)
vendor: Dell Inc.
serial: GJD72K2
width: 64 bits
capabilities: smbios-3.0.0 dmi-3.0.0 smp vsyscall32
configuration: boot=normal chassis=desktop family=Precision sku=06B7 uuid=4c4c4544-004a-4410-8037-c7c04f324b32
*-core
description: Motherboard
product: 0MWYPT
vendor: Dell Inc.
physical id: 0
version: A01
serial: /GJD72K2/CNFCW0077E00CW/
*-firmware
description: BIOS
vendor: Dell Inc.
physical id: 0
version: 2.30.0
date: 04/08/2024
size: 64KiB
capacity: 16MiB
capabilities: pci pnp upgrade shadowing cdboot bootselect edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer acpi usb biosbootspecification netboot uefi
*-memory
description: System Memory
physical id: 9
slot: System board or motherboard
size: 64GiB
*-bank:0
description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 2133 MHz (0.5 ns)
product: M378A2K43BB1-CPB
vendor: Samsung
physical id: 0
serial: 9722AFF3
slot: DIMM1
size: 16GiB
width: 64 bits
clock: 2133MHz (0.5ns)
*-bank:1
description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 2133 MHz (0.5 ns)
product: M378A2K43BB1-CPB
vendor: Samsung
physical id: 1
serial: 9722B079
slot: DIMM2
size: 16GiB
width: 64 bits
clock: 2133MHz (0.5ns)
*-bank:2
description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 2133 MHz (0.5 ns)
product: M378A2K43BB1-CPB
vendor: Samsung
physical id: 2
serial: 9722B071
slot: DIMM3
size: 16GiB
width: 64 bits
clock: 2133MHz (0.5ns)
*-bank:3
description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 2133 MHz (0.5 ns)
product: M378A2K43BB1-CPB
vendor: Samsung
physical id: 3
serial: 9722B070
slot: DIMM4
size: 16GiB
width: 64 bits
clock: 2133MHz (0.5ns)
*-cache:0
description: L1 cache
physical id: f
slot: L1 Cache
size: 256KiB
capacity: 256KiB
capabilities: synchronous internal write-back unified
configuration: level=1
*-cache:1
description: L2 cache
physical id: 10
slot: L2 Cache
size: 1MiB
capacity: 1MiB
capabilities: synchronous internal write-back unified
configuration: level=2
*-cache:2
description: L3 cache
physical id: 11
slot: L3 Cache
size: 8MiB
capacity: 8MiB
capabilities: synchronous internal write-back unified
configuration: level=3
*-cpu
description: CPU
product: Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
vendor: Intel Corp.
physical id: 12
bus info: cpu@0
version: 6.158.9
serial: To Be Filled By O.E.M.
slot: U3E1
size: 4399MHz
capacity: 4500MHz
width: 64 bits
clock: 100MHz
capabilities: lm fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp x86-64 constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi md_clear flush_l1d arch_capabilities cpufreq
configuration: cores=4 enabledcores=4 microcode=248 threads=8
*-pci
description: Host bridge
product: Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
vendor: Intel Corporation
physical id: 100
bus info: pci@0000:00:00.0
version: 05
width: 32 bits
clock: 33MHz
configuration: driver=skl_uncore
resources: irq:0
*-pci:0
description: PCI bridge
product: 6th-10th Gen Core Processor PCIe Controller (x16)
vendor: Intel Corporation
physical id: 1
bus info: pci@0000:00:01.0
version: 05
width: 32 bits
clock: 33MHz
capabilities: pci pm msi pciexpress normal_decode bus_master cap_list
configuration: driver=pcieport
resources: irq:121 ioport:e000(size=4096) memory:ee000000-ef0fffff ioport:d0000000(size=301989888)
*-display
description: VGA compatible controller
product: GP107GL [Quadro P620]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
logical name: /dev/fb0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller bus_master cap_list rom fb
configuration: depth=32 driver=nvidia latency=0 resolution=1680,1050
resources: irq:145 memory:ee000000-eeffffff memory:d0000000-dfffffff memory:e0000000-e1ffffff ioport:e000(size=128) memory:c0000-dffff
*-multimedia
description: Audio device
product: GP107GL High Definition Audio Controller
vendor: NVIDIA Corporation
physical id: 0.1
bus info: pci@0000:01:00.1
logical name: card0
logical name: /dev/snd/controlC0
logical name: /dev/snd/hwC0D0
logical name: /dev/snd/pcmC0D3p
logical name: /dev/snd/pcmC0D7p
logical name: /dev/snd/pcmC0D8p
logical name: /dev/snd/pcmC0D9p
version: a1
width: 32 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list
configuration: driver=snd_hda_intel latency=0
resources: irq:17 memory:ef080000-ef083fff
*-input:0
product: HDA NVidia HDMI/DP,pcm=3
physical id: 0
logical name: input18
logical name: /dev/input/event14
*-input:1
product: HDA NVidia HDMI/DP,pcm=7
physical id: 1
logical name: input19
logical name: /dev/input/event15
*-input:2
product: HDA NVidia HDMI/DP,pcm=8
physical id: 2
logical name: input20
logical name: /dev/input/event16
*-input:3
product: HDA NVidia HDMI/DP,pcm=9
physical id: 3
logical name: input21
logical name: /dev/input/event17
*-display
description: VGA compatible controller
product: HD Graphics 630
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 04
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list
configuration: driver=i915 latency=0
resources: irq:144 memory:ed000000-edffffff memory:c0000000-cfffffff ioport:f000(size=64)
*-usb
description: USB controller
product: 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller
vendor: Intel Corporation
physical id: 14
bus info: pci@0000:00:14.0
version: 31
width: 64 bits
clock: 33MHz
capabilities: pm msi xhci bus_master cap_list
configuration: driver=xhci_hcd latency=0
resources: irq:124 memory:ef330000-ef33ffff
*-usbhost:0
product: xHCI Host Controller
vendor: Linux 6.14.0-37-generic xhci-hcd
physical id: 0
bus info: usb@1
logical name: usb1
version: 6.14
capabilities: usb-2.00
configuration: driver=hub slots=16 speed=480Mbit/s
*-usb:0
description: Mass storage device
product: Cypress AT2LP
vendor: Cypress Semiconductor Corp.
physical id: 1
bus info: usb@1:1
logical name: scsi5
version: 2.40
serial: DEF10FD70D1E
capabilities: usb-2.00 scsi emulated scsi-host
configuration: driver=ums-cypress maxpower=2mA speed=480Mbit/s
*-disk
description: SCSI Disk
product: 00JB-22KFA0
vendor: WDC WD32
physical id: 0.0.0
bus info: scsi@5:0.0.0
logical name: /dev/sdc
version: 0000
serial: W -D
size: 298GiB (320GB)
capabilities: partitioned partitioned:dos
configuration: logicalsectorsize=512 sectorsize=512 signature=100b218d
*-volume
description: EXT4 volume
vendor: Linux
physical id: 1
bus info: scsi@5:0.0.0,1
logical name: /dev/sdc1
logical name: /media/sam/Integral300
version: 1.0
serial: 27febd74-20aa-4a3a-92c1-6fdd1ad7e88e
size: 298GiB
capacity: 298GiB
capabilities: primary journaled extended_attributes large_files huge_files dir_nlink recover 64bit extents ext4 ext2 initialized
configuration: created=2026-01-27 19:20:40 filesystem=ext4 label=Integral300 lastmountpoint=/media/sam/Integral300 modified=2026-01-28 12:50:32 mount.fstype=ext4 mount.options=rw,nosuid,nodev,relatime,errors=remount-ro mounted=2026-01-27 19:29:38 state=mounted
*-usb:1
description: Mass storage device
product: WD5000BEVT-22ZAT
vendor: WDC
physical id: 2
bus info: usb@1:2
logical name: scsi4
version: 3.00
serial: 0010101E40000000
capabilities: usb-2.00 scsi emulated scsi-host
configuration: driver=usb-storage maxpower=2mA speed=480Mbit/s
*-disk
description: SCSI Disk
product: WD5000BEVT-22ZAT
vendor: WDC
physical id: 0.0.0
bus info: scsi@4:0.0.0
logical name: /dev/sdb
version: 3.00
serial: WD-WXNY08ND2684
size: 465GiB (500GB)
capabilities: partitioned partitioned:dos
configuration: ansiversion=4 logicalsectorsize=512 sectorsize=512 signature=1ac8f43c
*-volume
description: EXT4 volume
vendor: Linux
physical id: 1
bus info: scsi@4:0.0.0,1
logical name: /dev/sdb1
version: 1.0
serial: 4f9c4bd5-fea5-408f-9370-731fc095da3f
size: 465GiB
capacity: 465GiB
capabilities: primary journaled extended_attributes large_files huge_files dir_nlink 64bit extents ext4 ext2 initialized
configuration: created=2026-01-27 18:46:14 filesystem=ext4 label=TempBackup modified=2026-01-27 18:46:39 state=clean
*-usb:2
description: Keyboard
product: 2.4G Mouse Consumer Control
vendor: SHARKOON Technologies GmbH
physical id: 7
bus info: usb@1:7
logical name: input10
logical name: /dev/input/event7
logical name: input6
logical name: /dev/input/event3
logical name: input6::capslock
logical name: input6::compose
logical name: input6::kana
logical name: input6::numlock
logical name: input6::scrolllock
logical name: input7
logical name: /dev/input/event4
logical name: input8
logical name: /dev/input/event5
logical name: /dev/input/mouse0
logical name: input9
logical name: /dev/input/event6
version: 2.00
capabilities: usb-1.10 usb
configuration: driver=usbhid maxpower=100mA speed=12Mbit/s
*-usb:3
description: Keyboard
product: umux.com X.Tips V4s Keyboard
vendor: umux.com
physical id: 8
bus info: usb@1:8
logical name: input12
logical name: /dev/input/event8
logical name: input12::capslock
logical name: input12::compose
logical name: input12::kana
logical name: input12::numlock
logical name: input12::scrolllock
logical name: input13
logical name: /dev/input/event9
logical name: /dev/input/mouse1
logical name: input14
logical name: /dev/input/event10
logical name: input15
logical name: /dev/input/event11
logical name: input16
logical name: /dev/input/event12
logical name: input16::capslock
logical name: input16::compose
logical name: input16::kana
logical name: input16::numlock
logical name: input16::scrolllock
version: 0.01
serial: vial:f64c2b3c
capabilities: usb-2.00 usb
configuration: driver=usbhid maxpower=500mA speed=12Mbit/s
*-usb:4
description: Mass storage device
product: USB 2.0 SATA BRIDGE
vendor: Super Top
physical id: a
bus info: usb@1:a
version: 1.40
serial: MA6116VE4018
capabilities: usb-2.00 scsi
configuration: driver=usb-storage maxpower=2mA speed=480Mbit/s
*-usbhost:1
product: xHCI Host Controller
vendor: Linux 6.14.0-37-generic xhci-hcd
physical id: 1
bus info: usb@2
logical name: usb2
version: 6.14
capabilities: usb-3.00
configuration: driver=hub slots=10 speed=5000Mbit/s
*-generic
description: Signal processing controller
product: 100 Series/C230 Series Chipset Family Thermal Subsystem
vendor: Intel Corporation
physical id: 14.2
bus info: pci@0000:00:14.2
version: 31
width: 64 bits
clock: 33MHz
capabilities: pm msi cap_list
configuration: driver=intel_pch_thermal latency=0
resources: irq:18 memory:ef34e000-ef34efff
*-communication
description: Communication controller
product: 100 Series/C230 Series Chipset Family MEI Controller #1
vendor: Intel Corporation
physical id: 16
bus info: pci@0000:00:16.0
version: 31
width: 64 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list
configuration: driver=mei_me latency=0
resources: irq:133 memory:ef34d000-ef34dfff
*-sata
description: SATA controller
product: Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode]
vendor: Intel Corporation
physical id: 17
bus info: pci@0000:00:17.0
logical name: scsi1
logical name: scsi2
version: 31
width: 32 bits
clock: 66MHz
capabilities: sata msi pm ahci_1.0 bus_master cap_list emulated
configuration: driver=ahci latency=0
resources: irq:132 memory:ef348000-ef349fff memory:ef34c000-ef34c0ff ioport:f090(size=8) ioport:f080(size=4) ioport:f060(size=32) memory:ef34b000-ef34b7ff
*-disk
description: ATA Disk
product: Patriot Burst El
physical id: 0
bus info: scsi@1:0.0.0
logical name: /dev/sda
version: 9A0
serial: PBEABBB23090814043
size: 223GiB (240GB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=5 guid=d72b17f4-a649-40ca-935d-cae1eeb1c85d logicalsectorsize=512 sectorsize=512
*-volume:0
description: reserved partition
vendor: Windows
physical id: 1
bus info: scsi@1:0.0.0,1
logical name: /dev/sda1
serial: 38c6b6b3-fdb2-4d43-ba15-9c275fbec985
capacity: 15MiB
capabilities: nofs
configuration: name=Microsoft reserved partition
*-volume:1
description: Windows NTFS volume
vendor: Windows
physical id: 2
bus info: scsi@1:0.0.0,2
logical name: /dev/sda2
version: 3.1
serial: b6da3c24-6685-8944-8d4a-555b3dd3a023
size: 223GiB
capacity: 223GiB
capabilities: ntfs initialized
configuration: clustersize=4096 created=2024-06-16 15:40:40 filesystem=ntfs label=Back Up name=Basic data partition state=clean
*-cdrom
description: DVD-RAM writer
product: DVD+-RW GHB0N
vendor: HL-DT-ST
physical id: 1
bus info: scsi@2:0.0.0
logical name: /dev/cdrom
logical name: /dev/sr0
version: A1C0
capabilities: removable audio cd-r cd-rw dvd dvd-r dvd-ram
configuration: ansiversion=5 status=nodisc
*-pci:1
description: PCI bridge
product: 100 Series/C230 Series Chipset Family PCI Express Root Port #17
vendor: Intel Corporation
physical id: 1b
bus info: pci@0000:00:1b.0
version: f1
width: 32 bits
clock: 33MHz
capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
configuration: driver=pcieport
resources: irq:122 ioport:d000(size=4096) memory:ef200000-ef2fffff
*-nvme
description: NVMe device
product: PM951 NVMe SAMSUNG 1024GB
vendor: Samsung Electronics Co Ltd
physical id: 0
bus info: pci@0000:02:00.0
logical name: /dev/nvme0
version: BXV77D0Q
serial: S2FZNXAH301424
width: 64 bits
clock: 33MHz
capabilities: nvme pm msi pciexpress msix nvm_express bus_master cap_list
configuration: driver=nvme latency=0 nqn=nqn.2014.08.org.nvmexpress:144d144d S2FZNXAH301424PM951 NVMe SAMSUNG 1024GB state=live
resources: irq:16 memory:ef200000-ef203fff ioport:d000(size=256)
*-namespace:0
description: NVMe disk
physical id: 0
logical name: hwmon1
*-namespace:1
description: NVMe disk
physical id: 2
logical name: /dev/ng0n1
*-namespace:2
description: NVMe disk
physical id: 1
bus info: nvme@0:1
logical name: /dev/nvme0n1
size: 953GiB (1024GB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: guid=3c752166-f3f5-4ee6-b50a-b240d0fd272d logicalsectorsize=512 sectorsize=512 wwid=nvme.144d-2020202020205332465a4e584148333031343234-504d393531204e564d652053414d53554e4720313032344742-00000001
*-volume:0
description: Windows FAT volume
vendor: MSDOS5.0
physical id: 1
bus info: nvme@0:1,1
logical name: /dev/nvme0n1p1
logical name: /boot/efi
version: FAT32
serial: 94cc-9da4
size: 95MiB
capacity: 99MiB
capabilities: boot nomount fat initialized
configuration: FATs=2 filesystem=fat mount.fstype=vfat mount.options=rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro name=EFI system partition state=mounted
*-volume:1
description: reserved partition
vendor: Windows
physical id: 2
bus info: nvme@0:1,2
logical name: /dev/nvme0n1p2
serial: c548d0ae-4d8e-49ba-a9e8-e33d6b9ec973
capacity: 15MiB
capabilities: nofs nomount
configuration: name=Microsoft reserved partition
*-volume:2
description: Windows NTFS volume
vendor: Windows
physical id: 3
bus info: nvme@0:1,3
logical name: /dev/nvme0n1p3
logical name: /media/sam/8294CD2994CD2111
version: 3.1
serial: 2ea3692d-e9bc-c246-b7e4-28159a0c8020
size: 503GiB
capacity: 503GiB
capabilities: ntfs initialized
configuration: clustersize=4096 created=2024-05-18 15:25:31 filesystem=ntfs mount.fstype=fuseblk mount.options=rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096 name=Basic data partition state=mounted
*-volume:3
description: Windows NTFS volume
vendor: Windows
physical id: 4
bus info: nvme@0:1,4
logical name: /dev/nvme0n1p4
version: 3.1
serial: 1aa2-eef1
size: 522MiB
capacity: 529MiB
capabilities: boot precious nomount ntfs initialized
configuration: clustersize=4096 created=2024-05-17 21:30:36 filesystem=ntfs state=clean
*-volume:4
description: EXT4 volume
vendor: Linux
physical id: 5
bus info: nvme@0:1,5
logical name: /dev/nvme0n1p5
logical name: /
version: 1.0
serial: 4e99904c-ce6f-4c3c-898a-e29cfc373489
size: 449GiB
capabilities: journaled extended_attributes large_files huge_files dir_nlink recover 64bit extents ext4 ext2 initialized
configuration: created=2025-06-12 21:59:53 filesystem=ext4 lastmountpoint=/ modified=2026-01-28 12:27:04 mount.fstype=ext4 mount.options=rw,relatime mounted=2026-01-26 18:06:38 state=mounted
*-pci:2
description: PCI bridge
product: 100 Series/C230 Series Chipset Family PCI Express Root Port #1
vendor: Intel Corporation
physical id: 1c
bus info: pci@0000:00:1c.0
version: f1
width: 32 bits
clock: 33MHz
capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
configuration: driver=pcieport
resources: irq:123 memory:ef100000-ef1fffff
*-pci
description: PCI bridge
product: XIO2001 PCI Express-to-PCI Bridge
vendor: Texas Instruments
physical id: 0
bus info: pci@0000:03:00.0
version: 00
width: 32 bits
clock: 33MHz
capabilities: pci pm msi pciexpress normal_decode bus_master cap_list
resources: memory:ef100000-ef1fffff
*-network DISABLED
description: Wireless interface
product: RT3062 Wireless 802.11n 2T/2R
vendor: Ralink corp.
physical id: 2
bus info: pci@0000:04:02.0
logical name: wlp4s2
version: 00
serial: 80:1f:02:4f:18:ae
width: 32 bits
clock: 33MHz
capabilities: pm bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=rt2800pci driverversion=6.14.0-37-generic firmware=0.40 latency=32 link=no maxlatency=4 mingnt=2 multicast=yes wireless=IEEE 802.11
resources: irq:18 memory:ef100000-ef10ffff
*-isa
description: ISA bridge
product: C236 Chipset LPC/eSPI Controller
vendor: Intel Corporation
physical id: 1f
bus info: pci@0000:00:1f.0
version: 31
width: 32 bits
clock: 33MHz
capabilities: isa bus_master
configuration: latency=0
*-pnp00:00
product: PnP device PNP0c02
physical id: 0
capabilities: pnp
configuration: driver=system
*-pnp00:01
product: PnP device PNP0501
physical id: 1
capabilities: pnp
configuration: driver=serial
*-pnp00:02
product: PnP device PNP0303
physical id: 2
capabilities: pnp
configuration: driver=i8042 kbd
*-pnp00:03
product: PnP device PNP0f03
physical id: 3
capabilities: pnp
configuration: driver=i8042 aux
*-pnp00:04
product: PnP device PNP0c02
physical id: 4
capabilities: pnp
configuration: driver=system
*-pnp00:05
product: PnP device PNP0c02
physical id: 5
capabilities: pnp
configuration: driver=system
*-pnp00:06
product: PnP device PNP0b00
physical id: 6
capabilities: pnp
configuration: driver=rtc_cmos
*-pnp00:07
product: PnP device PNP0c02
physical id: 7
capabilities: pnp
configuration: driver=system
*-pnp00:08
product: PnP device PNP0c02
physical id: 8
capabilities: pnp
configuration: driver=system
*-pnp00:09
product: PnP device PNP0c02
physical id: 9
capabilities: pnp
configuration: driver=system
*-pnp00:0a
product: PnP device PNP0c02
physical id: a
capabilities: pnp
configuration: driver=system
*-pnp00:0b
product: PnP device PNP0c31
physical id: b
capabilities: pnp
configuration: driver=tpm_tis
*-memory UNCLAIMED
description: Memory controller
product: 100 Series/C230 Series Chipset Family Power Management Controller
vendor: Intel Corporation
physical id: 1f.2
bus info: pci@0000:00:1f.2
version: 31
width: 32 bits
clock: 33MHz (30.3ns)
capabilities: bus_master
configuration: latency=0
resources: memory:ef344000-ef347fff
*-multimedia
description: Audio device
product: 100 Series/C230 Series Chipset Family HD Audio Controller
vendor: Intel Corporation
physical id: 1f.3
bus info: pci@0000:00:1f.3
logical name: card1
logical name: /dev/snd/controlC1
logical name: /dev/snd/hwC1D0
logical name: /dev/snd/hwC1D2
logical name: /dev/snd/pcmC1D0c
logical name: /dev/snd/pcmC1D0p
logical name: /dev/snd/pcmC1D3p
logical name: /dev/snd/pcmC1D7p
logical name: /dev/snd/pcmC1D8p
version: 31
width: 64 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list
configuration: driver=snd_hda_intel latency=32
resources: irq:146 memory:ef340000-ef343fff memory:ef320000-ef32ffff
*-input:0
product: HDA Intel PCH Rear Mic
physical id: 0
logical name: input23
logical name: /dev/input/event19
*-input:1
product: HDA Intel PCH Front Mic
physical id: 1
logical name: input24
logical name: /dev/input/event20
*-input:2
product: HDA Intel PCH Line Out
physical id: 2
logical name: input25
logical name: /dev/input/event21
*-input:3
product: HDA Intel PCH Front Headphone
physical id: 3
logical name: input26
logical name: /dev/input/event22
*-input:4
product: HDA Intel PCH HDMI/DP,pcm=3
physical id: 4
logical name: input27
logical name: /dev/input/event23
*-input:5
product: HDA Intel PCH HDMI/DP,pcm=7
physical id: 5
logical name: input28
logical name: /dev/input/event24
*-input:6
product: HDA Intel PCH HDMI/DP,pcm=8
physical id: 6
logical name: input29
logical name: /dev/input/event25
*-serial
description: SMBus
product: 100 Series/C230 Series Chipset Family SMBus
vendor: Intel Corporation
physical id: 1f.4
bus info: pci@0000:00:1f.4
version: 31
width: 64 bits
clock: 33MHz
configuration: driver=i801_smbus latency=0
resources: irq:16 memory:ef34a000-ef34a0ff ioport:f040(size=32)
*-network
description: Ethernet interface
product: Ethernet Connection (2) I219-LM
vendor: Intel Corporation
physical id: 1f.6
bus info: pci@0000:00:1f.6
logical name: enp0s31f6
version: 31
serial: d8:9e:f3:07:bf:05
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=6.14.0-37-generic duplex=full firmware=0.8-4 ip=192.168.20.27 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
resources: irq:143 memory:ef300000-ef31ffff
*-scsi
physical id: 1
bus info: usb@1:10
logical name: scsi7
capabilities: emulated scsi-host
configuration: driver=usb-storage
*-disk
description: SCSI Disk
product: HTS541616J9SA00
vendor: Hitachi
physical id: 0.0.0
bus info: scsi@7:0.0.0
logical name: /dev/sde
size: 149GiB (160GB)
capabilities: partitioned partitioned:dos
configuration: logicalsectorsize=512 sectorsize=512 signature=13991399
*-volume
description: EXT4 volume
vendor: Linux
physical id: 1
bus info: scsi@7:0.0.0,1
logical name: /dev/sde1
logical name: /media/sam/XPSystemDrive
version: 1.0
serial: 82c994f1-9adb-49e4-ba1e-5b6e5ccbd49b
size: 149GiB
capacity: 149GiB
capabilities: primary journaled extended_attributes large_files huge_files dir_nlink recover 64bit extents ext4 ext2 initialized
configuration: created=2026-01-27 20:36:08 filesystem=ext4 label=XPSystemDrive modified=2026-01-27 21:09:30 mount.fstype=ext4 mount.options=rw,nosuid,nodev,relatime,errors=remount-ro mounted=2026-01-27 21:09:30 state=mounted
*-input:0
product: Sleep Button
physical id: 1
logical name: input0
logical name: /dev/input/event0
capabilities: platform
*-input:1
product: Power Button
physical id: 2
logical name: input1
logical name: /dev/input/event1
capabilities: platform
*-input:2
product: Dell WMI hotkeys
physical id: 3
logical name: input17
logical name: /dev/input/event13
capabilities: platform
*-input:3
product: Power Button
physical id: 4
logical name: input2
logical name: /dev/input/event2
capabilities: platform
*-input:4
product: Video Bus
physical id: 5
logical name: input22
logical name: /dev/input/event18
capabilities: platform

144
logs/06_netplan_config.log Normal file
View File

@@ -0,0 +1,144 @@
--- Netplan Configuration ---
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml:network:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: version: 2
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: wifis:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: renderer: NetworkManager
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: match:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: name: "wlp4s2"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: addresses:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: - "192.168.20.27/24"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: nameservers:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: addresses:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: - 192.168.20.35
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: - 192.168.20.13
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: dhcp6: true
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: access-points:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: "Aussie Broadband 8729":
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: auth:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: key-management: "psk"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: password: "Ffdfmunfca"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: networkmanager:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: uuid: "31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: name: "Aussie Broadband 8729"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: passthrough:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: connection.timestamp: "1766738969"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: ipv4.address1: "192.168.20.27/24,192.168.20.1"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: ipv4.method: "manual"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: ipv6.addr-gen-mode: "default"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: ipv6.ip6-privacy: "-1"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: proxy._: ""
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: networkmanager:
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: uuid: "31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4"
/etc/netplan/90-NM-31ac1c6a-4de8-4a3e-929f-aaec5cd53cf4.yaml: name: "Aussie Broadband 8729"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml:network:
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: version: 2
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: ethernets:
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765:
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: renderer: NetworkManager
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: match:
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: name: "enp0s31f6"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: addresses:
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: - "192.168.20.27/24"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: nameservers:
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: addresses:
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: - 192.168.20.35
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: - 192.168.20.13
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: dhcp6: true
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: mtu: 1500
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: wakeonlan: true
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: networkmanager:
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: uuid: "afb4bbc6-fac5-31f5-8cdc-a466b8b74765"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: name: "Wired connection 1"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: passthrough:
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: connection.autoconnect: "false"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: connection.autoconnect-priority: "-999"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: connection.timestamp: "1766741824"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: ethernet.wake-on-lan: "64"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: ipv4.address1: "192.168.20.27/24,192.168.20.1"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: ipv4.method: "manual"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: ipv6.addr-gen-mode: "default"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: ipv6.ip6-privacy: "-1"
/etc/netplan/90-NM-afb4bbc6-fac5-31f5-8cdc-a466b8b74765.yaml: proxy._: ""
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml:network:
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: version: 2
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: wifis:
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55:
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: renderer: NetworkManager
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: match:
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: name: "wlp4s2"
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: dhcp4: true
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: dhcp6: true
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: access-points:
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: "NetComm Wireless":
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: auth:
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: key-management: "psk"
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: password: "Ffdfmunfca"
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: networkmanager:
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: uuid: "ecfc8be2-ba84-46e9-89c6-75bcb35cba55"
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: name: "NetComm Wireless"
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: passthrough:
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: connection.timestamp: "1769032320"
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: wifi-security.auth-alg: "open"
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: ipv6.addr-gen-mode: "default"
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: ipv6.ip6-privacy: "-1"
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: proxy._: ""
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: networkmanager:
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: uuid: "ecfc8be2-ba84-46e9-89c6-75bcb35cba55"
/etc/netplan/90-NM-ecfc8be2-ba84-46e9-89c6-75bcb35cba55.yaml: name: "NetComm Wireless"
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml:network:
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: version: 2
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: wifis:
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: NM-bf81f458-5456-4645-b6c4-0662760765ed:
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: renderer: NetworkManager
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: match:
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: name: "wlp4s2"
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: dhcp4: true
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: dhcp6: true
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: access-points:
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: "Sams Pixel 8a":
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: auth:
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: key-management: "psk"
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: password: "sjhf3859"
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: networkmanager:
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: uuid: "bf81f458-5456-4645-b6c4-0662760765ed"
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: name: "Sams Pixel 8a"
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: passthrough:
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: wifi-security.auth-alg: "open"
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: ipv6.addr-gen-mode: "default"
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: ipv6.ip6-privacy: "-1"
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: proxy._: ""
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: networkmanager:
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: uuid: "bf81f458-5456-4645-b6c4-0662760765ed"
/etc/netplan/90-NM-bf81f458-5456-4645-b6c4-0662760765ed.yaml: name: "Sams Pixel 8a"
\n--- Current IP Configuration ---
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether d8:9e:f3:07:bf:05 brd ff:ff:ff:ff:ff:ff
inet 192.168.20.27/24 brd 192.168.20.255 scope global noprefixroute enp0s31f6
valid_lft forever preferred_lft forever
inet6 2403:5804:f1cf:0:1607:4771:2ca5:68a0/64 scope global temporary dynamic
valid_lft 7201sec preferred_lft 3600sec
inet6 2403:5804:f1cf:0:cfcb:7b68:499:a6b3/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 7201sec preferred_lft 3600sec
inet6 fd3a:a6b:b9f:0:abae:763c:7dd7:162/64 scope global temporary dynamic
valid_lft 584685sec preferred_lft 66095sec
inet6 fd3a:a6b:b9f:0:62bf:88cc:df17:c0ff/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2592000sec preferred_lft 604800sec
inet6 fe80::ab76:a154:b7ae:4825/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlp4s2: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 80:1f:02:4f:18:ae brd ff:ff:ff:ff:ff:ff
4: tailscale0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 100.90.186.31/32 scope global tailscale0
valid_lft forever preferred_lft forever
inet6 fd7a:115c:a1e0::d101:ba97/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::6ddb:5b7c:f580:5ddc/64 scope link stable-privacy
valid_lft forever preferred_lft forever

3901
logs/07_deep_cli_scan.log Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,21 @@
/home/sam/Desktop
/home/sam/snap/code
/home/sam/Arduino
/home/sam/Music
/home/sam/.arduino15/packages/arduino
/home/sam/.arduino15/packages/esp32
/home/sam/Documents
/home/sam/Pictures
/home/sam/.config/Code
/home/sam/.cache/arduino
/home/sam/Videos
/home/sam/.rustup/downloads
/home/sam/dotfiles
/home/sam/Downloads
8.0K /home/sam/Desktop
20M /home/sam/Documents
1.3G /home/sam/Downloads
1.9M /home/sam/Pictures
4.0K /home/sam/Music
31M /home/sam/Videos
96M /home/sam/Arduino

117
results/configuration.nix Normal file
View File

@@ -0,0 +1,117 @@
# NixOS Configuration: /results/configuration.nix
# This file configures the core NixOS system.
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
# This file will be generated by the NixOS installer.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# ---
# NETWORKING
# ---
networking.hostName = "nixos-desktop";
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Australia/Sydney";
# ---
# USER ACCOUNTS
# ---
users.users.sam = {
isNormalUser = true;
description = "Sam";
extraGroups = [ "networkmanager" "wheel" ]; # "wheel" allows sudo
};
# ---
# GRAPHICS & DESKTOP ENVIRONMENT
# ---
services.xserver = {
enable = true;
# Enable KDE Plasma 5 Desktop Environment
desktopManager.plasma5.enable = true;
# Enable SDDM as the display manager
displayManager.sddm.enable = true;
# Use the proprietary NVIDIA drivers
videoDrivers = [ "nvidia" ];
};
# Enable OpenGL and Vulkan support
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
# Configure NVIDIA drivers for Hybrid Graphics (Intel + NVIDIA)
hardware.nvidia = {
modesetting.enable = true;
# Use the stable proprietary driver package
package = config.boot.kernelPackages.nvidiaPackages.stable;
# Configure PRIME Render Offload
prime = {
sync.enable = true;
# Set the PCI bus IDs for your GPUs (from lspci output)
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
};
# ---
# SOFTWARE PACKAGES
# ---
environment.systemPackages = with pkgs; [
# --- Tier 1: Critical Applications & Services ---
firefox thunderbird kitty neovim nushell vscode telegram-desktop
# --- Tier 2: Development & CLI Tools ---
git rustc cargo nodejs python3 gcc gnumake btop eza bat fzf ripgrep zoxide
# --- Tier 3: Desktop & GUI Applications ---
libreoffice flameshot vlc spotify timeshift
];
# ---
# SERVICES
# ---
# Enable sound with PipeWire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Enable CUPS for printing.
services.printing.enable = true;
# ---
# DISK MOUNTS
# ---
fileSystems."/mnt/ubuntu_storage_3TB" = {
device = "/dev/disk/by-uuid/037a542c-6aa9-4b1f-ab2f-4b6922ab371f";
fsType = "ext4";
};
fileSystems."/mnt/windows-storage" = {
device = "/dev/disk/by-uuid/063E316A3E315441";
fsType = "ntfs-3g";
options = [ "rw" "uid=1000" "gid=100" "umask=007" ];
};
# Allow installation of unfree packages (like NVIDIA drivers)
nixpkgs.config.allowUnfree = true;
# Set the system state version.
system.stateVersion = "24.05";
}

View File

@@ -0,0 +1,145 @@
# NixOS Configuration Template
# Path: results/configuration.nix.template
#
# This is a starting point for your new NixOS configuration.
# Review and edit this file carefully.
# You will use this file during the NixOS installation.
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
# Path to this file will be /mnt/etc/nixos/hardware-configuration.nix
# after the installation script generates it.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# ---
# NETWORKING ---
# ---
networking.hostName = "nixos-desktop"; # Define your hostname.
networking.networkmanager.enable = true;
# networking.wireless.enable = true; # Uncomment for WiFi support.
# Set your time zone.
time.timeZone = "Australia/Sydney"; # CHANGE THIS to your time zone, e.g. "Europe/Berlin"
# ---
# USER ACCOUNTS ---
# ---
users.users.sam = {
isNormalUser = true;
description = "Sam";
extraGroups = [ "networkmanager" "wheel" "docker" ]; # "wheel" allows sudo
packages = with pkgs;
[ # You can install user-specific packages here, but it's often better
# to manage them system-wide below unless you have multiple users.
];
};
# ---
# SOFTWARE PACKAGES ---
# ---
# List packages you want to install system-wide.
# Refer to docs/02_software_migration_plan.md
environment.systemPackages = with pkgs;
[ # ---
# Essentials ---
# ---
git
wget
curl
# ---
# Desktop & GUI ---
# ---
firefox
thunderbird
libreoffice
flameshot
# ---
# Terminal & CLI Tools ---
# ---
kitty
neovim
nushell
btop
eza
bat
fzf
# ---
# Development ---
# ---
gcc
gnumake
nodejs # Consider specifying a version, e.g., nodejs-20_x
rustc
cargo
python3
];
# ---
# SERVICES & VIRTUALIZATION ---
# ---
# Enable the Docker daemon.
virtualisation.docker.enable = true;
# Enable sound with PipeWire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment the following.
#jack.enable = true;
};
# Enable CUPS to print documents.
services.printing.enable = true;
# ---
# DESKTOP ENVIRONMENT ---
# ---
# Enable the GNOME Desktop Environment.
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
# ---
# DISK MOUNTS ---
# ---
# This is where we will mount your existing data drives.
# The device paths (e.g., "/dev/disk/by-uuid/...") must be correct.
# Use the output of `lsblk -f` on the live USB to get the right UUIDs.
fileSystems."/mnt/ubuntu_storage_3TB" = {
device = "/dev/disk/by-uuid/037a542c-6aa9-4b1f-ab2f-4b6922ab371f"; # This is sdd1 (ubuntu_storage_3)
fsType = "ext4";
};
fileSystems."/mnt/windows-storage" = { # Renaming `/mnt/storage` to be clearer
device = "/dev/disk/by-uuid/063E316A3E315441"; # This is sdb2
fsType = "ntfs-3g";
options = [ "rw" "uid=1000" "gid=100" "umask=007" ]; # Makes files user-writable
};
# Add more entries here for other disks like sdc2 if needed.
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# System state version.
system.stateVersion = "24.05"; # Or whatever version you install.
}

View File

@@ -0,0 +1,144 @@
# NixOS Configuration - AUTO-GENERATED DRAFT
# Path: results/generated_configuration.nix
#
# This file was auto-generated on $(date) based on system reconnaissance.
# !!! IMPORTANT !!!
# This is a DRAFT and a starting point. It WILL require manual review and editing.
# - Verify all package names against the Nixpkgs repository.
# - Check service options and configurations.
# - Double-check all hardware and disk mount settings.
{ config, pkgs, ... }:
{
imports =
[ # This will be generated by the NixOS installer.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# --- NETWORKING ---
# See logs/06_netplan_config.log for details.
networking.hostName = "nixos-desktop"; # Set your desired hostname.
networking.networkmanager.enable = true;
# The scan found Tailscale running. You will likely want to enable it here.
# services.tailscale.enable = true;
# Set your time zone.
time.timeZone = "Australia/Sydney"; # Please verify this is correct.
# --- USER ACCOUNTS ---
users.users.sam = {
isNormalUser = true;
description = "Sam";
extraGroups = [ "networkmanager" "wheel" "docker" ]; # "wheel" allows sudo. Add other groups if needed.
};
# --- SOFTWARE PACKAGES (DERIVED FROM RECON LOG) ---
environment.systemPackages = with pkgs; [
# --- Essentials & CLI Tools (from history and manual install logs) ---
git
wget
curl
htop # btop is an alternative available in nix
neovim
zsh
zoxide
ripgrep
fzf
tree
# --- Rust & Go Environment ---
rustc
cargo
go
# --- Python Environment ---
python3
# --- Node.js Environment ---
nodejs # Consider specifying a version, e.g., nodejs-20_x
# --- Desktop & GUI Applications ---
firefox
thunderbird
vlc
gimp
inkscape
obs-studio
# --- Manually Installed Tools (verify package names) ---
arduino-cli
lazygit
ollama
scrcpy
# --- Snap Packages (find equivalents in nixpkgs) ---
# The following were installed as snaps. Find their NixOS equivalents.
# - code (vscode)
# - mqtt-explorer
# - notepad-plus-plus (likely use notepadqq or similar)
# - spotify
# - telegram-desktop
# --- Other APT Packages (selection of common tools found) ---
# A full list is in logs/04_nixos_recon.log. Add what you need.
nmap
minicom
screen
net-tools # for ifconfig, etc.
gnome.gnome-tweaks
];
# --- SERVICES & VIRTUALIZATION ---
# Docker was found to be in use.
virtualisation.docker.enable = true;
# Ollama service was running.
# services.ollama.enable = true; # Find the correct module for Ollama on NixOS
# RustDesk service was running.
# services.rustdesk.enable = true; # Find the correct module for RustDesk on NixOS
# Enable sound with PipeWire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
# Enable CUPS to print documents.
services.printing.enable = true;
# --- DESKTOP ENVIRONMENT ---
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
# --- DISK MOUNTS ---
# !!! CRITICAL !!!
# Update these with the correct UUIDs from your `lsblk -f` output
# once you have booted the NixOS installer.
fileSystems."/data" = {
device = "/dev/disk/by-uuid/PLEASE_REPLACE_ME"; # UUID of Integral300 drive
fsType = "ext4";
options = [ "defaults" ];
};
# --- MISC ---
# Allow unfree packages for things like Chrome, Spotify, etc.
nixpkgs.config.allowUnfree = true;
# System state version. This should be set to the version of NixOS you install.
system.stateVersion = "24.05";
}

120
results/generated_home.nix Normal file
View File

@@ -0,0 +1,120 @@
# NixOS Home Manager Configuration: /results/generated_home.nix
# This file declaratively manages your user environment based on the discovered .zshrc.
{ config, pkgs, ... }:
{
# Set a state version for compatibility
home.stateVersion = "24.05";
programs.home-manager.enable = true;
# ---
# 1. ZSH SHELL & POWERLEVEL10K PROMPT
# ---
programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableSyntaxHighlighting = true;
oh-my-zsh = {
enable = true;
plugins = [ "git" ]; # zsh-autosuggestions & syntax-highlighting are enabled above
theme = "powerlevel10k/powerlevel10k";
};
shellAliases = {
ls = "eza --icons --git";
ll = "eza -l --icons --git";
la = "eza -la --icons --git";
tree = "eza --tree";
# Note: 'batcat' from your .zshrc is typically packaged as 'bat' in NixOS
cat = "bat --color=always --paging=never";
};
};
# Set Zsh as the default shell
home.shell = pkgs.zsh;
# Enable Powerlevel10k theme
programs.powerlevel10k = {
enable = true;
# Your Powerlevel10k config (~/.p10k.zsh) should be linked here if you have one.
# For example: home.file.".p10k.zsh".source = ./p10k.zsh;
};
# ---
# 2. SHELL TOOLS & INTEGRATIONS
# ---
programs.atuin = {
enable = true;
enableZshIntegration = true;
};
programs.fzf = {
enable = true;
enableZshIntegration = true;
};
programs.zoxide = {
enable = true;
enableZshIntegration = true;
};
programs.nvm = {
enable = true;
};
# ---
# 3. EDITORS & TERMINAL
# ---
programs.neovim = {
enable = true;
defaultEditor = true; # Sets EDITOR and VISUAL to nvim
};
programs.kitty = {
enable = true;
};
programs.zellij = {
enable = true;
};
# ---
# 4. PACKAGES & LANGUAGES
# ---
home.packages = with pkgs; [
# Core Utilities
unzip zip p7zip htop wget curl nmap minicom screen tree
# Modern CLI Enhancements (from .zshrc and recon logs)
eza bat lazygit yazi tealdeer navi carapace-bin
# Language Toolchains
rustup go nodejs python3
];
# ---
# 5. ENVIRONMENT & API KEYS
# ---
# WARNING: Storing secrets in plain text is a security risk.
# Consider using a tool like sops-nix for production environments.
home.sessionVariables = {
OPENAI_API_KEY = "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";
TAVILY_API_KEY = "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";
DEEPSEEK_API_KEY = "sk-26c66e4dd5b34017bd66f7aef748c625";
};
# Add custom binary paths to your environment
home.sessionPath = [
# For the 'opencode' CLI tool
"$HOME/.opencode/bin"
];
# ---
# AI TOOLS
# ---
programs.gemini-cli = {
enable = true;
};
# ---
# 6. DOTFILE MANAGEMENT
# ---
# This section is a placeholder for linking config files from a Git repo.
# e.g., home.file.".config/nvim/init.vim".source = ./config/nvim/init.vim;
}

138
scripts/01_system_recon.sh Executable file
View File

@@ -0,0 +1,138 @@
#!/bin/bash
#
# Phase 1: System Reconnaissance Script
# This script gathers information about the system's hardware, software, and user files.
# It is designed to be non-destructive. All output is logged to a file.
# ---
# Configuration ---
# ---
LOG_FILE="logs/01_system_recon.log"
USER_HOME=$(eval echo ~${SUDO_USER:-$USER})
# ---
# Helper Functions ---
# ---
log() {
echo "$1" | tee -a "$LOG_FILE"
}
log_header() {
log "\n"
log "========================================================================"
log "=== $1"
log "========================================================================"
}
run_and_log() {
log "---
Running command: $1 ---"
eval "$1" 2>&1 | tee -a "$LOG_FILE"
log "---
Command finished ---"
}
# ---
# Main Execution ---
# ---
# Initialize log file
echo "System Reconnaissance Log - $(date)" > "$LOG_FILE"
echo "----------------------------------------------------" >> "$LOG_FILE"
# 1. Disk and Filesystem Information
log_header "DISK & FILESYSTEM INFORMATION"
run_and_log "lsblk -f"
run_and_log "df -hT"
# 2. Top-level User File Assessment
log_header "USER FILE ASSESSMENT"
log "Analyzing major directories in user home: $USER_HOME"
log "This will show the total size of each main user folder."
run_and_log "du -sh ${USER_HOME}/{Documents,Downloads,Music,Pictures,Videos,Desktop,dotfiles} 2>/dev/null"
# Note for the operator about deeper scans
log "\n"
log "NOTE: A full file listing is a long-running process."
log "The following command can be used for a more detailed scan."
log "It is recommended to run this in the background and review the output later."
log "Example for a deeper scan (creates a separate log file):"
log "# find ${USER_HOME}/Documents -type f > logs/documents_file_list.txt"
log "\n"
# 3. Software Inventory
log_header "SOFTWARE INVENTORY"
# APT Packages
log "---
Checking for APT packages... ---"
if command -v dpkg &> /dev/null; then
run_and_log "dpkg --get-selections"
else
log "dpkg command not found. Skipping APT package scan."
fi
# Snap Packages
log "---
Checking for Snap packages... ---"
if command -v snap &> /dev/null; then
run_and_log "snap list"
else
log "snap command not found. Skipping Snap package scan."
fi
# Docker Information
log_header "DOCKER INFORMATION"
if command -v docker &> /dev/null; then
log "---
Docker Version ---"
run_and_log "docker --version"
log "---
Docker Info (Configuration and Storage) ---"
run_and_log "docker info"
log "---
Docker Containers (Running and Stopped) ---"
run_and_log "docker ps -a"
log "---
Docker Images ---"
run_and_log "docker images"
log "---
Docker Volumes ---"
run_and_log "docker volume ls"
else
log "docker command not found. Skipping Docker scan."
fi
# 4. Development Environment & Servers
log_header "DEV ENVIRONMENTS & SERVERS"
# Common Languages
run_and_log "command -v rustc && rustc --version"
run_and_log "command -v node && node --version"
run_and_log "command -v python3 && python3 --version"
run_and_log "command -v go && go version"
run_and_log "command -v java && java --version"
# Common Servers
log "---
Checking for common server processes... ---"
run_and_log "ps aux | grep -E 'apache2|nginx|httpd|snapcast' | grep -v grep"
log "---
Checking for server config files... ---"
run_and_log "ls -ld /etc/apache2 /etc/nginx /etc/snapserver.conf 2>/dev/null"
# Eclipse and Arduino/ESP-IDF
log "---
Searching for Eclipse Workspaces and Arduino/ESP-IDF projects... ---"
log "This may take a moment..."
# This find command is scoped to the user's home and looks for common markers of these dev environments.
run_and_log "find ${USER_HOME} -maxdepth 4 \( -name '.project' -o -name 'platformio.ini' -o -name '*.ino' \) -print 2>/dev/null"
log_header "RECONNAISSANCE COMPLETE"
log "Log file saved to: $LOG_FILE"
log "Please review the log file to plan the next phase of the migration."
log "Remember to complete and verify your backups before proceeding."

View File

@@ -0,0 +1,91 @@
#!/bin/bash
# ---
# Configuration ---
# ---
LOG_FILE="logs/02_file_migration.log"
DRY_RUN=""
SOURCE_HOME="/home/sam" # This should be the path where your old home is mounted
TARGET_STAGING="/mnt/ubuntu_storage_3TB/migration_staging" # As per the guide
# Check for --dry-run flag
if [ "$1" == "--dry-run" ]; then
DRY_RUN="--dry-run"
echo "---
PERFORMING DRY RUN ---" | tee -a "$LOG_FILE"
fi
# Safety check for root user
if [ "$(id -u)" -eq 0 ] && [ "$2" != "--allow-root" ]; then
echo "Running as root is not recommended. Use --allow-root to override."
exit 1
fi
# ---
# Helper Functions ---
# ---
log() {
echo "$1" | tee -a "$LOG_FILE"
}
run_rsync() {
log "------------------------------------------------------------------------"
log "Syncing $1..."
# The --info=progress2 flag gives a cleaner total progress indicator.
# The --exclude='/data' is critical to not re-copy existing data.
rsync -avh --info=progress2 $DRY_RUN --exclude='/data' "$2" "$3"
log "Finished syncing $1."
log "------------------------------------------------------------------------"
}
# ---
# Main Execution ---
# ---
# Initialize log file
echo "File Migration Log - $(date)" > "$LOG_FILE"
echo "----------------------------------------------------" >> "$LOG_FILE"
if [ -n "$DRY_RUN" ]; then
log "Dry run mode enabled. No files will be changed."
fi
log "Source directory: $SOURCE_HOME"
log "Target staging directory: $TARGET_STAGING"
# Check if source directory exists
if [ ! -d "$SOURCE_HOME" ]; then
log "ERROR: Source directory $SOURCE_HOME does not exist. Mount your old home directory and try again."
exit 1
fi
# Create target directory
log "Creating target staging directory (if it doesn\'t exist)..."
if [ -z "$DRY_RUN" ]; then
mkdir -p "$TARGET_STAGING"
fi
# ---
# Migration Commands ---
# ---
# These commands will copy your main user folders from your old Ubuntu home
# into the staging area. The structure is kept simple for later organization.
# Note the trailing slash on the source to copy the *contents* of the directory.
run_rsync "Documents" "${SOURCE_HOME}/Documents/" "${TARGET_STAGING}/Documents/"
run_rsync "Pictures" "${SOURCE_HOME}/Pictures/" "${TARGET_STAGING}/Pictures/"
run_rsync "Music" "${SOURCE_HOME}/Music/" "${TARGET_STAGING}/Music/"
run_rsync "Videos" "${SOURCE_HOME}/Videos/" "${TARGET_STAGING}/Videos/"
run_rsync "Desktop" "${SOURCE_HOME}/Desktop/" "${TARGET_STAGING}/Desktop/"
run_rsync "Downloads" "${SOURCE_HOME}/Downloads/" "${TARGET_STAGING}/Downloads/"
run_rsync "Dotfiles" "${SOURCE_HOME}/dotfiles/" "${TARGET_STAGING}/dotfiles/"
# Add any other specific project directories you know of here. For example:
# run_rsync "Arduino Projects" "${SOURCE_HOME}/Arduino/" "${TARGET_STAGING}/Arduino/"
log "\n"
log "---
File migration script finished. ---"
log "Review the output above. If everything looks correct, you can run the script"
log "again without the --dry-run flag to perform the actual file copy."
log "The log has been saved to $LOG_FILE"

View File

@@ -0,0 +1,146 @@
#!/bin/bash
# -- Configuration ---
LOG_FILE="logs/03_find_and_sync_data.log"
DRY_RUN=""
SOURCE_WIN_DRIVE="/media/sam/8294CD2994CD2111"
TARGET_DATA_DIR="/data"
# Check for --dry-run flag
if [ "$1" == "--dry-run" ]; then
DRY_RUN="--dry-run"
echo "--- PERFORMING DRY RUN ---" | tee -a "$LOG_FILE"
fi
# Helper function for logging
log() {
echo "$1" | tee -a "$LOG_FILE"
}
run_rsync_dry_run() {
local source_path="$1"
local target_path="$2"
local descriptive_name="$3"
log "------------------------------------------------------------------------"
log "Preparing to sync: $descriptive_name"
log "Source: $source_path"
log "Target: $target_path"
log "------------------------------------------------------------------------"
# Ensure target directory exists for rsync
if [ ! -d "$target_path" ]; then
log "Creating target directory: $target_path"
if [ -z "$DRY_RUN" ]; then
mkdir -p "$target_path"
fi
fi
# Use rsync -a (archive mode) for comprehensive copying, and -n for dry run.
# The trailing slash on source_path copies contents, not the directory itself.
rsync -avh --info=progress2 $DRY_RUN "${source_path}/" "${target_path}/" 2>&1 | tee -a "$LOG_FILE"
log "Finished dry run for $descriptive_name."
}
# Initialize log file
echo "Data Discovery and Sync Log - $(date)" > "$LOG_FILE"
echo "----------------------------------------------------" >> "$LOG_FILE"
if [ -n "$DRY_RUN" ]; then
log "Dry run mode enabled. No files will be changed."
fi
log "Source Windows Drive: $SOURCE_WIN_DRIVE"
log "Target Data Directory: $TARGET_DATA_DIR"
log ""
# --- Mapping Configuration (Source on Windows Drive -> Target in /data) ---
# Each entry is: "source_path" "target_subdirectory_in_data" "descriptive_name"
# Personal Documents, Pictures, Music, Videos
declare -a PERSONAL_FOLDERS=(
"Users/sam/Documents" "personal/Documents" "Personal Documents"
"Users/sam/Pictures" "personal/Pictures" "Personal Pictures"
"Users/sam/Music" "personal/Music" "Personal Music"
"Users/sam/Videos" "personal/Videos" "Personal Videos"
"Users/sam/Downloads" "personal/Downloads" "Personal Downloads"
)
# Web/Work Projects
declare -a WORK_PROJECTS=(
"xampp/htdocs" "work/htdocs" "XAMPP htdocs projects"
"frei0r" "work/frei0r" "Frei0r Projects"
# Add other common workspace/project folders here if known
# e.g., "Users/sam/workspace" "work/workspace" "General Workspaces"
)
# IoT Projects
declare -a IOT_PROJECTS=(
"Arduino" "iot/Arduino" "Arduino Projects" # Assuming there's an Arduino folder
)
# Generic project folders to search for
declare -a GENERIC_PROJECT_NAMES=(
"Projects"
"Code"
"Dev"
)
# --- Execute mappings ---
log "--- Processing Personal Folders ---"
for ((i=0; i<${#PERSONAL_FOLDERS[@]}; i+=3)); do
SOURCE="${SOURCE_WIN_DRIVE}/${PERSONAL_FOLDERS[i]}"
TARGET="${TARGET_DATA_DIR}/${PERSONAL_FOLDERS[i+1]}"
DESC="${PERSONAL_FOLDERS[i+2]}"
if [ -d "$SOURCE" ]; then
run_rsync_dry_run "$SOURCE" "$TARGET" "$DESC"
else
log "WARNING: Source directory not found: $SOURCE"
fi
done
log ""
log "--- Processing Work Projects ---"
for ((i=0; i<${#WORK_PROJECTS[@]}; i+=3)); do
SOURCE="${SOURCE_WIN_DRIVE}/${WORK_PROJECTS[i]}"
TARGET="${TARGET_DATA_DIR}/${WORK_PROJECTS[i+1]}"
DESC="${WORK_PROJECTS[i+2]}"
if [ -d "$SOURCE" ]; then
run_rsync_dry_run "$SOURCE" "$TARGET" "$DESC"
else
log "WARNING: Source directory not found: $SOURCE"
fi
done
log ""
log "--- Processing IoT Projects ---"
for ((i=0; i<${#IOT_PROJECTS[@]}; i+=3)); do
SOURCE="${SOURCE_WIN_DRIVE}/${IOT_PROJECTS[i]}"
TARGET="${TARGET_DATA_DIR}/${IOT_PROJECTS[i+1]}"
DESC="${IOT_PROJECTS[i+2]}"
if [ -d "$SOURCE" ]; then
run_rsync_dry_run "$SOURCE" "$TARGET" "$DESC"
else
log "WARNING: Source directory not found: $SOURCE"
fi
done
log ""
log "--- Searching for Generic Project Folders ---"
# This section tries to find common project-like folders directly under the Windows user profile
# and prompts the user for action. For automation, we'll try to guess.
# For now, we'll just list them to avoid making assumptions without user confirmation.
log "Searching for additional project-like folders under ${SOURCE_WIN_DRIVE}/Users/sam/ and similar paths:"
find "${SOURCE_WIN_DRIVE}/Users/sam" -maxdepth 3 -type d \( -name "Projects" -o -name "Code" -o -name "Dev" -o -name "*workspace*" -o -name "*repos*" \) 2>/dev/null | while read -r found_dir; do
log "Found potential project directory: $found_dir"
# In a real interactive session, we'd ask the user where to put this.
# For now, we just log its existence.
done
log ""
log "--- Data discovery and dry run finished. ---"
log "Please review the log file: $LOG_FILE"
log "If the output looks correct, run this script again with '--live' (or no flag) to perform the actual copy."
log "Example: scripts/03_find_and_sync_data.sh"

110
scripts/04_nixos_recon.sh Normal file
View File

@@ -0,0 +1,110 @@
#!/bin/bash
#
# Phase 2: Deep System Reconnaissance for NixOS Migration
# This script gathers detailed information about installed software, services,
# configurations, and development environments on the current Ubuntu system.
# All output is logged to a file for later analysis.
# --- Configuration ---
LOG_FILE="logs/04_nixos_recon.log"
USER_HOME=$(eval echo ~${SUDO_USER:-$USER})
# --- Helper Functions ---
log() {
echo -e "$1" | tee -a "$LOG_FILE"
}
log_header() {
log "\n"
log "========================================================================"
log "=== $1"
log "========================================================================"
}
run_and_log() {
log "--- Running command: $1 ---"
eval "$1" 2>>"$LOG_FILE" | tee -a "$LOG_FILE"
log "--- Command finished ---\n"
}
# --- Main Execution ---
# Initialize log file
echo "NixOS Migration - Deep Reconnaissance Log - $(date)" > "$LOG_FILE"
echo "----------------------------------------------------" >> "$LOG_FILE"
log "User Home Directory: $USER_HOME"
# 1. Software Inventory (APT & Snap)
log_header "SOFTWARE INVENTORY"
if command -v dpkg &> /dev/null; then
run_and_log "dpkg --get-selections | grep -v deinstall"
else
log "dpkg command not found. Skipping APT package scan."
fi
if command -v snap &> /dev/null; then
run_and_log "snap list"
else
log "snap command not found. Skipping Snap package scan."
fi
# 2. Systemd Services & Timers
log_header "SYSTEMD SERVICES & TIMERS"
log "--- Active System Services ---"
run_and_log "systemctl list-units --type=service --state=running"
log "--- All System Timers ---"
run_and_log "systemctl list-timers --all"
log "\n--- Active User Services (if any) ---"
# Check for user session bus to run user commands
if [ -n "$XDG_RUNTIME_DIR" ]; then
run_and_log "systemctl --user list-units --type=service --state=running"
log "--- All User Timers (if any) ---"
run_and_log "systemctl --user list-timers --all"
else
log "Could not connect to user session bus. Skipping user services/timers."
fi
# 3. Docker Environment
log_header "DOCKER ENVIRONMENT"
if command -v docker &> /dev/null; then
run_and_log "docker --version"
run_and_log "docker info"
run_and_log "docker ps -a --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'"
run_and_log "docker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.Size}}'"
run_and_log "docker volume ls"
log "--- Searching for docker-compose files in home directory ---"
run_and_log "find \"$USER_HOME\" -name \"*docker-compose.yml\" -o -name \"*compose.yml\" 2>/dev/null"
else
log "docker command not found. Skipping Docker scan."
fi
# 4. Command-Line Environment & Scripts
log_header "COMMAND-LINE TOOLS & SCRIPTS"
log "--- Top 50 Most Used Commands from History ---"
# This gives an idea of frequently used, un-packaged CLI tools
if [ -f "$USER_HOME/.bash_history" ]; then
run_and_log "cat $USER_HOME/.bash_history | sed 's/sudo //g' | awk '{print $1}' | sort | uniq -c | sort -rn | head -n 50"
elif [ -f "$USER_HOME/.zsh_history" ]; then
run_and_log "cat $USER_HOME/.zsh_history | sed 's/sudo //g' | awk '{print $1}' | sort | uniq -c | sort -rn | head -n 50"
else
log "Shell history file not found."
fi
log "--- User Cron Jobs (crontab) ---"
run_and_log "crontab -l"
log "--- Manually Installed Scripts & Binaries ---"
log "Searching in /usr/local/bin, ~/bin, and ~/.local/bin..."
run_and_log "ls -lA /usr/local/bin"
if [ -d "$USER_HOME/bin" ]; then
run_and_log "ls -lA \"$USER_HOME/bin\""
fi
if [ -d "$USER_HOME/.local/bin" ]; then
run_and_log "ls -lA \"$USER_HOME/.local/bin\""
fi
log_header "RECONNAISSANCE COMPLETE"
log "Log file saved to: $LOG_FILE"
log "This file provides a detailed snapshot of the system's software and configuration."
log "Review it carefully to plan your configuration.nix and home-manager setup."