167 lines
4.4 KiB
Markdown
167 lines
4.4 KiB
Markdown
# zack's nixos dotfiles
|
||
|
||

|
||
|
||
my customized versions of other's dotfiles
|
||
|
||
major credits to [sioodmy](https://github.com/sioodmy/dotfiles) and [luckasRanarison](https://github.com/luckasRanarison/nvimrc).
|
||
|
||
could not have done this without their work :)
|
||
|
||
## How to Install
|
||
|
||
### Prerequisetes
|
||
|
||
Grab the latest NixOS ISO from NixOS [nixos.org](https://nixos.org). After that, make a new shell with git available:
|
||
|
||
```bash
|
||
nix shell nixpkgs#git
|
||
```
|
||
|
||
Now, configure your disk as seen [here](https://nixos.wiki/wiki/NixOS_Installation_Guide#Partitioning).
|
||
|
||
> [!NOTE]
|
||
> Just follow the partitioning and mounting steps, the other steps to install will be listed below.
|
||
|
||
### 1. Cloning the repository
|
||
|
||
With git installed, clone the repository with
|
||
|
||
```bash
|
||
git clone https://github.com/zackartz/nixos-dots.git && cd nixos-dots
|
||
```
|
||
|
||
### 2. Configuring the System
|
||
|
||
Generate your `hardware-configuration.nix` file.
|
||
|
||
```bash
|
||
sudo nixos-generate-config --root /mnt
|
||
```
|
||
|
||
You will now have two files in `/mnt/etc/nixos`. We will need `hardware-configuration.nix` and part of `configuration.nix`.
|
||
|
||
```bash
|
||
[nixos@live:~/nixos-dots]$ ls /mnt/etc/nixos/
|
||
configuration.nix hardware-configuration.nix
|
||
```
|
||
|
||
Go ahead and make a new folder for your pc inside of the `hosts` directory.
|
||
|
||
```bash
|
||
cd hosts && mkdir vm # change "vm" to your preferred hostname -- it MUST match the hostname you plan on using for scripts to work properly.
|
||
```
|
||
|
||
> [!TIP]
|
||
> You can use the "m" alias to create directories once you have booted into the installed system!
|
||
|
||
Now, copy the files over from `/mnt/etc/nixos/`.
|
||
|
||
```bash
|
||
cd vm && cp /mnt/etc/nixos/* . # remember to change "vm" to your hostname
|
||
mv configuration.nix config.old.nix # we will be writing our own configuration.nix
|
||
```
|
||
|
||
Now, make a new file: `configuration.nix`.
|
||
|
||
```bash
|
||
touch configuration.nix
|
||
```
|
||
|
||
Open up `configuration.nix` in your favorite editor and paste the following:
|
||
|
||
```nix
|
||
{
|
||
pkgs,
|
||
inputs,
|
||
...
|
||
}: {
|
||
imports = [
|
||
../common/default.nix
|
||
./hardware-configuration.nix
|
||
];
|
||
|
||
networking.hostName = "vm"; # Define your hostname.
|
||
|
||
programs.zsh.enable = true;
|
||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||
users.users.zack = {
|
||
isNormalUser = true;
|
||
description = "zack";
|
||
extraGroups = ["networkmanager" "wheel"];
|
||
shell = pkgs.zsh;
|
||
};
|
||
|
||
home-manager = {
|
||
extraSpecialArgs = {inherit inputs;};
|
||
users = {
|
||
"zack" = {
|
||
imports = [../../modules/home-manager/default.nix];
|
||
_module.args.theme = import ../../core/theme.nix;
|
||
|
||
home.username = "zack";
|
||
home.homeDirectory = "/home/zack";
|
||
};
|
||
};
|
||
};
|
||
}
|
||
```
|
||
|
||
Change the instances of `zack` to your desired username, and customize as you see fit!
|
||
|
||
We will need to copy some things over from `configuration.nix`, namely boot related options. I am doing this in a VM, so I see these boot related options. Find the `boot.loader` option, and copy it over from your old file into this new one.
|
||
|
||
```nix
|
||
# Use the GRUB 2 boot loader.
|
||
boot.loader.grub.enable = true;
|
||
# boot.loader.grub.efiSupport = true;
|
||
# boot.loader.grub.efiInstallAsRemovable = true;
|
||
# boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||
# Define on which hard drive you want to install Grub.
|
||
boot.loader.grub.device = "/dev/vda"; # the device to change
|
||
```
|
||
|
||
> [!WARNING]
|
||
> DO NOT COPY THIS CODE, THIS IS JUST AN EXAMPLE OF WHAT TO LOOK FOR
|
||
|
||
Make sure the device targets the correct drive for your EFI to be installed on.
|
||
|
||
Finally, add the following to `flake.nix` (somewhere around line 100).
|
||
|
||
```nix
|
||
nixosConfigurations.vm = nixpkgs.lib.nixosSystem {
|
||
specialArgs = {inherit inputs;};
|
||
modules = [
|
||
./hosts/vm/configuration.nix
|
||
inputs.home-manager.nixosModules.default
|
||
];
|
||
};
|
||
```
|
||
|
||
### 3. Installing the system
|
||
|
||
Now that you have the config ready to go, run the following command.
|
||
|
||
```bash
|
||
rm -rf .git # remove the github repository
|
||
sudo nixos-install --flake ~/nixos-dots#vm # again, remember to change vm to be your hostname
|
||
```
|
||
|
||
### 4. Post-Install configuration.
|
||
|
||
Set a password for your user:
|
||
|
||
```bash
|
||
sudo passwd zack # replace with your username
|
||
```
|
||
|
||
Copy the flake to your home folder
|
||
|
||
```bash
|
||
cp -r ~/nixos-dots /mnt/home/zack/nixos # replace "zack" with your username
|
||
```
|
||
|
||
Reboot the system and you're done! Enjoy the system!
|
||
|
||
> [!TIP]
|
||
> Check `./modules/shell/zsh/aliases.nix` for useful aliases, like "r" to rebuild your system!
|