Kickstart your Nix environments.
- Languages
- Systems
- Install
nixpkgs
with official script:
Note
The offical docs suggest using daemon
mode to install with this approach. Nix currently does not support SELINUX enabled.
sh <(curl -L https://nixos.org/nix/install) --daemon
- Edit
/etc/nix/nix.conf
to enable the following settings:
experimental-features = nix-command flakes
- Create a new directory for your
flake.nix
configuration:
mkdir -p ~/kickstart.nix
cd ~/kickstart.nix
- Using
nix flake init
generate thekickstart.nix
template locally:
nix flake init -t github:ALT-F4-LLC/kickstart.nix#home-manager
- Update following value(s) in
flake.nix
configuration:
homeManagerModule = import ./module/home-manager.nix {
homeDirectory = throw "<enter homeDirectory in flake.nix>"; # TODO: home directory of the user
username = throw "<enter username in flake.nix>"; # TODO: username of the user
};
- Run
home-manager
fromnixpkgs
to build and switch environments:
Important
This template supports the following systems: aarch64-darwin
, aarch64-linux
, x86_64-darwin
and x86_64-linux
.
# for ARM systems running macOS
nix run nixpkgs#home-manager -- build --flake .#aarch64-darwin
nix run nixpkgs#home-manager -- switch --flake .#aarch64-darwin
# for ARM systems running Linux
nix run nixpkgs#home-manager -- build --flake .#aarch64-linux
nix run nixpkgs#home-manager -- switch --flake .#aarch64-linux
# for Intel systems running macOS
nix run nixpkgs#home-manager -- build --flake .#x86_64-darwin
nix run nixpkgs#home-manager -- switch --flake .#x86_64-darwin
# for Intel systems running Linux
nix run nixpkgs#home-manager -- build --flake .#x86_64-linux
nix run nixpkgs#home-manager -- switch --flake .#x86_64-linux
Congrats! You've setup Home Manager on your existing operating system!
Be sure to explore the files below to get started customizing:
module/home-manager.nix
forHome Manager
related settingsflake.nix
for flake related settings
- Install
nixpkgs
with official script:
sh <(curl -L https://nixos.org/nix/install)
- Install
nix-darwin
with official steps:
nix-build https://github.com/LnL7/nix-darwin/archive/master.tar.gz -A installer
./result/bin/darwin-installer
- Answer the following with
y
to edit your defaultconfiguration.nix
file:
Would you like to edit the default configuration.nix before starting? [y/n] y
- Add the following to
configuration.nix
to enablenix-command
andflakes
features:
nix.settings.experimental-features = [ "nix-command" "flakes" ];
- Answer the following with
y
to setup<darwin>
innix-channel
(though it won't be used):
Would you like to manage <darwin> with nix-channel? [y/n] y
- Create a new directory for your
flake.nix
configuration:
mkdir -p ~/kickstart.nix
cd ~/kickstart.nix
- Using
nix flake init
generate thekickstart.nix
template locally:
nix flake init -t github:ALT-F4-LLC/kickstart.nix#darwin
- Update the following value(s) in
flake.nix
configuration:
let
username = throw "<username>"; # TODO: replace with user name and remove throw
in
- Switch to
kickstart.nix
environment for your system with flake configuration:
darwin-rebuild switch --flake ".#aarch64" # M Series Chipsets
darwin-rebuild switch --flake ".#x86_64" # Intel Chipsets
Congrats! You've setup Nix with Home Manager on macOS!
Be sure to explore the files below to get started customizing:
system/darwin.nix
for allnix-darwin
related settingsmodule/configuration.nix
forNix
related settingsmodule/home-manager.nix
forHome Manager
related settingsflake.nix
for flake related settings
-
Install NixOS using the latest ISO image for your system.
-
Add the following to
/etc/nixos/configuration.nix
to enablenix-command
andflakes
features:
nix.extraOptions = "experimental-features = nix-command flakes";
- Update you system to reflect the changes:
sudo nixos-rebuild test
sudo nixos-rebuild switch
- Create a new directory for your
flake.nix
configuration:
mkdir -p ~/kickstart.nix
cd ~/kickstart.nix
- Using
nix flake init
generate thekickstart.nix
template of your choice locally:
nix flake init -t github:ALT-F4-LLC/kickstart.nix#nixos-desktop
nix flake init -t github:ALT-F4-LLC/kickstart.nix#nixos-minimal
- Update the following value(s) in
flake.nix
configuration:
- For
desktop
flake template:
let
nixos-system = import ./system/nixos.nix {
inherit inputs;
username = throw "<username>"; # REQUIRED: replace with user name and remove throw
password = throw "<password>"; # REQUIRED: replace with password and remove throw
desktop = "gnome"; # optional: "gnome" by default, or "plasma5" for KDE Plasma
};
in
- For
minimal
flake template:
let
nixos-system = import ./system/nixos.nix {
inherit inputs;
username = throw "<username>"; # REQUIRED: replace with user name and remove throw
password = throw "<password>"; # REQUIRED: replace with password and remove throw
};
in
- Switch to
kickstart.nix
environment for your system with flake configuration:
Important
We use --impure
due to how /etc/nixos/hardware-configuration.nix
is generated and stored on the system after installation. To avoid using this flag, copy hardware-configuration.nix
file locally and replace import in the template (see example here).
- For
aarch64
platforms:
sudo nixos-rebuild test --flake ".#aarch64" --impure # M Series Chipsets
sudo nixos-rebuild switch --flake ".#aarch64" --impure # M Series Chipsets
- For
x86_64
platforms:
sudo nixos-rebuild test --flake ".#x86_64" --impure # Intel Chipsets
sudo nixos-rebuild switch --flake ".#x86_64" --impure # Intel Chipsets
Congrats! You've setup NixOS with Home Manager!
Be sure to explore the files below to get started customizing:
module/configuration.nix
for moreNixOS
system related settingsmodule/home-manager.nix
forHome Manager
related settingssystem/nixos.nix
forNixOS
system related settingsflake.nix
for flake related settings
Used for Bash scripts.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#bash
Used for C++ projects using CMake as a build system.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#cpp-cmake
Used for modern Go apps setup with go.mod
system. To build legacy Go apps, use go-pkg
template.
Important
Be sure to update go.mod
with proper repository after running init
command.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#go-mod
Used for legacy Go apps not setup with go.mod
system. To build modern Go apps, use go-mod
template.
Important
Be sure to update deps.nix
with vendor dependencies after running init
command (read more).
nix flake init -t github:ALT-F4-LLC/kickstart.nix#go-pkg
Used for Lua script applications. This template creates a shell script wrapper which executes your Lua code. See flake.nix
for more.
Note
We wrap Lua because we are using an interpreted language which requires both binary and code to run. This is similar to console scripts
in the python-app
template.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#lua-app
Used for Node.js backend applications. The template builds using npm
, and does
not assume you use TypeScript.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#nodejs-backend
To update your dependencies, install/upgrade them as normal via NPM, then use
the prefetch-npm-deps
package from nixpkgs
to generate a new npmDepsHash
value for packages.default
in the Flake.
$ nix shell 'nixpkgs#prefetch-npm-deps' -c prefetch-npm-deps package-lock.json
...
sha256-nTTzkQEdnwWEQ/3uy8hUbPsRvzM53xuoJHoQhR3E/zk=
Tip
To add TypeScript, install it with npm install --save-dev typescript
, add a
build
script to package.json
that calls tsc
, and then remove
dontNpmBuild = true;
from packages.default
in your Flake.
Used for OCaml applications.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#ocaml
Used for runnable Python apps setup with setup.py
and includes wrapped console scripts that can be executed from CLI. To build re-useable Python packages, use python-pkg
template.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#python-app
Used for Python packages setup with setup.py
that can be re-used within other Nix-built applications or packages. To build runnable Python apps, use python-app
template.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#python-pkg
Used for Rust applications.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#rust
macOS template allows you to run Nix tools on your native Mac hardware.
Tip
This setup is ideal for developers already using macOS.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#darwin
NixOS desktop template includes base operating system with GNOME (default) windows manager included. You can also use plasma5
by changing desktop
value in flake.nix
file.
Tip
This setup is ideal for getting started moving to NixOS as your main desktop.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#nixos-desktop
NixOS minimal template includes base operating system without any windows manager.
Tip
This setup is ideal for servers and other headless tasks.
nix flake init -t github:ALT-F4-LLC/kickstart.nix#nixos-minimal