Skip to content

ryhkml/nix-home-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

My Nix Home Manager

Motivation

Nix Home Manager can be enjoyable and comfortable, even though it can be a bit tricky to learn initially, the benefits make it worthwhile. With Nix Home Manager, I can keep all my configuration settings in a single file instead of having many separate dotfiles. This makes managing my setup much easier and ensures everything works smoothly across different Linux distributions. I believe Nix Home Manager is a great tool for managing personal configurations. It helps me stay organized and allows me to easily share my setup. I invite you to try it out and see how it can make your life easier too!

Installation

Note

This is my personal best practice how to install Nix Home Manager on all Linux distributions, except immutable distributions.

If you are using an immutable distribution, visit here.

  1. Choose single-user installation, run:

    sh <(curl -L https://nixos.org/nix/install) --no-daemon
    . "$HOME"/.nix-profile/etc/profile.d/nix.sh

    For more information, visit nixos.org/download

  2. Add Home Manager channel, run:

    nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
    nix-channel --add https://github.com/nix-community/nixGL/archive/main.tar.gz nixgl
    nix-channel --update

    In the Nix ecosystem, which includes the Nix Home Manager, a channel refers to a method for managing and distributing collections of Nix packages and configurations. Channels are essentially repositories of Nix expressions that define both packages and configurations. These channels are regularly updated, allowing users to subscribe to them to receive the latest updates. The mentioned command adds a channel named "home-manager", indicating that any package installed through this channel will be updated to the latest version available, as per the unstable branch listed on search.nixos.org/packages. For the channel called “nixgl”, you can visit here.

  3. Run the Home Manager installation command and create the first Home Manager generation:

    nix-shell '<home-manager>' -A install
    echo ". \"\$HOME\"/.nix-profile/etc/profile.d/nix.sh" | tee -a $HOME/.bashrc > /dev/null
    source $HOME/.bashrc
  4. Check home.nix configuration, run:

    cat ~/.config/home-manager/home.nix

Next Step

Visit configuration example, how to use home-manager command.

Packages

The installed packages include command line interface, language server protocol, and plugins of the package itself.

A

  1. alacritty - A cross-platform OpenGL terminal emulator
  2. angular-language-server - LSP for Angular
  3. asciiquarium-transparent - Aquarium/sea animation in ASCII art
  4. astyle - Formatter for C, C++, C++/CLI, Objective-C, C#, and Java

B

  1. bat - Alternative to cat
  2. bash-language-server - LSP for Bash
  3. beautysh - Formatter for Shell
  4. bun - Javascript runtime, bundler, test runner, and package manager
  5. btop - A monitor of resources

C

  1. cmus - Console music player for Unix-like operating systems
  2. curl - Tool and library to transfer data (with c-ares and gsasl features)

D

  1. direnv - Unclutter your .profile
  2. dockerfile-language-server-nodejs - LSP for Dockerfile
  3. duf - Disk usage or free utility. A better df alternative

E

  1. editorconfig - Enforces consistent coding styles across editors and IDEs
  2. exiftool - Meta information reader or writer
  3. eza - A modern alternative to ls

F

  1. fastfetch - Neofetch like system information tool
  2. fd - Alternative to find
  3. file - Shows the type of files
  4. firebase - Firebase CLI
  5. fish - User friendly command line shell
  6. fishPlugins.autopair - Auto complete matching pairs in the fish command line
  7. fzf - Command line fuzzy finder

G

  1. gnuplot - Portable command line driven graphing utility for many platforms
  2. go - Golang!
  3. gcloud - Google Cloud CLI
  4. gopls - LSP for Go

H

  1. hey - HTTP load generator, ApacheBench (ab) replacement
  2. hyperfine - Command line benchmarking tool

I

  1. id3v2 - Command line editor for id3v2 tags

J

  1. java - Open-source Java Development Kit
  2. jdt-language-server - LSP for Java
  3. jq - Lightweight and flexible command line JSON processor

L

  1. lazydocker - The lazier way to manage everything docker
  2. lazygit - Terminal UI for git commands

N

  1. neovim - You gotta know this, right?
  2. ng - Angular CLI
  3. nginx-language-server - LSP for nginx.conf
  4. nil - Yet another LSP for Nix
  5. nixgl - A wrapper tool for Nix OpenGL application
  6. nix-prefetch-git - Script used to obtain source hashes for fetchgit
  7. nixfmt-rfc-style - Formatter for Nix
  8. nodejsBin - Event-driven I/O framework for the V8 Javascript engine
  9. nodePackages.prettier - Prettier is an opinionated code formatter
  10. nodePackages.vls - LSP for Vue
  11. noisetorch - Virtual microphone device with noise supression for PulseAudio

P

  1. podman-compose - Implementation of docker-compose with podman backend

R

  1. ripgrep - Searcher with the raw speed of grep
  2. rustup - Rust toolchain installer
  3. rust-analyzer - Modular compiler frontend for the Rust language
  4. rustfmt - Formatter for Rust

S

  1. shellcheck - Shell script analysis tool
  2. stylua - Formatter for Lua
  3. sqlite - Small and fast SQL database engine

T

  1. tokei - Count your code quickly
  2. trash-cli - Command line interface to the freedesktop.org trashcan
  3. typescript - Javascript with syntax for types
  4. typescript-language-server - LSP for Typescript using tsserver

U

  1. ueberzugpp - Draw images on terminal

V

  1. vscode-langservers-extracted - LSP extracted from Vscode for HTML/CSS/JSON/ESLint

Y

  1. yamlfmt - Formatter for YAML
  2. yaml-language-server - LSP for YAML
  3. yazi - Terminal file manager
  4. yt-dlp - Command line tool to download videos from Youtube and other sites

Z

  1. zellij - A terminal workspace
  2. zoxide - Fast cd that learns your habits

About

An approach that replaces dotfiles

Topics

Resources

License

Stars

Watchers

Forks

Languages