Hello everyone, I’m very close to finishing my configuration files for NixOS. I have those working on my nixos installation on my external drive, but before I officially move to nixos I’d like to make sure that I’m not doing something wrong.
Could someone please check my config files? (I only use flakes.nix, configuration.nix, home.nix and hardware.nix and I’d say they aren’t much complicated.)
My main concearn is that I probably use the import
and modules
functions wrong (yet somehow they work?). I’ve read and watched numerous guides for the last 3 months, but I think I still mess this up😅. I think following a bunch of different guides and videos added to the confusion a bit. (A recent guide I read made me have doubts about my set up.)
This is the link to my nixos configs:
https://codeberg.org/BlastboomStrice/dotfiles/src/branch/main/.config/nixos-conf
Hopefully by the end of the next week I’ll be posting here about having transitioned to linux/nixos:)
Sample of probably wrong usage of modules
in flakes.nix
outputs = {self, nixpkgs, ... }@inputs: {
nixosConfigurations = {
nixos = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/default/configuration.nix
inputs.home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.bs = import ./hosts/default/home.nix;
home-manager.extraSpecialArgs = { inherit inputs; };
}
# inputs.spicetify-nix.nixosModules.default
Sample of probably wrong usage of imports
in configuration.nix
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
#inputs.home-manager.nixosModules.default
];
(I think I’m not using home manager in configuration.nix
, that’s why I’ve commented it out, and I’m importing it directly in flakes.nix
.)
I’m not seeing anything wrong in the samples you provided. That’s pretty much how my own NixOS configuration looks (except mine’s a single monolithic
flake.nix
generated from Org Roam sources, but… the effect is the same anyway).Yo, thanks for this, I was a bit anxious that I might had been starting really wrong.😅😅
May I ask a few more things (either directed to you or whoever wants to reply):
inputs
argument in both specialArgs and extraSpecialArgs to be used inconfiguration.nix
andhome.nix
. Do I make use of this argument inside those 2 files?configuration.nix
andhome.nix
I start with{ config, pkgs, inputs, ... }:
arguments. Should I do that? Should I remove/add anything? I suppose this usesconfig
,pkgs
andinputs
fromflakes.nix
, making thespecialArgs = { inherit inputs; };
andhome-manager.extraSpecialArgs = { inherit inputs; };
in flakes.nix unecessary??this sample in
flakes.nix
specialArgs = { inherit inputs; }; modules = [ ./hosts/default/configuration.nix inputs.home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.bs = import ./hosts/default/home.nix; home-manager.extraSpecialArgs = { inherit inputs; }; }
this sample in
flakes.nix
??specialArgs = { inherit inputs; }; extraSpecialArgs = { inherit inputs; }; modules = [ ./hosts/default/configuration.nix inputs.home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.bs = import ./hosts/default/home.nix; #home-manager.extraSpecialArgs = { inherit inputs; }; }
inputs
offlakes.nix
to any module that usesspecialArgs
(like theconfiguration.nix
module) andextraSpecialArgs
(like thehome-manager
module). Is this correct?Thanks for replying btw, it was a good confidence boost:)
You don’t seem to actually use
inputs
in yourhome.nix
file so in principle you should be able to remove theline. Doesn’t hurt to keep it, though, if you think you may use
inputs
in the future.The change you propose in 3 would not work the way you expect, the
extraSpecialArgs
needs to be set for Home Manager, not NixOS. My guess is that thenixosSystem
function simply would ignore theextraSpecialArgs
parameter.Ohh I see, now it makes more sense, thank you!