Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zackartz/nixos-dots
my personal nixos dotfiles c:
https://github.com/zackartz/nixos-dots
dotfiles home-manager hyprland kitty linux neovim nix nixos nvim snowfall tmux
Last synced: 8 days ago
JSON representation
my personal nixos dotfiles c:
- Host: GitHub
- URL: https://github.com/zackartz/nixos-dots
- Owner: zackartz
- Created: 2023-01-27T08:17:01.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-30T00:23:50.000Z (20 days ago)
- Last Synced: 2024-10-30T02:50:16.681Z (20 days ago)
- Topics: dotfiles, home-manager, hyprland, kitty, linux, neovim, nix, nixos, nvim, snowfall, tmux
- Language: Nix
- Homepage:
- Size: 16.6 MB
- Stars: 11
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# zack's nixos dotfiles
![image](https://github.com/zackartz/nixos-dots/assets/34588810/0f4c85c2-f9e8-4de3-89c1-0a95c0ab681f)
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 :)
## Installation Instructions
### Step 0: Install NixOS Normally
Grab the [nixos iso](https://nixos.org/download/) and install nixos on to your computer using the graphical installer.
> [!WARNING]
> You can choose whatever desktop environment you want, but make sure the username you choose is the one you will want to continue with!> [!TIP]
> You can use [nixos anywhere](https://github.com/nix-community/nixos-anywhere) to install your config to other systems (or like, a server) via ssh once you have your desktop installed :)### Step 1: Enable Flakes and the Nix command
Right now the configuration you installed resides in `/etc/nixos/configuration.nix`, we want to edit that file to enable the `nix` command and the Flake feature. Simply add this line to that file:
```nix
nix.settings.experimental-features = [ "nix-command" "flakes" ];
```After this is done, go ahead and run `sudo nixos-rebuild switch`.
### Step 2: Cloning the Github Repo
Go ahead and create a nix shell with git with the following:
```bash
nix shell nixpkgs#git
git clone https://github.com/zackartz/nixos-dots.git nixos
```> [!WARNING]
> Various scripts expect your local config to be at `~/nixos`, by changing the `FLAKE` sessionVariable in `modules/home/shells/zsh/default.nix` you can choose a different path.### Step 3: Adding a new `system` and `home`
This config is built with [home-manager](https://github.com/nix-community/home-manager), which allows us to declare config files in our home directory and install user-specific applications.
With this, it also uses [snowfall](https://github.com/snowfallorg/lib) which is a directory-oriented opinionated way of structuring your flake, files added to `systems` or `homes` get picked up and auto exported from our flake, and anything in `lib`, `packages`, or `overlays` are exported and automatically shared within our flake.
Let's start with the `system`.
Create a new file in `systems/x86_64-linux//default.nix` with the following contents.
```nix
{
pkgs,
lib,
system,
inputs,
config,
...
}: {
imports = [./hardware-configuration.nix];hardware.audio.enable = true;
hardware.nvidia.enable = false; # Enable if you have a nvidia GPU
ui.fonts.enable = true;protocols.wayland.enable = true;
services.fstrim.enable = true; # Optional, improve SSD lifespan
services.xserver.enable = true; # Optional, but recommended (allows XWayland to work)
services.gnome.gnome-keyring.enable = true;# Bootloader.
boot.loader.systemd-boot.enable = lib.mkForce false;
boot.lanzaboote = {
enable = true;
pkiBundle = "/etc/secureboot";
};
boot.loader.efi.canTouchEfiVariables = true;networking.hostName = "earth"; # Define your hostname. MUST BE THE SAME AS THE HOSTNAME YOU SPECIFIED EARLIER!!!
# services.openssh = {
# enable = true;
# PasswordAuthentication = true;
# };time.timeZone = "America/Detroit"; # Change to your TZ
programs.zsh.enable = true;
# REMEMBER TO CHANGE TO YOUR USERNAME
users.users.zoey = {
isNormalUser = true;
description = "zoey";
extraGroups = ["networkmanager" "wheel"];
shell = pkgs.zsh;
};# CHANGE USERNAME HERE TOO
snowfallorg.users.zoey = {
create = true;
admin = false;home = {
enable = true;
};
};catppuccin.enable = true; # If you want your TTY to be catppuccin too haha
}
```One note, change the `# Bootloader` section to what is currently in `/etc/nixos/configuration.nix` so that the bootloader config stays the same.
Nice! We're also going to need the `hardware-configuration.nix` for your system, copy that file from `/etc/nixos/hardware-configuration.nix` so it sits alongside the `default.nix` file.
Now, lets add a file to define your home. Create a file at `homes/x86_64-linux/@/default.nix`.
```nix
{
inputs,
pkgs,
system,
lib,
...
}: {
wms.hyprland.enable = true; # Hyprland is the only fully-supported window manager in my config atm.
apps = {
web.librewolf.enable = true; # can also use firefox
web.librewolf.setDefault = true;tools.git.enable = true;
tools.tmux.enable = true;
tools.neovim.enable = true;
tools.skim.enable = true;
tools.starship.enable = true;
tools.direnv.enable = true;
tools.tealdeer.enable = true;
tools.bat.enable = true;tools.gh.enable = true;
term.kitty.enable = true;
music.spotify.enable = true; # disable if you don't use spotify
helpers = {
anyrun.enable = true;
ags.enable = true;
};
};shells.zsh.enable = true;
rice.gtk.enable = true;
services.lock.enable = true;
xdg.enable = true;
programs = {
gpg.enable = true;
man.enable = true;
eza.enable = true;
dircolors = {
enable = true;
enableZshIntegration = true;
};
};catppuccin.enable = true;
catppuccin.flavor = "macchiato";
catppuccin.accent = "pink";# Add any packages you want in your path here!
home.packages = [
pkgs.ungoogled-chromiumpkgs.postman
pkgs.moshpkgs.dconf
pkgs.wl-clipboard
pkgs.pavucontrol
pkgs.wlogout
pkgs.sway-audio-idle-inhibit
pkgs.grim
pkgs.slurppkgs.xfce.thunar
pkgs.feh
pkgs.nitch
pkgs.nix-output-monitorpkgs.nh
pkgs.dwlpkgs.custom.rebuild
pkgs.custom.powermenu
];programs.zoxide = {
enable = true;
enableZshIntegration = true;
options = ["--cmd cd"];
};programs.cava.enable = true;
programs.btop = {
enable = true;
extraConfig = ''
update_ms = 100
vim_keys = true
'';
};programs.lazygit.enable = true;
programs.fzf.enable = true;systemd.user.services.xwaylandvideobridge = {
Unit = {
Description = "Tool to make it easy to stream wayland windows and screens to exisiting applications running under Xwayland";
};
Service = {
Type = "simple";
ExecStart = lib.getExe pkgs.xwaylandvideobridge;
Restart = "on-failure";
};
Install = {
WantedBy = ["default.target"];
};
};services = {
gpg-agent = {
enable = true;
pinentryPackage = lib.mkForce pkgs.pinentry-gnome3;
enableSshSupport = true;
enableZshIntegration = true;
};
};
}
```This is a pretty minimal config, (with some neat applications), but feel free to disable any you don't want or need!
### Step 4: Installing the config
Once you have all that, run these two commands to install and build the config!
```bash
git add -A # add the new files you created
sudo nixos-rebuild switch --flake ~/nixos# # replace the ~/nixos with the location of the config if you changed it.
```Go ahead and reboot and you should be in the new config, tada!