nix/README.md
2023-08-25 20:52:03 +09:00

6.7 KiB

NixOS Configuration Repository

NOTE: These configs expect this repo to be cloned to /etc/nixos/git/

git clone https://git.sysctl.io/albert/nix /etc/nixos/git
ln -s /etc/nixos/git/flake.nix /etc/nixos/flake.nix
nixos-rebuild switch --flake '/etc/nixos#<HOSTNAME>'

To Do List

  • set up pinentry on awesome-hyprland
  • Get swaylock to dim / turn off the screen, then enter suspend/hibernate
  • swayosd
  • wayprompt
  • wlogout
  • cli-based filebrowser for hyprland
  • Learn all the nvim plugins, specifically ones dealing with tabs
  • Fix cursor size on hyprland
  • Find a way to adjust window sizes with a keyboard shortcut in Hyprland
  • Try disko - Link
  • btrfs snapshots
  • weechat / weechat-matrix
    • weechat overlay - Link - for weechat-matrix
  • vscodium and user-config.js file?
  • rofi - bitwarden-cli / bitwarden-menu (Link)
  • Try and submit this as a nixpkg - Link
  • doom-emacs / spacemacs overlay install / configuration
  • gnome-terminal theming (or alternatives)

Done

  • hyprland
    • Try hyprctl
    • hyprbars - Link
    • libinput-gestures?
    • configure programs.light - keybinds in hyprland config
    • authentication agent (like polkit-kde-agent)
    • Set GTK theme for GTK apps
    • Remove rofi alt-tab shortcuts. Find another alternative
  • Get the video card working properly (turn off entirely unless in use by a game)
  • Possibly move away from powerline-go - I want something simpler
    • Staying with powerline-go, just editing the config in home-manager/bash.nix
  • Set up the fingerprint reader - Link
  • sublime music config / theming / integration - Link
  • rofi config / theming
  • nvidia drivers
  • WINE configurations
  • btop config / theming
  • swaylock config / theming
  • Get function keys working (sound, brightness, etc)
  • regreet config / theming - Icons still broken for some reason
    • Possibly switch to tuigreet and gruv it
  • mako config / theming
  • waybar config / theming
  • hyprland config / theming
    • Try libinput-gestures for gesture control of Hyprland - Link
  • powerline config / theming
  • neofetch config / theming
  • kitty config / theming
  • libadwaita theming on Gnome stuck??

Information

Home Manager

  • Home Manager Documentation - Link
  • Home Manager Options Search - Link

NixOS

  • NixOS Documentation - Stable - Link
  • NixOS Packages / Options Search - Link
  • Nix User Repository (NUR) Search - Link
  • FlakeHub - Link
  • Track a Nixpkgs PR - Link

Examples

  • Tons of good examples here - Link
  • NixOS Flakes Intro Guide - Link

Theming

  • Neofetch Themes - Link
  • gruvbox-factory - Link
  • Hyprland Gruvboxy - Link

Theming

  • To change system-wide themes, you need to change the following:

gnome

  1. desktops/gnome.nix - Change the imports at the bottom.
  2. users/albert/gnome-conf.nix - Change the variables at the top.

neovim

  1. home-manager/neovim.nix - Change the following:
    • plugins = with pkgs.vimPlugins - Add your theme under "Themes"
    • extraConfig - Change the colorscheme and AirlineTheme sections

hyprland

  1. hosts/$HOSTNAME/home-manager/hyprland/hyprland-conf.nix - Change the WALLPAPER_DIR variable in ".config/hypr/start.sh".text
  2. hosts/$HOSTNAME/home-manager/hyprland/hyprland-conf.nix - Change col.active_border and col.inactive_border in the general section.
  3. home-manager/bash.nix - Update the sessionVariable variable GTK_THEME

waybar

  1. hosts/$HOSTNAME/home-manager/hyprland/waybar-conf.nix - Update all relevant colors. Possibly make configs for colorschemes and import them.

swaylock

  1. hosts/$HOSTNAME/home-manager/hyprland/swaylock-conf.nix - Update all relevant colors. Possibly make configs for colorschemes and import them.

kitty

  1. home-manager/kitty.nix - Update the content of home.file.".config/kitty/theme.conf".text

Firefox

  1. home-manager/firefox.nix - Change the entry under "# Theming"

btop

  1. home-manager/btop.nix - Set color_theme

bash / powerline

  1. home-manager/bash.nix - Set theme in programs.powerline-go.settings

neofetch

  1. home-manager/neofetch.nix - Update the contents of home.file.".config/neofetch/config.conf".text

GPG Keys

  1. Import the user private key: gpg import gpg/users/albert/privkey.asc
  2. Mark it as trusted: gpg --edit-key albert@sysctl.io, then type trust, then 5
  3. On each new machine, run nix-shell -p ssh-to-pgp --run "ssh-to-pgp -i /etc/ssh/ssh_host_rsa_key -o HOSTNAME.asc"
    • This will output the identifier you add to .sops.yaml
    • Move HOSTNAME.asc to keys/hosts/ and upload to git and rename accordingly.

Secrets

  1. To edit a file: cd to /path/to/nix-files/ and run:
    • nix-shell -p sops --run "sops secrets/secret_file.yml"
    • New shell alias: sops secrets/secret_file.yml
  2. When you add a new machine, you must update the secrets files encryption.
    • Run sops-update secrets/secrets.yaml and commit the change.

Lanzaboote / SecureBoot

  • Instructions here - Link
  1. Create your keys: sbctl create-keys
  2. Verify your machine is ready for SecureBoot: sbctl verify - Everything except *-bzImage.efi are signed
  3. Enter Secureboot Setup mode in your EFI Settings on the motherboard (F10)
    • Security -> SecureBoot -> Set to Enabled and "Reset to Setup Mode" and exit
  4. Enroll the keys: sbctl enroll-keys --microsoft
    • If you wish, you can select --tpm-eventlog, but checksums will change later (ie, at a kernel rebuild)
  5. Reboot and verify you are activated: bootctl status