This guide explains how to customize your GridNix installation to better suit your needs and preferences.
To change the desktop wallpaper:
- Replace the files in
assets/wallpapers/with your custom images - Ensure your images are at least 1920x1080 resolution
- Rebuild the system or manually apply:
cp /path/to/your/wallpaper-01.png /etc/nixos/wallpapers/wallpaper-01.png cp /path/to/your/wallpaper-02.png /etc/nixos/wallpapers/wallpaper-02.png cp /path/to/your/wallpaper-03.png /etc/nixos/wallpapers/wallpaper-03.png cp /path/to/your/wallpaper-04.png /etc/nixos/wallpapers/wallpaper-04.png cp /path/to/your/wallpaper-05.png /etc/nixos/wallpapers/wallpaper-05.png
GridNix comes with light and dark themes. To switch between them:
- Open XFCE Settings Manager → Appearance
- Select either "GridNix Dark" or "GridNix Light"
- Rebuild the system or manually apply:
cp /path/to/your/theme.theme /etc/nixos/themes/GridNix-theme.theme
To create a custom theme:
- Copy an existing theme from
assets/themes/toassets/themes/custom/your-theme-name.theme - Edit the color values and settings
- Rebuild or manually install your theme
To customize application icons:
- Replace or add icons to
assets/icons/desktop/directory - For tool-specific icons, use
assets/icons/tools/ - Follow the size guidelines in the README.md in those directories
To customize the terminal appearance:
- Open Terminal → Edit → Preferences
- Adjust colors, fonts, and transparency settings
- Save as a new profile
Key tools in GridNix have custom configurations in:
/etc/GridNix/tool-configs/
To modify these:
- Copy the configuration file
- Make your changes
- Either rebuild or replace the original
You can organize related tools by:
- Creating a new desktop folder
- Adding related tool shortcuts
- Adding a custom
*.desktopfile to launch related tools together
Example desktop file to launch multiple SDR tools:
[Desktop Entry]
Type=Application
Name=SDR Toolkit
Comment=Launch all SDR tools
Exec=bash -c "gqrx & gnuradio-companion & urh"
Icon=/path/to/custom/icon.png
Terminal=false
Categories=SDR;Radio;
For quick testing of tools not included in GridNix:
# Using Python pip
pip install --user tool_name
# Using Nix package manager
nix-env -iA nixpkgs.package_nameTo permanently add a tool to your GridNix build:
- Create a custom package configuration in
nixos/packages/ - Add the package to the relevant module file
- Rebuild your system
Example package configuration (nixos/packages/my-tool.nix):
{ lib, stdenv, fetchFromGitHub, cmake, boost }:
stdenv.mkDerivation rec {
pname = "my-tool";
version = "1.0.0";
src = fetchFromGitHub {
owner = "username";
repo = "my-tool";
rev = "v${version}";
sha256 = "0000000000000000000000000000000000000000000000000000";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ boost ];
meta = with lib; {
description = "Custom security tool";
homepage = "https://github.com/username/my-tool";
license = licenses.mit;
platforms = platforms.linux;
};
}Then add it to the relevant module file:
environment.systemPackages = with pkgs; [
# Existing packages...
(callPackage ../packages/my-tool.nix {})
];To add support for additional hardware:
- Create or modify udev rules in
nixos/hardware/ - Add necessary kernel modules to the configuration
- Ensure proper permissions are set
Example udev rule for a custom device:
# Custom rule for SuperFooDevice
SUBSYSTEM=="usb", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="1234", GROUP="GridNix", MODE="0660", SYMLINK+="superfoo"
To modify network settings:
- Edit the network options in
nixos/configurations/GridNix/default.nix - Change wireless, firewall, or proxy settings as needed
To customize your shell:
- Edit
nixos/home/GridNix.nix - Add or modify shell aliases, functions, and settings
To change default applications:
- Modify XFCE settings via the Settings Manager
- Edit xdg associations in
nixos/home/GridNix.nix
To customize keyboard shortcuts:
- Open XFCE Settings Manager → Keyboard → Application Shortcuts
- Add or modify shortcuts for your most-used tools
For significant customizations, create your own module:
- Create a new file in
nixos/modules/(e.g.,my-custom-module.nix) - Define your custom configuration
- Import it in
nixos/configurations/GridNix/default.nix
Example custom module:
{ config, pkgs, lib, ... }:
{
# Custom environment settings
environment.variables = {
MY_CUSTOM_VAR = "value";
};
# Add specific tools
environment.systemPackages = with pkgs; [
my-custom-tool
another-tool
];
# Custom system services
systemd.services.my-custom-service = {
description = "My Custom Service";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.my-custom-tool}/bin/start-service";
Restart = "on-failure";
};
};
}GridNix is designed for reproducibility, but you can make certain directories persistent:
- Create a persistent data partition
- Mount it at boot time
- Symlink important directories to the persistent storage
Specify persistent directories in your configuration:
fileSystems."/persistent" = {
device = "/dev/disk/by-label/persistent";
fsType = "ext4";
options = [ "noatime" ];
};
system.activationScripts.persistent = ''
mkdir -p /persistent/home
ln -sfn /persistent/home /home/GridNix
'';