juspay/nixos-unified-template
{ "createdAt": "2023-04-01T13:43:05Z", "defaultBranch": "main", "description": "A multi-platform Nix configuration template optimized for development environment, based on nixos-unified. ", "fullName": "juspay/nixos-unified-template", "homepage": "", "language": "Nix", "name": "nixos-unified-template", "pushedAt": "2025-11-24T16:15:11Z", "stargazersCount": 339, "topics": [ "home-manager", "home-manager-config", "nix" ], "updatedAt": "2025-11-25T13:28:30Z", "url": "https://github.com/juspay/nixos-unified-template"}nixos-unified-template
Section titled “nixos-unified-template”This repository provides a ready-made Nix configuration to manage either your Home environment or whole NixOS systems. It is optimized specifically for development environment (with direnv, neovim with LSP[^neovim], etc.).
Under the hood, it uses [nixos-unified]. See [./modules]!(modules/) to see what’s available. We support [home-manager] (see ./modules/home), [nix-darwin] (see ./modules/darwin) and [NixOS] (see ./modules/nixos).
| Platform | Supported By |
|---|---|
| macOS only | ✅ [home-manager] and/or ✅ [nix-darwin] |
| NixOS only | ✅ [home-manager] and ✅ [NixOS] |
| All platforms | ✅ [home-manager] only |
[^neovim] !: Wanna try before you buy?
git clone https://github.com/srid/rust-nix-template cd rust-nix-template nix develop nix run github:juspay/nixos-unified-template#neovim # Type `SPC f f` to open a .rs file # Wait for rust-analyzer to finish; go to a symbol and type K
Expect to see:
<img width="534" alt="image" src="https://github.com/user-attachments/assets/204e6ad7-c233-4503-9924-73fbce2772d6">[nix-darwin] !: https://github.com/LnL7/nix-darwin [home-manager] !: https://github.com/nix-community/home-manager [NixOS] !: https://nixos.asia/en/nixos-tutorial [nixos-unified] !: https://nixos-unified.org
Getting Started
Section titled “Getting Started”On NixOS
Section titled “On NixOS”If you use, or intend to use, [NixOS] !:
- Install NixOS from Graphical ISO image and reboot.
- Ensure that
/etc/nixos/{configuration.nix, hardware-configuration.nix}are in place. - In a terminal, become
rootand initialize our template under/etc/nixos:sudo su -cd /etc/nixosnix --extra-experimental-features "nix-command flakes" \run nixpkgs#omnix -- \init github:juspay/nixos-unified-template#nixos -o .# Replace HOSTNAME with the hostname you entered above.mv configuration.nix hardware-configuration.nix ./configurations/nixos/HOSTNAME/nix --extra-experimental-features "nix-command flakes" run - At this point, you can move
/etc/nixosto anywhere, and initialize a Git repository to track future changes.
On non-NixOS
Section titled “On non-NixOS”If you are on macOS or running other Linux distros:
-
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | \sh -s -- install --no-confirm --extra-conf "trusted-users = $(id -un)"
-
Open a new terminal; Initialize[^omnix] your Nix configuration using this repo as template:
nix run nixpkgs#omnix -- init github:juspay/nixos-unified-template -o ~/nixconfigcd ~/nixconfig- It will prompt to you choose between [home-manager] only configuration and [nix-darwin] configuration (ignore the [NixOS] template). The latter includes [home-manager] as well.
- Optionally, you may edit
./modules/{home,darwin}/*.nixto your liking.
-
Run
nix run(or the appropriate command printed by the above command) to activate your configuration.- Does this fail to run? See the [Troubleshooting]!(#troubleshooting) section below.
-
Restart your terminal.
After steps 1-4, you should expect to see the starship prompt:
Whenever you modify your configuration in ./modules/*/*.nix, you should re-run nix run to activate the new configuration.
[^omnix] !: We use omnix to initialize this repository template.
Details
Section titled “Details”The configuration repo has flake.nix file in the current directory and some ./modules/{home,darwin,nixos}/*.nix files containing the [home-manager], [nix-darwin] and [NixOS] configurations respectively that you can review. It also has a justfile, which provides a set of recipes analogous to Make targets to interact with the nix flake.
Run nix run to activate this configuration in your system.
To browse the capabilities of [home-manager] (and to see what else can go in your ./modules/home/*.nix — such as shell aliases), consult home-manager options reference. You can also run man home-configuration.nix in the terminal.
What’s included
Section titled “What’s included”Here we describe just a handful of tools included in this template. See the [./modules]!(./modules) directory for more. All of ./modules and ./configurations directories are organized by nixos-unified’s autowiring structure.
neovim
Section titled “neovim”Neovim configured using nixvim is included across all configurations. It is also exposed as a flake app, so you can launch it directly using nix run github:juspay/nixos-unified-template#neovim. See neovim/nixvim.nix.
starship
Section titled “starship”Prettify your shell prompt with starship. It is configured to show the current git branch, the current directory, Nix devshell status and the exit code of the last command.
direnv
Section titled “direnv”direnv as well as nix-direnv is fully configured and available to use in your shell, with tight starship (see above) prompt integration. See direnv.nix
git configuration
Section titled “git configuration”Your ~/.config/git/config is managed entirely in Nix. See git.nix.
Type , followed by the any binary name to run it directly from nixpkgs, using comma.
Garbage collection
Section titled “Garbage collection”Nix garbage collection runs periodically to keep disk space manageable. See gc.nix
By default, [home-manager] is configured to run garbage collection automatically every week. If your projects use nix-direnv, you don’t have to worry about having to download the dependencies again while in a remote area with limited internet access (see prominent features of nix-direnv).
Troubleshooting
Section titled “Troubleshooting”error: opening lock file ...
Section titled “error: opening lock file ...”Problem: When using home-manager, nix run shows an error like: error: opening lock file '/nix/var/nix/profiles/per-user/utkarsh.pandey1/profile.lock': No such file or directory
Solution: This is an instance of https://github.com/nix-community/home-manager/issues/4611. Run sudo mkdir /nix/var/nix/profiles/per-user/$(id -un)/ && sudo chown $(id -un) /nix/var/nix/profiles/per-user/$(id -un) and try again.
error: unable to download ... Problem with the SSL CA cert (path? access rights?)
Section titled “error: unable to download ... Problem with the SSL CA cert (path? access rights?)”Problem: On macOS, you may see this error: error: unable to download ... Problem with the SSL CA cert (path? access rights?)
Solution: You may be able to resolve this by running:
sudo rm /etc/ssl/certs/ca-certificates.crtsudo ln -s /nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crtSee https://github.com/NixOS/nix/issues/2899#issuecomment-1669501326