Installing Fog on NixOS Latest

In this guide, we will go through the process of installing Fog on NixOS, with necessary adjustments for the NixOS environment. Fog is an open-source cloning and imaging solution, and NixOS requires some tweaks for compatibility, especially around file system structure and paths.

Prerequisites

  • A system running NixOS Latest
  • Root access or a user account with sudo privileges
  • A stable internet connection

Step 1: Update the system

Open a terminal and update the system by running the following commands:

sudo nix-channel --update
sudo nixos-rebuild switch

Step 2: Install prerequisites

Fog has several dependencies that need to be installed. NixOS uses a different method to install packages, so we'll use the following to install the necessary packages:

sudo nix-env -iA nixos.perl nixos.php nixos.nginx nixos.mariadb nixos.git nixos.php-fpm

Important Note:

In NixOS, packages are installed within the Nix store and not in the usual system paths like /bin or /usr/bin. We'll need to adjust paths in the Fog installation script later on.

Step 3: Download Fog

Next, download the latest version of Fog from the official Fog Project repository. Run the following commands:

sudo git clone https://github.com/FOGProject/fogproject.git /opt/fogproject

This command clones the Fog repository to /opt/fogproject.

Step 4: Modify the Fog installation script for NixOS

Before running the install script, we need to modify it to point to the correct NixOS binary paths. Open the install script for editing:

sudo nano /opt/fogproject/bin/installfog.sh

Look for any hardcoded paths such as /bin, /usr/bin, and similar, and replace them with the correct NixOS paths. You can determine the correct paths by running:

which php
which perl
which nginx

Update the install script to point to these paths, for example:

  • Replace /usr/bin/php with the path obtained from which php
  • Replace /usr/bin/perl with the path obtained from which perl

Save and close the file once done.

Step 5: Install Fog

Now, you can proceed with the installation of Fog. Run the following commands:

cd /opt/fogproject/bin/
sudo ./installfog.sh

Follow the prompts during the installation process and provide the required information when prompted.

Step 6: Configure Nginx

After installing Fog, you will need to configure Nginx. Open a terminal and create a new Nginx configuration file for Fog:

sudo nano /etc/nginx/conf.d/fog.conf

Add the following lines to the file:

server {
    listen 80;
    server_name <your_domain_name>;
    root /var/www/fog;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm.socket;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

Replace <your_domain_name> with your actual domain or IP address.

Save and close the file.

Next, reload Nginx to apply the changes:

sudo systemctl restart nginx

Step 7: Configure MariaDB

Start MariaDB by running the following command:

sudo systemctl start mariadb

Next, secure the MariaDB installation:

sudo mysql_secure_installation

Follow the prompts to secure your database.

Step 8: Final Configuration of Fog

To finalize the Fog configuration, open a browser and go to http://<your_domain_name>. You should see the Fog login page.

Login using the default credentials:

  • Username: fog
  • Password: password

Once logged in, go to Storage Management and create a new storage node. Provide the required information and save your changes.

Step 9: Using Fog

You are now ready to use Fog for imaging and cloning devices. Explore the Fog dashboard for additional configuration options and functionality.

Conclusion

Congratulations! You have successfully installed and configured Fog on NixOS. If you encounter any issues, double-check the paths used in the installation script and ensure that all services (like Nginx and MariaDB) are running correctly.