Haven't updated these readme's in a long time..
This commit is contained in:
42
README.org
42
README.org
@@ -13,28 +13,15 @@ These are my dotfiles (configuration files) for my NixOS setup(s).
|
||||
Here is my main setup:
|
||||
[[desktop.png]]
|
||||
|
||||
** My Themes
|
||||
** Themes
|
||||
[[https://github.com/danth/stylix#readme][Stylix]] (and [[https://github.com/SenchoPens/base16.nix#readme][base16.nix]], of course) is amazing, allowing you to theme your entire system with base16-themes.
|
||||
|
||||
Using this I have [[./themes][59+ themes]] (I add more sometimes) I can switch between on-the-fly. Visit the [[./themes][themes directory]] for more info and screenshots!
|
||||
Using this I have [[./modules/themes][a lot of themes]] (I add more sometimes) I can switch between on-the-fly. Visit the [[./modules/themes][themes directory]] for more info and screenshots!
|
||||
|
||||
** Install
|
||||
I wrote some reinstall notes for myself [[./install.org][here (install.org)]].
|
||||
|
||||
TLDR: You should™ be able to install my dotfiles to a fresh NixOS system with the following experimental script:
|
||||
#+begin_src sh :noeval
|
||||
nix-shell -p git --command "nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config"
|
||||
#+end_src
|
||||
|
||||
Disclaimer: Ultimately, I can't gaurantee this will work for anyone other than myself, so /use this at your own discretion/. Also my dotfiles are /highly/ opinionated, which you will discover immediately if you try them out.
|
||||
|
||||
Potential Errors: I've only tested it working on UEFI with the default EFI mount point of =/boot=. I've added experimental legacy (BIOS) boot support, but it does rely on a quick and dirty script to find the grub device. If you are testing it using some weird boot configuration for whatever reason, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before install, or else it will complain about not being able to install the bootloader.
|
||||
|
||||
Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled.
|
||||
|
||||
Security Disclaimer: If you install or copy my =homelab= or =worklab= profiles, /CHANGE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/:
|
||||
- [[./profiles/homelab/configuration.nix][configuration.nix]] for homelab profile
|
||||
- [[./profiles/worklab/configuration.nix][configuration.nix]] for worklab profile
|
||||
Check them out if you'd like to try out my config in a VM or base your config on mine.
|
||||
|
||||
** Modules
|
||||
Separate Nix files can be imported as modules using an import block:
|
||||
@@ -47,11 +34,9 @@ imports = [ ./import1.nix
|
||||
|
||||
This conveniently allows configurations to be (*cough cough) /modular/ (ba dum, tssss).
|
||||
|
||||
I have my modules separated into two groups:
|
||||
- System-level - stored in the [[./system][system directory]]
|
||||
- System-level modules are imported into configuration.nix, which is what is sourced into [[./flake.nix][my flake (flake.nix)]]
|
||||
- User-level - stored in the [[./user][user directory]] (managed by home-manager)
|
||||
- User-level modules are imported into home.nix, which is also sourced into [[./flake.nix][my flake (flake.nix)]]
|
||||
I have my modules separated into three subdirectories:
|
||||
- System-level - stored in the [[./modules/system][system directory]]
|
||||
- User-level - stored in the [[./modules/user][user directory]]
|
||||
|
||||
More detailed information on these specific modules are in the [[./system][system directory]] and [[./user][user directory]] respectively.
|
||||
|
||||
@@ -75,8 +60,8 @@ Patches can either be local or remote, so you can even import unmerged pull requ
|
||||
|
||||
I currently curate patches local to this repo in the [[./patches][patches]] directory.
|
||||
|
||||
** Profiles
|
||||
I separate my configurations into [[./profiles][profiles]] (essentially system templates), i.e:
|
||||
** Hosts
|
||||
Configurations for all my machines are in [[./hosts][hosts]]:
|
||||
- [[./profiles/personal][Personal]] - What I would run on a personal laptop/desktop
|
||||
- [[./profiles/work][Work]] - What I would run on a work laptop/desktop (if they let me bring my own OS :P)
|
||||
- [[./profiles/homelab][Homelab]] - What I would run on a server or homelab
|
||||
@@ -90,15 +75,14 @@ More detailed information on these profiles is in the [[./profiles][profiles dir
|
||||
Some Nix commands are confusing, really long to type out, or require me to be in the directory with my dotfiles. To solve this, I wrote a [[./system/bin/phoenix.nix][wrapper script called phoenix]], which calls various scripts in the root of this directory.
|
||||
|
||||
TLDR:
|
||||
- =phoenix sync= - Synchronize system and home-manager state with config files (essentially =nixos-rebuild switch= + =home-manager switch=)
|
||||
- =phoenix sync system= - Only synchronize system state (essentially =nixos-rebuild switch=)
|
||||
- =phoenix sync user= - Only synchronize home-manager state (essentially =home-manager switch=)
|
||||
- =phoenix sync= - Synchronize system state with config
|
||||
- =phoenix build= - Build all host configurations and push results to attic (requires attic config to be setup)
|
||||
- =phoenix update= - Update all flake inputs without synchronizing system and home-manager states
|
||||
- =phoenix upgrade= - Update flake.lock and synchronize system and home-manager states (=phoenix update= + =phoenix sync=)
|
||||
- =phoenix update INPUT= - Update only the specified =INPUT= (see inputs in [[./flake.nix][flake.nix]])
|
||||
- =phoenix refresh= - Call synchronization posthooks (mainly to refresh stylix and some dependent daemons)
|
||||
- =phoenix pull= - Pull changes from upstream git and attempt to merge local changes (I use this to update systems other than my main system)
|
||||
- =phoenix harden= - Ensure that all "system-level" files cannot be edited by an unprivileged user
|
||||
- =phoenix soften= - Relax permissions so all dotfiles can be edited by a normal user (use temporarily for git or other operations)
|
||||
- =phoenix lock= - Ensure that all "system-level" files cannot be edited by an unprivileged user
|
||||
- =phoenix unlock= - Relax permissions so all dotfiles can be edited by a normal user (use temporarily for git or other operations)
|
||||
- =phoenix gc= - Garbage collect the system and user nix stores
|
||||
- =phoenix gc full= - Delete everything not currently in use
|
||||
- =phoenix gc 15d= - Delete everything older than 15 days
|
||||
|
Reference in New Issue
Block a user