about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBaitinq <manuelpalenzuelamerino@gmail.com>2023-02-06 16:17:25 +0100
committerBaitinq <manuelpalenzuelamerino@gmail.com>2023-03-13 13:15:40 +0100
commit038320824961c33c25d0a0c59844f792ee224471 (patch)
treec845418b1ea47577a670720412f7af4bc6bf5a04
parentUpdate (diff)
downloadnixos-config-new_readme.tar.gz
nixos-config-new_readme.tar.bz2
nixos-config-new_readme.zip
Misc: Update README and documentation new_readme
Now it should be more user friendly, hopefully making it easier to
install.
-rw-r--r--Documentation/INSTALLING.md59
-rw-r--r--Documentation/PARTITIONING.md11
-rw-r--r--Documentation/desktop_screenshot.pngbin0 -> 367768 bytes
-rw-r--r--PARTITIONING.md9
-rw-r--r--README.md93
5 files changed, 123 insertions, 49 deletions
diff --git a/Documentation/INSTALLING.md b/Documentation/INSTALLING.md
new file mode 100644
index 0000000..880845a
--- /dev/null
+++ b/Documentation/INSTALLING.md
@@ -0,0 +1,59 @@
+# Installing
+
+My NixOS configuration is modular by design. In practice, this means that you can build a NixOS configuration for your own machine by selecting any combination of these 3 variables:
+
+---
+`$HOST` -> this refers to the host-specific configuration (packages, services, etc). This loads the host-specific configuration from `/hosts/$HOST/default.nix`
+
+`$HARDWARE` -> this refers to the hardware-specific configuration (disks, kernel, boot, etc). This loads the hardware-specific configuration from `/hosts/$HOST/default.nix`
+
+`$ARCH` -> this refers to the architecture of the configuration (x86_64-linux, aarch64-darwin, etc). This sets the architecture to use for the packages.
+
+---
+
+An example complete configuration could be: `phobos-laptop-x86_64-linux` [This is my personal laptop configuration :)]
+
+All these variables are declared in the `flake.nix` and can be added/removed to fit your needs.
+
+
+# Installation Steps
+Make sure you're in the `nixos-config` folder and have followed (if necessary) the [partitioning steps](PARTITIONING.md) :)
+## NixOS-Based Intallation
+### Installing
+
+```
+$ nixos-install --flake . #$HOST-$HARDWARE-$ARCH
+```
+
+### Updating
+
+```
+$ nix flake update
+
+$ nixos-rebuild switch --flake . #$HOST-$HARDWARE-$ARCH
+```
+
+## Non-Nixos-Based Installation
+### Installing
+```
+$ nix build .#homeManagerConfigurations.$HOST-$HARDWARE-$ARCH.activationPackage
+$ ./result/activate
+```
+
+### Updating
+```
+$ nix flake update
+
+$ home-manager switch --flake .#$HOST-$HARDWARE-$ARCH
+```
+
+## ISO
+### Building
+```
+$ nix build .#isoConfigurations.$HOST-$HARDWARE-$ARCH.config.system.build.isoImage
+```
+
+## Deploying
+```
+# deploy -s .#$HOST-$HARDWARE-$ARCH --hostname $TARGET_IP
+```
diff --git a/Documentation/PARTITIONING.md b/Documentation/PARTITIONING.md
new file mode 100644
index 0000000..09bc492
--- /dev/null
+++ b/Documentation/PARTITIONING.md
@@ -0,0 +1,11 @@
+# Partitioning & Mounting
+My NixOS configuration has some extra helpers for partitioning and mounting :)
+
+These scripts live in your specific `hardware/$HARDWARE/disks.nix` (Which should be customized to fit your specific configuration).
+
+### Creating disks
+`nix run .#nixosConfigurations.$HOST-$HARDWARE-$ARCH.config.disks-create`
+### Formatting disks
+`nix run .#nixosConfigurations.$HOST-$HARDWARE-$ARCH.config.disks-format`
+### Mounting disks
+`nix run .#nixosConfigurations.$HOST-$HARDWARE-$ARCH.config.disks-mount`
diff --git a/Documentation/desktop_screenshot.png b/Documentation/desktop_screenshot.png
new file mode 100644
index 0000000..ceca4ba
--- /dev/null
+++ b/Documentation/desktop_screenshot.png
Binary files differdiff --git a/PARTITIONING.md b/PARTITIONING.md
deleted file mode 100644
index 3b1b14f..0000000
--- a/PARTITIONING.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Partition and mount disks
-```
-nix run .#nixosConfigurations.$HOST-$HARDWARE-$ARCH.config.disks-create
-nix run .#nixosConfigurations.$HOST-$HARDWARE-$ARCH.config.disks-format
-nix run .#nixosConfigurations.$HOST-$HARDWARE-$ARCH.config.disks-mount
-```
-
-# Install nixos
-nixos-install --flake .#HOST
diff --git a/README.md b/README.md
index 46e5497..5d9d6d9 100644
--- a/README.md
+++ b/README.md
@@ -1,43 +1,56 @@
 # NIX Config
-My Personal NixOS Flake.
-  
-
-# NixOS
-## Installing
-
-```
-nixos-install --flake . #$HOST-$HARDWARE-$ARCH
-```
-
-## Updating
-
-```
-nix flake update
-
-nixos-rebuild switch --flake . #$HOST-$HARDWARE-$ARCH
-```
-
-# Non-Nixos
-## Installing
-```
-nix build .#homeManagerConfigurations.$HOST-$HARDWARE-$ARCH.activationPackage
-./result/activate
-```
-
-## Updating
-```
-nix flake update
+My current (and everchanging) NixOS configuration Flake.
 
-home-manager switch --flake .#$HOST-$HARDWARE-$ARCH
-```
 
-# ISO
-## Building
-```
-nix build .#isoConfigurations.$HOST-$HARDWARE-$ARCH.config.system.build.isoImage
-```
-
-# Deploying
-```
-# deploy -s .#$HOST-$HARDWARE-$ARCH --hostname $TARGET_IP
-```
+![NixOS Configuration Image](./Documentation/desktop_screenshot.png)
+  
+## Installation
+Installation steps are in [Documentation/INSTALLING.md](./Documentation/INSTALLING.md)
+
+## Highlights
+* Multiple NixOS configurations, including desktop, laptop, and VM
+* Install and partitioning scripts
+* **Impermanence**
+* Encrypted **BTRFS** partitions
+* Secrets using **git-crypt**
+* Network-deployable through **deploy-rs**
+* Modularized configuration
+* Wayland (*river*) and XOrg (*dwm*) desktops
+
+## Structure
+Here is an overview of the repos' structure:
+```
+.
+├── flake.nix
+├── flake.lock
+├── modules
+├── overlays
+├── packages
+├── secrets
+├── dotfiles
+├── hosts
+│  ├── default.nix
+│  ├── configuration.nix
+│  ├── home.nix
+│  ├── luna
+│  └── phobos
+│     ├── default.nix
+│     └── home.nix
+└── hardware
+   ├── laptop
+   ├── chromebook
+   ├── virtualbox
+   └── thinkpad
+      ├── default.nix
+      ├── disks.nix
+      └── hardware.nix
+```
+* `modules`: encapsulated NixOS modules used in parts of the config
+* `overlays`: nixpkgs overlays used in the config
+* `packages`: extra packages used in the config
+* `secrets`: git-crypt encrypted secrets used in the config
+* `dotfiles`: actual dotfiles used in the config
+* `hosts`: the host-specific config. Contains folders representing each host with their own specific config
+* `hardware`: the hardware-specific config (eg. Disks & Partitions). Contains folders representing each hardware
+
+**This configuration was made to be modular and customizable; don't hesistate to adopt it and make it YOURS!**