This repository acts as both my NixOS configuration repository and a log of my learning.
I made the decision to leave Windows behind and move to Linux at the end of January 2025 after becoming tired of Windows using so much memory and force feeding AI down my throat. I don't mind using AI when I need to, but I do not want it having access to my entire system. In fact, I code using Helix Editor specifically because it does not support AI.
I spent a day using CachyOS, which is great, but when everything is already set up for you, it removes the need to learn some things, and I wanted to learn. I read about the Nix declarative approach and it made a lot of sense to me, and so NixOS became my distro of choice.
The following folks have donated time to answer my questions. A big thanks to them:
-
A1RMAX - great youtube videos. These vids convinced me to try NixOS.
-
vimjoyer - videos Great videos on all things nix.
-
mightyiam - Author of the Full Time Nix podcast, initiator of the NixOS dendritic pattern.
-
emzy - configuration. Their configuration, although advanced, is very cleanly written and understandable. I've saved myself a lot of typing by reading this config and getting some ideas.
-
LuckShiba - from the DMS/Niri discord. Has answered a lot of questions where I'm sure most people would tell me to get lost.
-
Yui Tayuun for the help getting Icons working.
-
viena - from the unofficial nixos discord for pointing me in the right direction for the cursor fix.
- DMS cycles through my wallpapers. Every time the wallpaper changes, I get a "Reloaded the configuration" notification.
When setting up DMS via flake via home-manager, using any of the settings or system setting options causes the configuration to become read only. Removing these settings fixed this issue.
Dank Material Shell is unable to overwride Niri settings within the Niri Override area of the settings menu.
Unless programs.niri.settings is part of the configuration, the settings file is not created. The DMS overrides do not create this for you and so this must be included.
Changing hardware.nvidia.powerManagement.enable = true; as suggested in the official wiki appears to have resolved the issue.
I installed DMS Greeter, and so far the issue has not happened again. I still do not know what was causing the original issue.
This was a rookie error - I had to install an icon theme, such as:
pkgs.adwaita-icon-themeAs above, I had to install a cursor theme.
After speaking with vimjoyer, he recommended hjem for this job. This worked great.
# flake.nix
# inputs
hjem.url = "github:feel-co/hjem"
hjem.inputs.nixpkgs.follows = "nixpkgs";
wallpapers.url = "github:<user>/<repo>"
wallpapers.flake = false;
# outputs
# nixosConfigurations...
modules = [
# ...
hjem.nixosModules.default
];
# modules/ui/wallpaper.nix (where I wrote it)
{ inputs, ... }:
{
hjem.users."yourusername" = {
enable = true;
# store in /home/users/<username>/wallpapers
files."wallpapers".source = inputs.wallpapers;
};
}NOTE: To get this to work nicely with home manager, I had to add the following line. Without it, the two of them conflicted and home-manager failed to load.
hjem.users.${username}.systemd.enable = false;- Install NixOS
- Modularise the default config
- Switch to flakes
- Set up nvidia drivers
- How to install OpenLinkHub - I have a lot of Corsair iCUE Link hardware, on all PCs.
- How to add Arkenfox Firefox Tweaks
- Implement Shells
- Zsh
- zsh auto suggestions
- zsh syntax highlighting
- Fish
- Integrate cli tools based on active shell
- Zsh
- Install favorite CLI tools
- starship
- Configure with personal prompt design
- bat
- btop
- eza
- tealdeer
- fd
- jq
- zoxide
- zellij
- ripgrep
- lazygit
- yazi
- fzf
- fastfetch
- github cli
- git
- starship
- Imeplement Terminals
- Ghostty
- Kitty
- Foot
- Install and configure Helix Editor from master
- Make Helix configs apply to both User and Root
- Install LSPs, Formatters, and Linters
- Install Niri
- Install DankMaterialShell
- Install DankMaterialShell Greeter
- Install my personal wallpapers
- Install favourite monospace nerd fonts
- Install and configure Hyprland
- Install Steam
- Get a full understanding of nix code structure
- Get a full understanding of flakes
- Get a full understanding of home-manager
- Get a full understanding of hjem
- Get a full understanding of flake parts
- Implement dendritic structure
I have begun figuring this out on my spare PC. While I do have it working on a basic configuration, I need to spend more time reading up about it and how I can mirror the granular control I have within my current configuration.