This repository contains configurations for various programs & Nix(OS).
This Nix(OS) section of this repository is located in the nixos directory.
nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
nix-channel --update
nix-shell '<home-manager>' -A installdocker compose run --remove-orphans check- The
hostscontains theconfiguration.nixfiles for each of my computers that runs NixOS. - Each host is assigned a separate folder.
- The configuration that
flake.nixuses is decided by the hostname of the system. - The creation of users is managed by the
configuration.nixbut all the user related configuration is handled byhome-manager. The common link between the created user and configured user is just the username. This means that users with the same name on all systems will be configured the same way ifhome-manageris used configure the user.
- The
usersdirectory is thehome-managersection of the configuration. - Each username has a
username.nixfile that contains user levelhome-managermanaged configurations. - The
users/shareddirectory contains modules that are shared across multiple users.
- This directory contains a
secrets.jsonfile (encrypted using git crypt). which should contain a JSON object. - This JSON object is made available to both the home-manager user configurations in
users& system configurations inhostsvia thesecretsfunction parameter.
This is the entry point for both the home-manager & NixOS.
After making any changes in the hosts directory, you can install the changes to the current host configuration into NixOS using the following command on the host.
sudo nixos-rebuild switch --flake .
# OR
rake nix:os:installnix fmtSince we are using a flake.lock file, we need to update the flake using the command below and rebuild the system as normal.
# TO BE RUN FROM THE ROOT OF THIS CLONED REPOSITORY
nix flake update
# OR
rake nix:flake:updateAny modifications to the nixos/users directory can be installed using this home-manager command
home-manager switch --flake './nixos' -j 4 --impure
# OR
rake nix:home:install--impureflag is required because nixGL usesbuiltins.currentTimeas an impure parameter to force the rebuild on each access.