Instructions for the legacy script-based setup.
To install dotfiles, run the following command:
./install.mjs [modules...] [--os <os>]Specify which modules to install by passing their names as arguments. If no modules are specified, a prompt will appear for selection.
Available modules:
core: Installs essential packages.dev: Installs development tools.github: Installs packages from GitHub.fonts: Installs fonts.alacritty: Configures Alacritty.awesome: Configures AwesomeWM.bash: Configures Bash.emacs: Configures Emacs.git: Configures Git.gtk: Configures GTK.nvim: Configures Neovim.rofi: Configures Rofi.ssh: Configures SSH.systemd: Configures Systemd.tmux: Configures Tmux.vim: Configures Vim.zsh: Configures Zsh.
To install all modules, use the all keyword.
Specify the operating system using the --os flag. The default OS is fedora.
Supported operating systems:
fedoraarchubuntumacos
Install all modules for Fedora:
./install.mjs all --os fedoraInstall the core and dev modules for Ubuntu:
./install.mjs core dev --os ubuntuInstall the zsh module for macOS:
./install.mjs zsh --os macosA declarative setup for managing packages and configurations using Nix and Home Manager for reproducible, isolated, and predictable environments.
-
Install Nix: Install the Nix package manager if it's not already present.
sh <(curl -L https://nix.dev/install) --daemon -
Enable Flakes: The Nix configuration uses Flakes. Enable it by adding the following to
~/.config/nix/nix.conf(or/etc/nix/nix.conf):experimental-features = nix-command flakes -
Apply Configuration: Run the initial activation from the root of the repository. This installs packages and creates symlinks defined in
nix/home.nix.home-manager switch --flake ./nix#wren
Note: Nix requires configuration files to be tracked by Git. If an error occurs, ensure changes to the
nix/directory are added and committed.
The entire Nix setup is contained within the nix/ directory.
nix/flake.nix: Pins the versions ofnixpkgsandhome-manager. Generally does not need to be edited unless updating dependencies.nix/home.nix: The main configuration file for managing packages, services, and other settings.
To find available packages in nixpkgs, use the nix search command:
nix search nixpkgs <package-name>For example:
nix search nixpkgs neofetchTo add a new package:
- Open
nix/home.nix. - Add the package name to the
home.packageslist. For example, to addneofetch:home.packages = [ pkgs.htop pkgs.cowsay pkgs.neofetch # Add the new package here ];
- Save the file.
After modifying nix/home.nix, apply the changes by running the following command from the root of the repository:
home-manager switch --flake ./nix#wrenThis command builds the new configuration and activates it, making new packages available in the shell. Remember to commit any changes to Git.