https://github.com/dataheld/nullkomma
Opinionated ๐ค, batteries-included ๐, extra-DRY ๐ค Nix boilerplate.
https://github.com/dataheld/nullkomma
devops gitops nix nix-flake
Last synced: 3 months ago
JSON representation
Opinionated ๐ค, batteries-included ๐, extra-DRY ๐ค Nix boilerplate.
- Host: GitHub
- URL: https://github.com/dataheld/nullkomma
- Owner: dataheld
- License: mit
- Created: 2025-01-20T20:07:44.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-03-24T14:43:58.000Z (4 months ago)
- Last Synced: 2025-03-24T15:42:07.617Z (4 months ago)
- Topics: devops, gitops, nix, nix-flake
- Language: Nix
- Homepage:
- Size: 133 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 36
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# nullkomma โก๏ธโ๏ธ
[](https://builtwithnix.org)
[](https://flakehub.com/flake/dataheld/nullkomma)Opinionated ๐ค,
batteries-included ๐,
extra-[DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) ๐ค
[Nix](https://nixos.org) โ๏ธ boilerplate.> nullkommanix \[ษชn หnสl หkษma หnษชรงtอกs\] noun German colloquialism (translation: in next to time).
## Installing
> \[!NOTE\]
> This is not another flake or development framework.
> It is much less; just the set of composable nix flakes and modules that I use for my projects.> \[!TIP\]
> This is the software you need to have on your _system_.
> All project-specific software is handled automatically.1. Install Nix (the package manager).
The [Determinate Nix Installer](https://github.com/DeterminateSystems/nix-installer) is recommended.1. Install [direnv](https://direnv.net).
1. (optional) Install
[nix-direnv](https://github.com/nix-community/nix-direnv)
for better performance during development.1. Add the necessary boilerplate files.
```sh
nix flake init --template "https://flakehub.com/f/dataheld/nullkomma/0.1.*#default"
```1. (one-time only) Inside the repo, run `direnv allow`
> \[!TIP\]
> Windows is not supported by Nix,
> but you can use the
> [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install).From now on, whenever you change into the directory of your project,
all the necessary dependencies etc. will be ready.
The first time you enter the directory, this might take some time.## Building
All build-targets are self-documented:
```sh
make help
```## Updating
### Nix
There are two separate aspects to updating the nix dependencies.
1. There may be newer versions available _given_ the pinning in `flake.nix`.
This can be accomplished by running `make update-flake` locally and may change the `flake.lock`.
However such updates may break a project.
It is therefore recommended **to only run this in CI**,
using the periodically scheduled `nix_maintenance.yml` job.
It will automatically open pull requests if there are updates available.
Users can then inspect whether the updated project still passes all tests.
1. The versions pinned in `flake.nix` (and the resulting `flake.lock`) itself may be out of date.
The [DeterminateSystems/flake-checker](https://github.com/DeterminateSystems/flake-checker) will fail if this is the case.
It runs on every push as well as periodically.
You can also run this locally using `make check-flake-checker`.### Development Shell
To bring the shell you are working in up to date with the _source_
(`nix.flake`, etc.)
of your repository:```sh
direnv reload
```Or if you have `nix-direnv` installed,:
```sh
nix-direnv-reload
```## Issues
`nix-`/`direnv` can be a bit chatty on launch.
Set [`hide_env_diff=true`](https://direnv.net/man/direnv.toml.1.html) to quiet it down.