My home-manager config for Fedora. One home.nix file, a pile of Neovim Lua, and the usual overengineered dotfiles.
Note
These steps are for a standard (mutable) Linux distribution with single-user Nix. On immutable distros Silverblue, use the Determinate Systems installer instead.
-
Install Nix (single-user, no daemon):
sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon . /home/$USER/.nix-profile/etc/profile.d/nix.sh
Nix version:
nix (Nix) 2.31.3
More info at nixos.org/download
-
Add channels:
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
The
home-managerchannel tracks unstable/master, so packages follow whatever is current on search.nixos.org/packages. Thenixglchannel is for GPU wrappers on non-NixOS systems (nixGL repo). -
Install Home Manager and create the first generation:
nix-shell '<home-manager>' -A install echo ". /home/$USER/.nix-profile/etc/profile.d/nix.sh" | tee -a ~/.bashrc > /dev/null source ~/.bashrc
-
Verify:
cat ~/.config/home-manager/home.nix
See the Home Manager manual for how to use the home-manager command.
CLIs, language servers, formatters, and a few plugins.
- act - Run GitHub Actions locally
- air - Live reload for Go apps
- alacritty - A cross-platform OpenGL terminal emulator
- asciiquarium-transparent - Aquarium/sea animation in ASCII art
- asm-lsp - LSP for Assembly
- asmfmt - Formatter for Assembly
- astyle - Formatter only for Java
- bash-language-server - LSP for Bash
- bat - Alternative to cat
- beautysh - Formatter for Shell
- binsider - Analyzer of executables using a terminal user interface
- black - Formatter for Python
- bun - Javascript runtime, bundler, test runner, and package manager
- btop - A monitor of resources
- cmus - Console music player for Unix-like operating systems
- direnv - Unclutter your .profile
- docker-language-server - LSP for Docker Compose
- dockerfile-language-server - LSP for Dockerfile
- duf - Disk usage or free utility. A better df alternative
- editorconfig - Enforces consistent coding styles across editors and IDEs
- exiftool - Meta information reader or writer
- fastfetch - Neofetch like system information tool
- fd - Alternative to find
- file - Shows the type of files
- firebase - Firebase CLI
- fish - User friendly command line shell
- fishPlugins.autopair - Auto complete matching pairs in the fish command line
- fzf - Command line fuzzy finder
- gcloud - Google Cloud CLI
- go - Golang!
- go-migrate - Database migrations. CLI and Golang library
- gopls - LSP for Go
- govulncheck - Go vulnerability checker
- gping - Ping, but with a graph
- hclfmt - Formatter for HCL
- hey - HTTP load generator, ApacheBench (ab) replacement
- htmx-lsp - LSP for HTMX
- huggingface-hub - CLI and Python library for HuggingFace Hub
- hyperfine - Command line benchmarking tool
- jdt-language-server - LSP for Java
- jq - Lightweight and flexible command line JSON processor
- k6 - Modern load testing tool, using Go and JavaScript
- latexmk - TeX Live environment
- lazydocker - The lazier way to manage everything docker
- lazygit - Terminal UI for git commands
- lazysql - A cross-platform TUI database management tool written in Go
- lua - Lualang!
- lua-language-server - LSP for Lua
- minify - Web formats minifier
- neovim - Hyperextensible Vim-based text editor
- nil - Yet another LSP for Nix
- nixgl - A wrapper tool for Nix OpenGL application
- nix-prefetch-git - Script used to obtain source hashes for fetchgit
- nixfmt-rfc-style - Formatter for Nix
- nodejs - Event-driven I/O framework for the V8 Javascript engine
- nodePackages.prettier - Formatter only for HTML, CSS, JS, TS, and JSON
- onefetch - Git repository summary on your terminal
- packer - Tool for creating identical machine images
- pnpm - Fast, disk space efficient package manager
- podman-compose - Implementation of docker-compose with podman backend
- pyright - LSP for Python
- R - Free software environment for statistical computing and graphics
- ripgrep - Searcher with the raw speed of grep
- rlwrap - A readline wrapper
- rtk - Reduces LLM token consumption by 60-90% on common dev commands
- rustup - Rust toolchain installer
- rust-analyzer - Modular compiler frontend for the Rust language
- rustfmt - Formatter for Rust
- shellcheck - Shell script analysis tool
- stylua - Formatter for Lua
- tailwindcss-language-server - LSP for Tailwind CSS
- taplo - TOML toolkit written in Rust
- terraform - Tool for building, changing, and versioning infrastructure
- terraform-ls - LSP for Terraform
- tesseract - OCR engine
- tex-fmt - Formatter for TeX
- texlab - LSP for TeX
- tokei - Count your code quickly
- tree-sitter - Parser generator tool and an incremental parsing library
- typescript - Javascript with syntax for types
- typescript-language-server - LSP for Typescript using tsserver
- ueberzugpp - Display images in terminal emulators
- unar - Archive unpacker program
- uv - Fast Python package manager
- vscode-langservers-extracted - LSP extracted from Vscode only for HTML/CSS/JSON/ESLint
- yamlfmt - Formatter for YAML
- yaml-language-server - LSP for YAML
- yt-dlp - Command line tool to download videos from Youtube and other sites
- zellij - A terminal workspace
- zig - Ziglang!
- zls - LSP for Zig
- zoxide - Fast cd that learns your habits
Delete everything nix-related:
nix-collect-garbage
nix-collect-garbage -d
rm -rf ~/.cache/nix \
~/.config/nix ~/.config/home-manager \
~/.local/share/nix ~/.local/share/home-manager \
~/.local/state/nix ~/.local/state/home-manager \
~/.nix-channels ~/.nix-defexpr ~/.nix-profile
sudo rm -rf /nixThen remove these lines from .bashrc and .bash_profile:
# .bash_profile
if [ -e /home/user/.nix-profile/etc/profile.d/nix.sh ]; then . /home/user/.nix-profile/etc/profile.d/nix.sh; fi
# .bashrc
. "$HOME"/.nix-profile/etc/profile.d/nix.sh


