nixos-config/install.org

81 lines
4 KiB
Org Mode
Raw Normal View History

2023-06-11 20:56:47 +05:30
#+title: Install
#+author: Emmet
These are just some simple install notes for myself (in-case I have to reinstall unexpectedly).
** Install Notes for Myself
2023-10-29 00:20:27 +05:30
To get this running on a NixOS system, start by cloning the repo:
2023-06-11 20:56:47 +05:30
#+BEGIN_SRC sh :noeval
2023-06-29 22:01:35 +05:30
git clone https://gitlab.com/librephoenix/nixos-config.git ~/.dotfiles
2023-06-11 20:56:47 +05:30
#+END_SRC
2023-10-29 00:20:27 +05:30
To get the hardware configuration on a new system, either copy from =/etc/nixos/hardware-configuration.nix= or run:
2023-06-11 20:56:47 +05:30
#+BEGIN_SRC sh :noeval
2023-06-29 22:01:35 +05:30
cd ~/.dotfiles
sudo nixos-generate-config --show-hardware-config > system/hardware-configuration.nix
2023-06-11 20:56:47 +05:30
#+END_SRC
2023-10-29 00:20:27 +05:30
Also, if you have a differently named user account than my default (=emmet=), you /must/ update the following lines in the let binding near the top of the [[./flake.nix][flake.nix]]:
#+BEGIN_SRC nix :noeval
...
2023-10-29 00:34:38 +05:30
let
...
2023-10-29 00:20:27 +05:30
# ----- USER SETTINGS ----- #
username = "YOURUSERNAME"; # username
name = "YOURNAME"; # name/identifier
...
#+END_SRC
There are many more config options there that you may also want to change as well.
Once the variables are set, then switch into the system configuration by running:
2023-06-11 20:56:47 +05:30
#+BEGIN_SRC sh :noeval
2023-06-29 22:01:35 +05:30
cd ~/.dotfiles
sudo nixos-rebuild switch --flake .#system
2023-06-11 20:56:47 +05:30
#+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 '<home-manager>' -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
nix-channel --update
2023-06-11 20:56:47 +05:30
#+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
2023-06-29 22:01:35 +05:30
cd ~/.dotfiles
home-manager switch --flake .#user
2023-06-11 20:56:47 +05:30
#+END_SRC
2023-10-29 00:20:27 +05:30
This loads in my convenience script =phoenix= (still a WIP), which replaces frequently used nix and nixos commands with more user friendly ones, namely:
2023-06-11 20:56:47 +05:30
- =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
** FAQ
*** =home-manager switch --flake .#user= Command Fails
If it fails with something to the effect of "could not download {some image file}" then that just means that one of my themes is having trouble downloading the background image. To conserve on space in the repo, my themes download the relevant wallpapers directly from their source, but that also means that if the link is broken, =home-manager switch= fails.
I have included a script in the [[./themes][themes directory]] named [[./themes/background-test.sh][background-test.sh]] which performs a rough test on every theme background url, reporting which are broken.
If you're having this error, navigate to the [[./flake.nix][flake.nix]] and select any theme with a good background wallpaper link. As long as it is able to download the new wallpaper, it should be able to build.
2024-02-25 23:13:35 +05:30
*** Do I have to put the configuration files in =~/.dotfiles=?
No. You can put them in literally any directory you want. I just prefer to use =~/.dotfiles= as a convention. If you change the directory, do keep in mind that the above scripts must be modified, replacing =~/.dotfiles= with whatever directory you want to install them to.
*** So I cloned these dotfiles into ~/.dotfiles, and now there are system-level files owned by my user account.. HOW IS THIS SECURE?!
If you're worried about someone modifying your system-level (root configuration) files as your unpriveleged user, see [[./harden.sh][harden.sh]].