#+title: Flake Readme #+author: Zonsopkomst #+date: 2022-11-30 * My NixOS Configuraton File This is my NixOS setup to manage multiple computers with a home-manager config structure using nix flakes. ** Current Desktop Screenshots: *** Gnome #+caption: Gnome #+attr_org: :width 200 [[Gnome][https://git.disroot.org/Zonsopkomst/flake/raw/branch/working/reference/assets/20231102NixOSTyr3.png]] ** Emacs #+caption: Emacs #+attr_org: :width 200 [[Gnome][https://git.disroot.org/Zonsopkomst/flake/raw/branch/working/reference/assets/20231102NixOSTyr.png]] ** Highlights: *** Multiple NixOS configurations: desktop, laptop, and hopefully a test server and eventually a full transition over from my Ubuntu server. ** How to: #+caption: South Park #+attr_org: :width 500 [[Process][https://git.disroot.org/Zonsopkomst/flake/raw/branch/working/reference/assets/underpants-gnomes.png]] 1. NixOS Installation 1. Install NixOS on a computer using the default Gnome installer from [https://nixos.org/download.html]. 1. Clone this repository [https://git.disroot.org/zonsopkomst] in the `/home// directory. 1. Update the subdirectories in `hosts` and `users`. 1. Copy the `configuration.nix` and `hardware-configuration.nix` files from the `/etc/nixos` directory and move them to `hosts/PLACE(local OR remote)/NEW_PC_NAME`. 1. Rename `configuration.nix` to `default.nix` and, update `flake.nix` located in the top directory, link the appropriate modules to be used. 2. Segment out items from new `default.nix` to appropriate `.nix` files. 3. Make sure the correct version of NixOS is listed in the appropriate files. 2. `flake.nix` is where `.nix` files are imported with further instructions on declared packages and modules. 1. Declare packages either globally under `/hosts//hostname/packages.nix` or `/users//home-manager.nix`. 3. Rebuild NixOS *( must be include the first time rebuilding, after the first rebuild, .# can be used and the system will know which hostname is to be used)* 1. `nix flake --update && nixos-rebuild switch --flake .#` 4. Push the updated git files to the repository so that they can be pulled, and the system rebuilt during the next update. *** Maintenance 1. See `/config/.bashrc` for `alias`: `flkup` using `sudo nixos-rebuild switch --flake .#` commands and other useful items *** Sources **** Nix Flakes: [https://nixos.wiki/wiki/Flakes] **** home-manager: [https://github.com/nix-community/home-manager] ***** Home Manager as a NixOS Module: [https://nix-community.github.io/home-manager/index.html#sec-flakes-nixos-module] ** Structure | Directory | What is it for? | | common | Shared configurations and modules | | config | Config files that are managed by NixOS | | desktop | Shared desktop configs | | display | Login Display managers | | hosts | The PCs deployed | | reference | Package list, git assets, notes, etc. | | users | Individual User configs | | flake.nix & flake.lock | Declared configuration using the above directories & configs | ** Hosts | Hostname | Model | Type | RAM | Processor | Main Use | | weda | Dell Inspiron 15 | Laptop | 16GB | AMD Ryzen 5 (Cezanne) | Business | | frija | Acer Aspire 3 | Laptop | 4GB | AMD A9 | Testing | | tyr | Intel i5 | Desktop | 16GB | Intel i5 | Media | | tii | Dell Lattitude 5511 | Laptop | 16GB | Intel i5 Quad (i5-10400H) | Remote | | tuisto | AMD Ryzen 5 | Desktop | 16GB | AMD Ryzen 5 (Renoir) | Remote | | sintanne | Intel i5 | Desktop | 16GB | Intel i5-11320H | Remote | | thuner | AMD Ryzen 5 | Server | ??GB | AMD 2200G | Test Server | | fryslan (Ubuntu) | AMD Ryzen 5 | Server | ??GB | AMD 2200G | Main Server |