All Projects → Icy-Thought → Snowflake

Icy-Thought / Snowflake

Licence: MIT License
NixOS Flake Configuration.

Programming Languages

Nix
1067 projects
haskell
3896 projects
emacs lisp
2029 projects
lua
6591 projects
CSS
56736 projects
shell
77523 projects
Liquid
124 projects

Projects that are alternatives of or similar to Snowflake

dotfiles
dotfiles of my linux setup
Stars: ✭ 25 (+13.64%)
Mutual labels:  neovim, zathura, alacritty, picom
kali-config
Linux colorful dotfiles.
Stars: ✭ 40 (+81.82%)
Mutual labels:  rofi, alacritty, picom
dotfiles
Arch Linux DotFiles - Managed by GNU stow
Stars: ✭ 30 (+36.36%)
Mutual labels:  rofi, alacritty, picom
dotfiles
dotfiles repository
Stars: ✭ 15 (-31.82%)
Mutual labels:  xmonad, rofi, alacritty
dotfiles
Config files for i3, polybar, rofi, mpv, Xresources, kitty and some bash-things...
Stars: ✭ 52 (+136.36%)
Mutual labels:  neovim, rofi, picom
myconfig
my Linux Configuration
Stars: ✭ 23 (+4.55%)
Mutual labels:  nixos, xmonad
dotfiles
Dotfiles for my awesomewm/i3 Arch setup & neovim
Stars: ✭ 19 (-13.64%)
Mutual labels:  neovim, rofi
dotfiles
🏠 dotfiles for my macOS environment
Stars: ✭ 17 (-22.73%)
Mutual labels:  neovim, alacritty
dotfiles
files that start . and makes my Linux box awesome.
Stars: ✭ 57 (+159.09%)
Mutual labels:  zathura, picom
dotfiles
Dotfiles
Stars: ✭ 25 (+13.64%)
Mutual labels:  nixos, xmonad
pidswallow
A swallower script using process hierarchy.
Stars: ✭ 40 (+81.82%)
Mutual labels:  plasma, gnome
dotfiles
My awesomewm dotfiles for awesome people! ✨
Stars: ✭ 1,764 (+7918.18%)
Mutual labels:  rofi, picom
linux-workspace
This is the greatest management of all time
Stars: ✭ 19 (-13.64%)
Mutual labels:  rofi, picom
Singularis
My System Configuration ⚙️
Stars: ✭ 27 (+22.73%)
Mutual labels:  rofi, picom
flake-utils-plus
Use Nix flakes without any fluff.
Stars: ✭ 280 (+1172.73%)
Mutual labels:  nixos, nix-flakes
nixos-config
My NixOS configuration
Stars: ✭ 23 (+4.55%)
Mutual labels:  nixos, xmonad
nix-config
NixOS configuration (also on WSL)
Stars: ✭ 51 (+131.82%)
Mutual labels:  nixos, nix-flakes
arch-xmonad-setup
My configs
Stars: ✭ 14 (-36.36%)
Mutual labels:  xmonad, alacritty
gnome-hud
Unity like HUD menu for the GNOME Desktop Environment using rofi menu.
Stars: ✭ 111 (+404.55%)
Mutual labels:  gnome, rofi
axyl-iso
Axyl is a Linux distro centered on tiling window managers. Choose from i3, bspwm, dwm and more.
Stars: ✭ 348 (+1481.82%)
Mutual labels:  xmonad, leftwm

./assets/xmonad-desktop.png

Table of Contents

Introduction

A hamerspace containing a declarative NixOS environment consisting of many hand-crafted configurations, ranging from: Kitty, Alacritty, Doom-Emacs, Zathura to many other applications which can be found in the ./home directory.

WARNING: this repository, like other dotfile/configuration repositories, is subjected to change. Thus the reader ought to read through the commit history before blindly cloning, fetching or updating the necessary files required to power up their NixOS environment.

In this README I will attempt to explain how to replicate my NixOS setup or achieve similar feats. If you find this guide not as useful as it was designed to be, do submit an issue requesting a change for the specific sections you found to be confusing. Or submit a push request (PR) to this repository and hopefully we can produce better results together!

Throughout my Nix journey I’ve came across two interesting projects and among those projects are Nix-Flakes and Home-Manager, which will be introduced later in this README. These projects have been setup in such manner that allows its users to carefully tune their system environments to their liking!

One should note that this project is still in its early stages, henceforth one should familiarize themselves with the risks that comes with the usage of such experimental features.

Getting Started

Partitioning & Formatting

Here I advice you to follow to carefully written guide by the lovely NixOS members about partitions, how to setup your partitions & later format them to their desired file-systems.

WARNING

The following guide is written with nixos-gnome-21.05.1205.b72bde7c4a1-x86_64-linux.iso in mind, meaning that the attempt to install your Nix-Flake system from the LiveUSB won’t work. You should instead proceed with a minimal NixOS installation and later attempt to upgrade to your Nix-Flake system!

Nix-Channels

Setup your environment ot use the bleeding edge repository of NixOS and also add Home-Manager to your nix-channels:

sudo nix-channel --add https://nixos.org/channels/nixos-unstable nixos
sudo nix-channel --update

Minimal Installation Process

In nixos-gnome-21.05.1205.b72bde7c4a1-x86_64-linux.iso it’s unfortunately not possible to setup your flake based system without having Nix fail the installation process. Thus the user ought to install a minimal setup and later switch to their flake-based system after rebooting their minimal setup.

Mount & Create Required Dirs

sudo mount /dev/disk/by-label/nixos /mnt
sudo mkdir -p /mnt/boot
sudo mount /dev/disk/by-label/boot /mnt/boot

To prevent future crashes throughout the installation process, enable your newly created swap partition:

sudo swapon /dev/sdX

Prepare System Environment for Nix-Flake

Don’t forget to append the following lines of code to your configuration.nix:

nix.package = pkgs.nixUnstable;
nix.extraOptions = ''
  experimental-features = nix-command flakes
'';

Nix-Flake: Beginning of a Journey

The reader should keep in mind that this guide documents how to replicate my personal setup and thus the reader ought to know that modules/nixos/default.nix have been specifically modified to use my system passwords. To change the hashed passwords, replace the users.hashedPassword with the hashedPassword generated through mkpasswd -m sha-512.

Git Clone Snowflake && ln -s Nix-Files To Correct Dir

git clone your desired repository and because this guide is written with my personal flake repository in mind:

git clone https://github.com/Icy-Thought/Snowflake.git

Backup the contents of your current /etc/nixos directory, you’ll need your auto-generated hardware-configuration.nix file to later input in modules/hardware.

I prefer to keep my configurations inside my git repository for easier management, but you are free to do whatever you deem saner in the following installation process:

cd Snowflake
sudo ln -s flake.nix /etc/nixos
sudo ln -s flake.lock /etc/nixos

Replacing Necessary Configuration Entries

Create Your hosts Dir

Create a directory inside the hosts with the name of the desired hostname for that device; let’s call this directory X.

mkdir -p hosts/X

Now create a default.nix file inside that folder and for the sake of speeding the process up, I suggest you copy over my thinkpad-e595/default.nix to your directory (X) and later customize it to your liking.

cd hosts && cp thinkpad-e595/default.nix X

Hardware-Configuration.nix

Place your newly generated hardware-configuration.nix inside your hosts/X and make sure to import your hardware-configuration.nix in the default.nix file of your device folder.

import = [ ./hardware-configuration.nix ];

Hide Your File-System From Nautilus & Dolphin

By default, Nautilus & Dolphin does not hide system partitions from mounted devices category. Since this has not been the experience I have been accustomed to, I have chosen to hide those partitions from the mounted devices category of those file managers. I have also added several kernel parameters and other specific configurations for my setup in this repository, which you can find in my default.nix file.

What you are required to edit is:

  1. fileSystems entries in default.nix.
  2. The specific parts which you wish to exclude from your setup, such as: kernel parameters, modules to disable, packages to be installed among other configurations.
fileSystems."/boot" = {
  device = "/dev/disk/by-label/boot";
  fsType = "vfat";
  options = [ "x-gvfs-hide" ]; # For hiding boot partition entry in Nautilus.
};

Installing Nix-Flake System

After completing your setup, there remains one command to be executed (device = folder name of your device placed inside hosts, which in this case is X:

sudo nixos-rebuild switch --flake '/etc/nixos#X --impure
reboot

Doom Emacs

If you have replicated my setup, you need to do nothing but git clone doom-emacs repository and enable the emacs module in your X/default.nix:

modules.desktop.txtEditor.emacs.enable = true;

To proceed with the installation of doom-emacs on your newly installed/configured nix-flake system:

git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install

Congratulations! 🎉

You have successful installed your/my personally hand-crafted/replicated Nix-Flake environment. I hope it suits your needs, if not then you are always welcome to propose changes or fork the project and customize the repository to your heart’s content!

Useful Links

  • NixOS Manual: A manual for the newcomer to read and understand different parts of the NixOS distribution.
  • Home-Manager: Helps you manage your ~/home related configurations.
  • Nix Pills: A series written to familiarize the user with the Nix programming language.
  • Nixpkgs Unstable: A manual which introduces the Nix-language to people unfamiliar with the wonders of this language.
  • Nix Flake MVP: A written Nix guide by edolstra.
  • A Tour of Nix: a beautifully crafted introduction into the Nix programming language.

Special Thanks

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].