Skip to content

My operating system and development environment using NixOS, Nix, and Home Manager

License

Notifications You must be signed in to change notification settings

zenoix/walnut-environment

Repository files navigation


Walnut Environment

Screenshots

As at 04/10/2024

Desktop1

Desktop2

Rofi

Hyprlock

Environment

Type Program
Browser Firefox
Cursor Catppuccin Cursor
Display Manager Sddm
Editor Neovim
Fetch Fastfetch
File Manager Thunar
Launcher Rofi
Lockscreen Hypridle + Hyprlock
Media Player Not yet configured
Notification Daemon Dunst
Screenshot Software Grim + Slurp + Swappy
Shell Zsh
Status Bar Waybar
Terminal Kitty
Terminal Font JetBrainsMono
Theme Catppuccin Mocha
Window Manager Hyprland

Layout

walnut-environment
├── assets                  # Assets used in configurations
├── homeManagerModules      # Home manager modules
│   ├── ...
│   └── README.md           # Readme explaining home manager modules layout
├── hosts                   # Different hosts and their configurations
│   ├── walnut-nixos
│   └── wsl
├── modules                 # System modules
│   ├── ...
│   └── README.md           # Readme explaining modules layout
├── overlays                # Overlays
├── flake.nix               # Flake (main entry point)
└── flake.lock              # Flake lock file

Setup

First clone and place the directory in the right place

git clone https://github.com/zenoix/walnut-environment
mv walnut-environment $HOME # Config should be placed in ~/
cd $HOME/walnut-environment

You'll want to then edit flake.nix's personal attribute set to your own information so that it has your username, hostname, timezone, local, city, and git information. For example:

let
  system = "x86_64-linux";

  personal = {
    user = "bob";
    host = "mycomputer";
    timeZone = "America/New_York";
    defaultLocale = "en_US.UTF-8";
    city = "New York";

    # Used for gitconfig
    gitUser = "gituser1234";
    gitEmail = "[email protected]";
  };

  ...
in
{
  ...

The remaining steps depend on if you are using NixOS, WSL, or both. At the end of the setup section, there are instructions for creating and adding more hosts.

NixOS Setup

If you're using NixOS, you'll want to replace the hardware configuration file in the hosts/walnut-nixos directory:

rm hosts/walnut-nixos/hardware-configuration.nix
cp /etc/nixos/hardware-configuration.nix hosts/wanut-nixos/hardware-configuration.nix

Lastly, to rebuild the system, use

sudo nixos-rebuild switch --flake ~/walnut-environment

and/or for home manager

home-manager switch --flake ~/walnut-environment

Tip

You may need to add the following to your current NixOS configuration (/etc/nixos/configuration.nix) if you haven't enabled flakes before:

nix.settings.experimental-features = [
 "nix-command"
 "flakes"
];
and rebuild your system to enable flakes.

These two switch commands are aliased in my home manager configuration to rb and hms respectively which makes future rebuilding easier.

WSL Setup

First, start with installing Nix (the package manager) onto your WSL distribution by following the instructions on the NixOS website.

Tip

In my experience, Nix and home manager only work when multi-user installation is used.

Then follow the home manager installation instructions for standalone installation.

Important

Do not close or restart your terminal as home manager will not be permanently installed yet at this point.

Next, in flake.nix, you'll want to change the wsl.user value to whatever your WSL username is. Make sure to also edit the personal attribute set to your own information (if you haven't already). For example:

let
  system = "x86_64-linux";

  personal = {
    user = "i_am_a_wsl_user"; # This isn't used by WSL-only config
    host = "mywsl"; # This isn't used by WSL-only config
    timeZone = "America/New_York";
    defaultLocale = "en_US.UTF-8";
    city = "New York";

    # Used for gitconfig
    gitUser = "gituser1234";
    gitEmail = "[email protected]";
  };

  wsl = {
    user = "i_am_a_wsl_user";
  };
in
{
  ...

Lastly, run the following command to get everything set up (including permanently having home manager installed):

home-manager --extra-experimental-features "nix-command flakes" switch --flake ~/walnut-environment

This command is aliased in my home manager configuration to hms which makes future rebuilding easier.

Setting Up New Hosts

TODO

Configuration

TODO

Credits:

Wallpapers are from reddit:

Firefox CSS was modified from mimipile's firefoxCSS repo

README header was modified from Frost Pheonix's catppuccin config

Rofi was modified from Sukhmancs' nixos config

Fastfetch was modified from LierB's fastfetch presets

Some waybar components were taken from Spelljinxer's dotfiles

About

My operating system and development environment using NixOS, Nix, and Home Manager

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published