diff options
author | Baitinq <manuelpalenzuelamerino@gmail.com> | 2023-02-06 16:17:25 +0100 |
---|---|---|
committer | Baitinq <manuelpalenzuelamerino@gmail.com> | 2023-03-13 13:15:40 +0100 |
commit | 038320824961c33c25d0a0c59844f792ee224471 (patch) | |
tree | c845418b1ea47577a670720412f7af4bc6bf5a04 | |
parent | Update (diff) | |
download | nixos-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.md | 59 | ||||
-rw-r--r-- | Documentation/PARTITIONING.md | 11 | ||||
-rw-r--r-- | Documentation/desktop_screenshot.png | bin | 0 -> 367768 bytes | |||
-rw-r--r-- | PARTITIONING.md | 9 | ||||
-rw-r--r-- | README.md | 93 |
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!** |