• Stars
    star
    1,464
  • Rank 30,829 (Top 0.7 %)
  • Language
    Python
  • License
    GNU Lesser Genera...
  • Created over 12 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

NixOps is a tool for deploying to NixOS machines in a network or cloud.

NixOps

Warning

NixOps is in low-maintenance mode and probably not suited for new projects. Use at your own risks.

Note

An experimental rewrite of NixOps is happening under https://github.com/nixops4/nixops4

Test

NixOps is a tool for deploying to NixOS machines in a network or the cloud. Key features include:

  • Declarative: NixOps determines and carries out actions necessary to realise a deployment configuration.
  • Testable: Try your deployments on VirtualBox or libvirtd.
  • Multi Cloud Support: Currently supports deployments to AWS, Hetzner, and GCE
  • Separation of Concerns: Deployment descriptions are divided into logical and physical aspects. This makes it easy to separate parts that say what a machine should do from where they should do it.
  • Extensible: NixOps is extensible through a plugin infrastructure which can be used to provide additional backends.

For more information, please refer to the NixOps manual.

Running

NixOps is included in nixpkgs and can be executed in a shell as follows:

$ nix-shell -p nixops

or for a bleeding edge version, including many fixes relative to the 1.7 series,

$ nix-shell -p nixopsUnstable

You may need access to a Nix remote builder if your system does not support the deployment's system builds directly. MacOS users may use a virtual machine with NixOS for this purpose.

It is also possible to use cross-compilation with NixOps, by setting nixpkgs.localSystem and nixpkgs.crossSystem. A mix of remote, emulated and cross builds is also possible; see this writeup on eno.space.

Building And Developing

Building The Nix Package

You can build the Nix package by simply invoking nix-build on the project root:

$ nix-build

Development Shell

shell.nix provides an environment with all dependencies required for working on NixOps. You can use nix-shell to enter a shell suitable for working on NixOps which will contain all Python dependencies specified in pyproject.toml

$ nix-shell

Executing Tests

Inside the development shell the tests can be executed as follows:

$ pytest

Documentation

NixOps' documentation uses reStructuredText. When editing the docs, get a live-reloading, rendered version of the docs:

nixops$ ./live-docs.py
Serving on http://127.0.0.1:5500

and verify its lints before committing:

nixops$ lint-docs

Contributing

Contributions to the project are welcome in the form of GitHub PRs. Please consider the following guidelines before creating PRs:

  • Please make sure to format your code using black.
  • Please add type signatures using mypy.
  • If you are planning to make any considerable changes, you should first present your plans in a GitHub issue so it can be discussed.
  • If you are adding features, please also add reasonable tests.

License

Licensed under LGPL-3.0.

More Repositories

1

nixpkgs

Nix Packages collection & NixOS
Nix
13,126
star
2

nix

Nix, the purely functional package manager
C++
9,002
star
3

patchelf

A small utility to modify the dynamic linker and RPATH of ELF executables
C
2,931
star
4

nixos-hardware

A collection of NixOS modules covering hardware quirks.
Nix
1,461
star
5

nix.dev

Official documentation for getting things done with Nix.
Python
1,458
star
6

hydra

Hydra, the Nix-based continuous build system
Perl
893
star
7

mobile-nixos

C
668
star
8

rfcs

The Nix community RFCs
396
star
9

nixos-search

Search NixOS packages and options
Elm
364
star
10

templates

Flake templates
Nix
363
star
11

cabal2nix

Generate Nix build instructions from a Cabal file
Haskell
336
star
12

nix-pills

Nix
278
star
13

nix-mode

An Emacs major mode for editing Nix expressions.
Emacs Lisp
276
star
14

nixos-homepage

Sources for nixos.org
Astro
268
star
15

ofborg

@ofborg tooling automation https://monitoring.ofborg.org/dashboard/db/ofborg
Rust
221
star
16

nixos-weekly

NixOS Weekly Newsletter
HTML
213
star
17

nixos-artwork

Nix related artwork
Nix
194
star
18

nix-book

Nix documentation – centralized community online learning resource for Nix
183
star
19

nixos-org-configurations

NixOS configurations for nixos.org and its servers
Nix
173
star
20

nixos

OBSOLETE (go to NixOS/nixpkgs) - NixOS, a Linux distribution based on the Nix package manager - OBSOLETE (go to NixOS/nixpkgs)
Shell
169
star
21

nixpkgs-channels

DEPRECATED! Use NixOS/nixpkgs repository instead.
Nix
168
star
22

docker

DEPRECATED! Dockerfiles to package Nix in a minimal docker container
Dockerfile
147
star
23

nix-idea

Nix plugin for the IntelliJ IDEA IDE
Java
142
star
24

bundlers

Nix
88
star
25

flake-registry

Global registry of Nix flakes
Shell
76
star
26

aarch64-build-box

Config for the Community aarch64 NixOS box [maintainer=@grahamc]
Nix
62
star
27

npm2nix

Generate nix expressions to build npm packages
CoffeeScript
57
star
28

nixops-aws

Python
52
star
29

nixops-hetzner

Python
45
star
30

equinix-metal-builders

iPXE image for Nix builders on Equinix Metal's Spot market.
Nix
39
star
31

nixpart

NixOS storage manager/partitioner
Python
38
star
32

foundation

This is the home of the NixOS Foundation
33
star
33

nixos-channel-scripts

Perl
32
star
34

mvn2nix-maven-plugin

Generate project-info.json for use with nix's Maven repository generation functions
Java
31
star
35

security

Rust
30
star
36

nixpkgs-merge-bot

Allows package maintainers to merge in nixpkgs
Python
30
star
37

language-nix

Data types and useful functions to represent and manipulate the Nix language. | Source has moved to https://github.com/nixos/cabal2nix
Haskell
30
star
38

hydra-provisioner

On-demand provisioning tool for Hydra
Python
29
star
39

amis

Temporary home for the soon to be official NixOS AMIs
Python
21
star
40

release-wiki

19
star
41

distribution-nixpkgs

Haskell types and functions to represent, query, and manipulate the Nixpkgs distribution. | Source has moved to https://github.com/nixos/cabal2nix
Haskell
17
star
42

mobile-nixos-website

Nix
14
star
43

reproducible.nixos.org

HTML
14
star
44

calamares-nixos-extensions

NixOS calamares [maintainer=@vlinkz]
Python
13
star
45

hackage-db

provide access to the Hackage database via Data.Map | Source has moved to https://github.com/nixos/cabal2nix
Haskell
13
star
46

snapd-nix-base

The Nix base snap for distributing Nix-built software via the Snap store.
Nix
12
star
47

nixos-metrics

Rust
12
star
48

nix-eclipse

Nix Eclipse plugin
Java
12
star
49

nixos-common-styles

Common styles for NixOS related web sites.
Less
11
star
50

rfc-steering-committee

Workflows and notes from Nix steering committee
Python
11
star
51

darwin-stubs

Text API (TAPI) files to support a pure build environment on macOS in nixpkgs.
Shell
11
star
52

moderation

The home of the moderation team
11
star
53

jailbreak-cabal

Strip version restrictions from build dependencies in Cabal files.
Haskell
9
star
54

nixops-dashboard

NixOps Dashboard
9
star
55

nixos-summer

HTML
8
star
56

nixos-status

The website showing an overview status of NixOS infra and CI.
JavaScript
8
star
57

nixpkgs-check-by-name

Tool to check Nixpkgs' pkgs/by-name directory
Rust
8
star
58

nixos-planet

XSLT
7
star
59

ofborg-viewer

Nix
5
star
60

20th-nix

20 years of Nix
HTML
5
star
61

nixos-wiki-infra

This project contains everything to setup yourself a mirror of https://nixos.wiki/
Nix
5
star
62

.github

org-level github configuration
4
star
63

hydra-ant-logger

Java
4
star
64

whats-new-in-nix

Shell
4
star
65

package-list

Deprecated, use upload-nixos-package-list-to-hackage.sh instead. Generate the list of available Haskell packages for Hackage.
Haskell
3
star
66

rfc39

Implementation of NixOS RFC #39.
Nix
3
star
67

rfc39-record

2
star
68

teams-collaboration

1
star