diff --git a/README.org b/README.org index cad7e65..04af749 100644 --- a/README.org +++ b/README.org @@ -5,54 +5,30 @@ [[https://github.com/librephoenix/nixos-config-mirror][Mirror Repo Link (GitHub)]] -* What is this repository? +** What is this repository? These are my dotfiles (configuration files) for my NixOS setup(s). Here is my main setup: [[themes/ayu-dark/ayu-dark.png]] -* Notes for Myself -To get this running on a NixOS system, I will start by cloning the repo: -#+BEGIN_SRC sh :noeval -git clone https://gitlab.com/librephoenix/nixos-config.git /path/to/my/config/folder +** Install +I wrote some reinstall notes for myself [[./install.org][here (install.org)]]. + +** Modules +Separate Nix files can be imported as modules using an import block: +#+BEGIN_SRC nix +imports = [ import1.nix + import2.nix + ... + ]; #+END_SRC -To get the hardware configuration on a new system, I can other copy from =/etc/nixos/hardware-configuration.nix= or run: -#+BEGIN_SRC sh :noeval -sudo nixos-generate-config --dir /dotfiles/path/system -#+END_SRC +This conveniently allows configurations to be separated and swapped around quickly. -Then, I can switch into the system configuration by running: -#+BEGIN_SRC sh :noeval -cd /dotfiles/path -sudo nixos-rebuild switch --flake .#snowfire -#+END_SRC +I have my modules separated into two groups: +- System-level - stored in the [[./system][system directory]] + - System-level modules are imported into [[./system/configuration.nix][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 [[./user/home.nix][home.nix]], which is also sourced into [[./flake.nix][my flake (flake.nix)]] -Home manager can be installed with: -#+BEGIN_SRC sh :noeval -nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager -nix-channel --update -nix-shell '' -A install -#+END_SRC - -If home-manager starts to not cooperate, it may be because the unstable branch of nixpkgs is in the Nix channel list. This can be fixed via: -#+BEGIN_SRC sh :noeval -nix-channel --add https://nixos.org/channels/nixpkgs-unstable -#+END_SRC - -Home-manager may also not work without re-logging back in after it has been installed. - -Once home-manager is running, my home-manager configuration can be installed with: -#+BEGIN_SRC sh :noeval -home-manager switch --flake .#emmet -#+END_SRC - -This loads in my convenience script =phoenix=, which replaces frequently used nix and nixos commands with more user friendly ones, namely: -- =phoenix sync= to build and switch system and home configuration - - =phoenix sync system= to build and switch only system configuration - - =phoenix sync user= to build and switch only home configuration -- =phoenix update= to update flake inputs -- =phoenix gc= to garbage collect - - If no argument is given, it cleans anything older than 30 days - - If a time argument is supplied (i.e. 10d), it cleans stuff older than that (10 days in this example) - - If the argument =full= is given, it deletes /all/ previous generations +More detailed information on these specific modules are in the [[./system][system directory]] and [[./user][user directory]] respectively. diff --git a/flake.nix b/flake.nix index 4ca4882..96ebf45 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "No, I don't understand how this works, so please don't ask"; + description = "Flake of LibrePhoenix"; inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; @@ -59,8 +59,6 @@ myHomeDir = "/home/"+name; myEmail = email; myDotfilesDir = dotfilesDir; - myNixConfigurationFilePath = dotfilesDir+"/system/configuration.nix"; - myHomeManagerFilePath = dotfilesDir+"/user/home.nix"; myTheme = theme; myThemePolarity = themePolarity; myBackgroundUrl = backgroundUrl; diff --git a/install.org b/install.org new file mode 100644 index 0000000..52e914a --- /dev/null +++ b/install.org @@ -0,0 +1,50 @@ +#+title: Install +#+author: Emmet + +These are just some simple install notes for myself (in-case I have to reinstall unexpectedly). + +** Install Notes for Myself +To get this running on a NixOS system, I will start by cloning the repo: +#+BEGIN_SRC sh :noeval +git clone https://gitlab.com/librephoenix/nixos-config.git /path/to/my/config/folder +#+END_SRC + +To get the hardware configuration on a new system, I can other copy from =/etc/nixos/hardware-configuration.nix= or run: +#+BEGIN_SRC sh :noeval +sudo nixos-generate-config --dir /dotfiles/path/system +#+END_SRC + +Then, I can switch into the system configuration by running: +#+BEGIN_SRC sh :noeval +cd /dotfiles/path +sudo nixos-rebuild switch --flake .#snowfire +#+END_SRC + +Home manager can be installed with: +#+BEGIN_SRC sh :noeval +nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager +nix-channel --update +nix-shell '' -A install +#+END_SRC + +If home-manager starts to not cooperate, it may be because the unstable branch of nixpkgs is in the Nix channel list. This can be fixed via: +#+BEGIN_SRC sh :noeval +nix-channel --add https://nixos.org/channels/nixpkgs-unstable +#+END_SRC + +Home-manager may also not work without re-logging back in after it has been installed. + +Once home-manager is running, my home-manager configuration can be installed with: +#+BEGIN_SRC sh :noeval +home-manager switch --flake .#emmet +#+END_SRC + +This loads in my convenience script =phoenix=, which replaces frequently used nix and nixos commands with more user friendly ones, namely: +- =phoenix sync= to build and switch system and home configuration + - =phoenix sync system= to build and switch only system configuration + - =phoenix sync user= to build and switch only home configuration +- =phoenix update= to update flake inputs +- =phoenix gc= to garbage collect + - If no argument is given, it cleans anything older than 30 days + - If a time argument is supplied (i.e. 10d), it cleans stuff older than that (10 days in this example) + - If the argument =full= is given, it deletes /all/ previous generations diff --git a/system/README.org b/system/README.org new file mode 100644 index 0000000..12fcebf --- /dev/null +++ b/system/README.org @@ -0,0 +1,23 @@ +#+title: System-level Nix Modules +#+author: Emmet + +** System-level Nix Modules +Separate Nix files can be imported as modules using an import block: +#+BEGIN_SRC nix +imports = [ import1.nix + import2.nix + ... + ]; +#+END_SRC + +My system-level Nix modules are organized into this directory: +- [[./hardware-configuration.nix][hardware-configuration]] - Default hardware config generated for my system +- [[./style][style]] - Stylix setup (system-wide base16 theme generation) - Currently broken and needs fixing; last time I tried it doesn't work nicely with home-manager stylix at the same time + +** Variables imported from flake.nix +Variables can be imported from [[../flake.nix][flake.nix]] by setting the =specialArgs= block inside the flake (see [[../flake.nix][my flake]] for more details). This allows variables to merely be managed in one place ([[../flake.nix][flake.nix]]) rather than having to manage them in multiple locations. + +I currently import the following variables to the system config: +- =myTheme= - base16 theme stored in ../themes to be used +- =myBackgroundUrl= - Direct link to background wallpaper (used for login screen) +- =myBackgroundSha256= - Checksum for background image used when downloading diff --git a/user/README.org b/user/README.org new file mode 100644 index 0000000..e3aa4ed --- /dev/null +++ b/user/README.org @@ -0,0 +1,52 @@ +#+title: User-level Nix Modules +#+author: Emmet + +** User-level Nix Modules +Separate Nix files can be imported as modules using an import block: +#+BEGIN_SRC nix +imports = [ import1.nix + import2.nix + ... + ]; +#+END_SRC + +My user-level Nix modules are organized into this directory: +- [[./app][app]] - Apps or collections of apps bundled with my configs + - [[./app/browser][browser]] - Used to set default browser + - [[./app/dmenu-scripts][dmenu-scripts]] + - [[./app/doom-emacs][doom-emacs]] + - [[./app/flatpak][flatpak]] - Installs flatpak as a utility (flatpaks must be installed manually) + - [[./app/games][games]] - Gaming setup + - [[./app/git][git]] + - [[./app/keepass][keepass]] + - [[./app/ranger][ranger]] + - [[./app/terminal][terminal]] - Configuration for terminal emulators + - [[./app/virtualization][virtualization]] - Virtualization and compatability layers +- [[./bin][bin]] - My own scripts + - [[./bin/phoenix.nix][phoenix]] - My nix command wrapper +- [[./lang][lang]] - Various bundled programming languages + - I will probably get rid of this in favor of a shell.nix for every project, once I learn how that works +- [[./pkgs][pkgs]] - "Package builds" for packages not in the Nix repositories + - [[./pkgs/pokemon-colorscripts.nix][pokemon-colorscripts]] + - [[./pkgs/rogauracore.nix][rogauracore]] - not working yet + - [[./pkgs/ytsub.nix][ytsub]] +- [[./shell][shell]] - My default bash and zsh configs + - [[./shell/sh.nix][sh]] - bash and zsh configs + - [[./shell/cli-collection.nix][cli-collection]] - Curated useful CLI utilities +- [[./style][style]] - Stylix setup (system-wide base16 theme generation) +- [[./wm][wm]] - Window manager, compositor, and/or wayland compositor setups + - [[./wm/xmonad][xmonad]] + - [[./wm/picom][picom]] + +** Variables imported from flake.nix +Variables can be imported from [[../flake.nix][flake.nix]] by setting the =extraSpecialArgs= block inside the flake (see [[../flake.nix][my flake]] for more details). This allows variables to merely be managed in one place ([[../flake.nix][flake.nix]]) rather than having to manage them in multiple locations. + +I currently import the following variables to the system config: +- =myName= - Username +- =myHomeDir= - Absolute path to home directory derived from =myName= +- =myEmail= - Email +- =myDotfilesDir= - Path to my dotfiles directory on the system +- =myTheme= - base16 theme stored in ../themes to be used +- =myThemePolarity= - whether theme is =light= or =dark= +- =myBackgroundUrl= - Direct link to background wallpaper (used for login screen) +- =myBackgroundSha256= - Checksum for background image used when downloading