Go to file
Krutonium 366cfde3e8 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/d78b3488a76d251701ab58a9b7f0dd092b806c1e' (2022-11-03)
  → 'github:nix-community/home-manager/87d55517f6f36aa1afbd7a4a064869d5a1d405b8' (2022-11-05)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4f09cfce9c1d54fb56b65125061a632849de1a49' (2022-11-02)
  → 'github:NixOS/nixpkgs/f09ad462c5a121d0239fde645aacb2221553a217' (2022-11-05)
• Updated input 'nur':
    'github:nix-community/NUR/4ba94501ae89dab8b72c8f75a68fe47fa99abd1a' (2022-11-05)
  → 'github:nix-community/NUR/5e449d79b993809893d260e98fb8df1bb6b9ec98' (2022-11-06)
• Updated input 'pkgs-unstable':
    'github:NixOS/nixpkgs/a2a777538d971c6b01c6e54af89ddd6567c055e8' (2022-11-03)
  → 'github:NixOS/nixpkgs/3bacde6273b09a21a8ccfba15586fb165078fb62' (2022-11-05)
2022-11-06 02:47:36 -05:00
bootloaders deploy 2022-09-25 15:00:03 -04:00
desktops deploy 2022-11-03 19:55:41 -04:00
devices Switch server to main config with HM off 2022-11-01 18:26:56 -04:00
packages Hash for WindozeXP 2022-10-25 18:09:43 -04:00
services deploy 2022-10-28 08:39:22 -04:00
tweaks deploy 2022-10-05 02:03:14 -04:00
user-envs deploy 2022-10-05 02:03:14 -04:00
users deploy 2022-11-03 13:59:30 -04:00
.gitignore Changed Stuff 2022-03-12 22:46:44 -05:00
README.md Update README.md 2022-10-09 23:33:49 -04:00
common.nix deploy 2022-11-01 06:25:49 -04:00
flake.lock flake.lock: Update 2022-11-06 02:47:36 -05:00
flake.nix Fixed URL? 2022-10-24 01:35:18 -04:00
flake_colmena.nix deploy 2022-05-08 17:10:09 -04:00
targets.json deploy 2022-09-25 14:50:41 -04:00

README.md

Krutonium's NixOS Config

Hey, Welcome to the repo. Heres' what you need to know:

The architecture of this repo is pretty simple (but also not) and can change as needed. This document is not gospel.

Architecture

When applying the system, everything starts in flake.nix. In here, each possible device is defined with as little as possible, configuring Home Manager if desired for that host, and further adding in packages and repos I desire, Namely some of my own projects like deploy-cs, the NUR, or nixos-unstable.

Each system references common.nix which has settings that each device should have at a system level - If it's reasonable, and I want them all to have it, it goes in common, things like the bpy command, which is a good replacement for htop.

From there, each one will reference it's /devices/<device-name>.nix file which sets up device specific configuration. For example, pulling in /users/<username>/user.nix which itself does futher configuration of home manager if desired, as well as installing the applications I want installed for that user. It also handles things like configuring my Gnome Desktop Environment.

Services live in /services/ and one off packaging of things like themes and scripts go in /packages/, and these are both directly referenced by the device-name.nix file to configure devices as specifically as desired. For example, /services/nginx.nix is only referenced from uWebServer.nix.

Hardware definitions for each computer exist in /devices/hardware-configurations/<device-name.nix> and are considered temporary at best, by which I mean on subsequent re-installs of the OS, they may be completely replaced without notice.

Updating

I use my own update solution that lives on uWebServer called deploy-cs paired with a script in packages/scripts.nix that enables updating to be done via just typing update on uWebServer, and on any client device by typing the same when off LAN.

It will automatically update the flakelock file, commit, pull, and push the git repo, syncronizing it with the remote, since it can be edited from anywhere. It will then check which hosts are online, download the relevant packages, connect over SSH, push the files to the system, and activate the configuration.

Useful Commands:

update updates the local system, and all others if on LAN. Intended to be used on uWebServer
resetConfig deletes the repo and then redownloads and configures it
pushConfig pushes the current config to the repo