# 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.