commit
faf5bbb6bf
@ -0,0 +1,22 @@ |
||||
name: Backport |
||||
on: |
||||
pull_request: |
||||
types: [closed] |
||||
jobs: |
||||
backport: |
||||
name: Create backport PRs |
||||
if: github.repository_owner == 'NixOS' && github.event.pull_request.merged == true |
||||
runs-on: ubuntu-latest |
||||
steps: |
||||
- uses: actions/checkout@v2 |
||||
with: |
||||
# required to find all branches |
||||
fetch-depth: 0 |
||||
- name: Create backport PRs |
||||
# should be kept in sync with `version` |
||||
uses: zeebe-io/backport-action@9b8949dcd4295d364b0939f07d0c7593598d26cd |
||||
with: |
||||
github_token: ${{ secrets.GITHUB_TOKEN }} |
||||
github_workspace: ${{ github.workspace }} |
||||
# should be kept in sync with `uses` |
||||
version: 9b8949dcd4295d364b0939f07d0c7593598d26cd |
@ -0,0 +1,21 @@ |
||||
name: NixOS manual checks |
||||
|
||||
on: |
||||
pull_request: |
||||
branches-ignore: |
||||
- 'release-**' |
||||
paths: |
||||
- 'nixos/**/*.xml' |
||||
- 'nixos/**/*.md' |
||||
|
||||
jobs: |
||||
tests: |
||||
runs-on: ubuntu-latest |
||||
if: github.repository_owner == 'NixOS' |
||||
steps: |
||||
- uses: actions/checkout@v2 |
||||
- uses: cachix/install-nix-action@v12 |
||||
- name: Check DocBook files generated from Markdown are consistent |
||||
run: | |
||||
nixos/doc/manual/md-to-db.sh |
||||
git diff --exit-code |
@ -0,0 +1,5 @@ |
||||
{ |
||||
description = "Library of low-level helper functions for nix expressions."; |
||||
|
||||
outputs = { self }: { lib = import ./lib; }; |
||||
} |
@ -0,0 +1,13 @@ |
||||
# Contributing to this manual {#chap-contributing} |
||||
|
||||
The DocBook and CommonMark sources of NixOS' manual are in the [nixos/doc/manual](https://github.com/NixOS/nixpkgs/tree/master/nixos/doc/manual) subdirectory of the [Nixpkgs](https://github.com/NixOS/nixpkgs) repository. |
||||
|
||||
You can quickly check your edits with the following: |
||||
|
||||
```ShellSession |
||||
$ cd /path/to/nixpkgs |
||||
$ ./nixos/doc/manual/md-to-db.sh |
||||
$ nix-build nixos/release.nix -A manual.x86_64-linux |
||||
``` |
||||
|
||||
If the build succeeds, the manual will be in `./result/share/doc/nixos/index.html`. |
@ -1,22 +0,0 @@ |
||||
<chapter xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xml:id="chap-contributing"> |
||||
<title>Contributing to this manual</title> |
||||
<para> |
||||
The DocBook sources of NixOS' manual are in the <filename |
||||
xlink:href="https://github.com/NixOS/nixpkgs/tree/master/nixos/doc/manual"> |
||||
nixos/doc/manual</filename> subdirectory of the <link |
||||
xlink:href="https://github.com/NixOS/nixpkgs">Nixpkgs</link> repository. |
||||
</para> |
||||
<para> |
||||
You can quickly check your edits with the following: |
||||
</para> |
||||
<screen> |
||||
<prompt>$ </prompt>cd /path/to/nixpkgs |
||||
<prompt>$ </prompt>nix-build nixos/release.nix -A manual.x86_64-linux |
||||
</screen> |
||||
<para> |
||||
If the build succeeds, the manual will be in |
||||
<filename>./result/share/doc/nixos/index.html</filename>. |
||||
</para> |
||||
</chapter> |
@ -0,0 +1,18 @@ |
||||
# Building Your Own NixOS CD {#sec-building-cd} |
||||
Building a NixOS CD is as easy as configuring your own computer. The idea is to use another module which will replace your `configuration.nix` to configure the system that would be installed on the CD. |
||||
|
||||
Default CD/DVD configurations are available inside `nixos/modules/installer/cd-dvd` |
||||
|
||||
```ShellSession |
||||
$ git clone https://github.com/NixOS/nixpkgs.git |
||||
$ cd nixpkgs/nixos |
||||
$ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-minimal.nix default.nix |
||||
``` |
||||
|
||||
Before burning your CD/DVD, you can check the content of the image by mounting anywhere like suggested by the following command: |
||||
|
||||
```ShellSession |
||||
# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso</screen> |
||||
``` |
||||
|
||||
If you want to customize your NixOS CD in more detail, or generate other kinds of images, you might want to check out [nixos-generators](https://github.com/nix-community/nixos-generators). This can also be a good starting point when you want to use Nix to build a 'minimal' image that doesn't include a NixOS installation. |
@ -1,33 +0,0 @@ |
||||
<chapter xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xmlns:xi="http://www.w3.org/2001/XInclude" |
||||
version="5.0" |
||||
xml:id="sec-building-cd"> |
||||
<title>Building Your Own NixOS CD</title> |
||||
<para> |
||||
Building a NixOS CD is as easy as configuring your own computer. The idea is |
||||
to use another module which will replace your |
||||
<filename>configuration.nix</filename> to configure the system that would be |
||||
installed on the CD. |
||||
</para> |
||||
<para> |
||||
Default CD/DVD configurations are available inside |
||||
<filename>nixos/modules/installer/cd-dvd</filename>. |
||||
<screen> |
||||
<prompt>$ </prompt>git clone https://github.com/NixOS/nixpkgs.git |
||||
<prompt>$ </prompt>cd nixpkgs/nixos |
||||
<prompt>$ </prompt>nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-minimal.nix default.nix</screen> |
||||
</para> |
||||
<para> |
||||
Before burning your CD/DVD, you can check the content of the image by |
||||
mounting anywhere like suggested by the following command: |
||||
<screen> |
||||
<prompt># </prompt>mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso</screen> |
||||
</para> |
||||
<para> |
||||
If you want to customize your NixOS CD in more detail, or generate other kinds |
||||
of images, you might want to check out <link |
||||
xlink:href="https://github.com/nix-community/nixos-generators">nixos-generators</link>. This can also be a good starting point when you want to use Nix to build a |
||||
'minimal' image that doesn't include a NixOS installation. |
||||
</para> |
||||
</chapter> |
@ -1,366 +0,0 @@ |
||||
<chapter xmlns="http://docbook.org/ns/docbook" |
||||
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
xmlns:xi="http://www.w3.org/2001/XInclude" |
||||
version="5.0" |
||||
xml:id="ch-releases"> |
||||
<title>Releases</title> |
||||
<section xml:id="release-process"> |
||||
<title>Release process</title> |
||||
|
||||
<para> |
||||
Going through an example of releasing NixOS 19.09: |
||||
</para> |
||||
|
||||
<section xml:id="one-month-before-the-beta"> |
||||
<title>One month before the beta</title> |
||||
|
||||
<itemizedlist> |
||||
<listitem> |
||||
<para> |
||||
Create an announcement on <link xlink:href="https://discourse.nixos.org">Discourse</link> as a warning about upcoming beta <quote>feature freeze</quote> in a month. <link xlink:href="https://discourse.nixos.org/t/nixos-19-09-feature-freeze/3707">See this post as an example</link>. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Discuss with Eelco Dolstra and the community (via IRC, ML) about what will reach the deadline. Any issue or Pull Request targeting the release should be included in the release milestone. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Remove attributes that we know we will not be able to support, especially if there is a stable alternative. E.g. Check that our Linux kernels’ <link xlink:href="https://www.kernel.org/category/releases.html">projected end-of-life</link> are after our release projected end-of-life. |
||||
</para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
</section> |
||||
|
||||
<section xml:id="at-beta-release-time"> |
||||
<title>At beta release time</title> |
||||
|
||||
<orderedlist> |
||||
<listitem> |
||||
<para> |
||||
From the master branch run: |
||||
</para> |
||||
<programlisting> |
||||
git checkout -b release-19.09 |
||||
</programlisting> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/commit/10e61bf5be57736035ec7a804cb0bf3d083bf2cf#diff-9c798092bac0caeb5c52d509be0ca263R69">Bump the <literal>system.defaultChannel</literal> attribute in <literal>nixos/modules/misc/version.nix</literal></link> |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/commit/10e61bf5be57736035ec7a804cb0bf3d083bf2cf#diff-831e8d9748240fb23e6734fdc2a6d16eR15">Update <literal>versionSuffix</literal> in <literal>nixos/release.nix</literal></link> |
||||
</para> |
||||
</listitem> |
||||
</orderedlist> |
||||
|
||||
<para> |
||||
To get the commit count, use the following command: |
||||
</para> |
||||
|
||||
<programlisting> |
||||
git rev-list --count release-19.09 |
||||
</programlisting> |
||||
|
||||
<orderedlist> |
||||
<listitem> |
||||
<para> |
||||
Edit changelog at <literal>nixos/doc/manual/release-notes/rl-1909.xml</literal>. |
||||
</para> |
||||
<itemizedlist> |
||||
<listitem> |
||||
<para> |
||||
Get all new NixOS modules: |
||||
</para> |
||||
<programlisting> |
||||
git diff release-19.03..release-19.09 nixos/modules/module-list.nix | grep ^+ |
||||
</programlisting> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Note systemd, kernel, glibc, desktop environment, and Nix upgrades. |
||||
</para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Tag the release: |
||||
</para> |
||||
<programlisting> |
||||
git tag --annotate --message="Release 19.09-beta" 19.09-beta |
||||
git push upstream 19.09-beta |
||||
</programlisting> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/commit/01268fda85b7eee4e462c873d8654f975067731f#diff-2bc0e46110b507d6d5a344264ef15adaR1">On the <literal>master</literal> branch, increment the <literal>.version</literal> file</link> |
||||
</para> |
||||
<programlisting> |
||||
echo -n "20.03" > .version |
||||
</programlisting> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/commit/01268fda85b7eee4e462c873d8654f975067731f#diff-03f3d41b68f62079c55001f1a1c55c1dR137">Update <literal>codeName</literal> in <literal>lib/trivial.nix</literal></link> This will be the name for the next release. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/commit/01268fda85b7eee4e462c873d8654f975067731f#diff-e7ee5ff686cdcc513ca089d6e5682587R11">Create a new release notes file for the upcoming release + 1</link>, in our case this is <literal>rl-2003.xml</literal>. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Contact the infrastructure team to create the necessary Hydra Jobsets. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixos-org-configurations/blob/master/channels.nix">Create a channel at https://nixos.org/channels by creating a PR to nixos-org-configurations, changing <literal>channels.nix</literal></link> |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Get all Hydra jobsets for the release to have their first evaluation. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/issues/13559">Create an issue for tracking Zero Hydra Failures progress. ZHF is an effort to get build failures down to zero.</link> |
||||
</para> |
||||
</listitem> |
||||
</orderedlist> |
||||
</section> |
||||
|
||||
<section xml:id="during-beta"> |
||||
<title>During Beta</title> |
||||
|
||||
<itemizedlist> |
||||
<listitem> |
||||
<para> |
||||
Monitor the master branch for bugfixes and minor updates and cherry-pick them to the release branch. |
||||
</para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
</section> |
||||
|
||||
<section xml:id="before-the-final-release"> |
||||
<title>Before the final release</title> |
||||
|
||||
<itemizedlist> |
||||
<listitem> |
||||
<para> |
||||
Re-check that the release notes are complete. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Release Nix (currently only Eelco Dolstra can do that). <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/installer/tools/nix-fallback-paths.nix">Make sure fallback is updated.</link> |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/commit/40fd9ae3ac8048758abdcfc7d28a78b5f22fe97e">Update README.md with new stable NixOS version information.</link> |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Change <literal>stableBranch</literal> to <literal>true</literal> in Hydra and wait for the channel to update. |
||||
</para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
</section> |
||||
|
||||
<section xml:id="at-final-release-time"> |
||||
<title>At final release time</title> |
||||
|
||||
<orderedlist> |
||||
<listitem> |
||||
<para> |
||||
Update <xref linkend="sec-upgrading" /> section of the manual to match new stable release version. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Update <literal>rl-1909.xml</literal> with the release date. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Tag the final release |
||||
</para> |
||||
<programlisting> |
||||
git tag --annotate --message="Release 19.09" 19.09 |
||||
git push upstream 19.09 |
||||
</programlisting> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Update <link xlink:href="https://github.com/NixOS/nixos-homepage">nixos-homepage</link> for the release. |
||||
</para> |
||||
<orderedlist> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixos-homepage/blob/47ac3571c4d71e841fd4e6c6e1872e762b9c4942/Makefile#L1">Update <literal>NIXOS_SERIES</literal> in the <literal>Makefile</literal></link>. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixos-homepage/blob/47ac3571c4d71e841fd4e6c6e1872e762b9c4942/nixos-release.tt#L1">Update <literal>nixos-release.tt</literal> with the new NixOS version</link>. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixos-homepage/blob/47ac3571c4d71e841fd4e6c6e1872e762b9c4942/flake.nix#L10">Update the <literal>flake.nix</literal> input <literal>released-nixpkgs</literal> to 19.09</link>. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Run <literal>./update.sh</literal> (this updates flake.lock to updated channel). |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixos-homepage/blob/a5626c71c03a2dd69086564e56f1a230a2bb177a/logo/nixos-logo-19.09-loris-lores.png">Add a compressed version of the NixOS logo for 19.09</link>. |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<link xlink:href="https://github.com/NixOS/nixos-homepage/commit/a5626c71c03a2dd69086564e56f1a230a2bb177a#diff-9cdc6434d3e4fd93a6e5bb0a531a7c71R5">Compose a news item for the website RSS feed</link>. |
||||
</para> |
||||
</listitem> |
||||
</orderedlist> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Create a new topic on <link xlink:href="https://discourse.nixos.org/">the Discourse instance</link> to announce the release. |
||||
</para> |
||||
</listitem> |
||||
</orderedlist> |
||||
|
||||
<para> |
||||
You should include the following information: |
||||
</para> |
||||
|
||||
<itemizedlist> |
||||
<listitem> |
||||
<para> |
||||
Number of commits for the release: |
||||
</para> |
||||
<programlisting> |
||||
bash git log release-19.03..release-19.09 --format=%an | wc -l |
||||
</programlisting> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
Commits by contributor: |
||||
</para> |
||||
<programlisting> |
||||
git shortlog --summary --numbered release-19.03..release-19.09 |
||||
</programlisting> |
||||
</listitem> |
||||
</itemizedlist> |
||||
|
||||
<para> |
||||
Best to check how the previous post was formulated to see what needs to be included. |
||||
</para> |
||||
</section> |
||||
</section> |
||||
<section xml:id="release-management-team"> |
||||
<title>Release Management Team</title> |
||||
|
||||
<para> |
||||
For each release there are two release managers. After each release the release manager having managed two releases steps down and the release management team of the last release appoints a new release manager. |
||||
</para> |
||||
|
||||
<para> |
||||
This makes sure a release management team always consists of one release manager who already has managed one release and one release manager being introduced to their role, making it easier to pass on knowledge and experience. |
||||
</para> |
||||
|
||||
<para> |
||||
Release managers for the current NixOS release are tracked by GitHub team <link xlink:href="https://github.com/orgs/NixOS/teams/nixos-release-managers/members"><literal>@NixOS/nixos-release-managers</literal></link>. |
||||
</para> |
||||
|
||||
<para> |
||||
A release manager’s role and responsibilities are: |
||||
</para> |
||||
|
||||
<itemizedlist> |
||||
<listitem> |
||||
<para> |
||||
manage the release process |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
start discussions about features and changes for a given release |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
create a roadmap |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
release in cooperation with Eelco Dolstra |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
decide which bug fixes, features, etc… get backported after a release |
||||
</para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
</section> |
||||
<section xml:id="release-schedule"> |
||||
<title>Release schedule</title> |
||||
|
||||
<informaltable> |
||||
<tgroup cols="2"> |
||||
<colspec align="left" /> |
||||
<colspec align="left" /> |
||||
<thead> |
||||
<row> |
||||
<entry> |
||||
Date |
||||
</entry> |
||||
<entry> |
||||
Event |
||||
</entry> |
||||
</row> |
||||
</thead> |
||||
<tbody> |
||||
<row> |
||||
<entry> |
||||
2016-07-25 |
||||
</entry> |
||||
<entry> |
||||
Send email to nix-dev about upcoming branch-off |
||||
</entry> |
||||
</row> |
||||
<row> |
||||
<entry> |
||||
2016-09-01 |
||||
</entry> |
||||
<entry><literal>release-16.09</literal> branch and corresponding jobsets are created, |
||||
change freeze |
||||
</entry> |
||||
</row> |
||||
<row> |
||||
<entry> |
||||
2016-09-30 |
||||
</entry> |
||||
<entry> |
||||
NixOS 16.09 released |
||||
</entry> |
||||
</row> |
||||
</tbody> |
||||
</tgroup> |
||||
</informaltable> |
||||
</section> |
||||
</chapter> |
@ -0,0 +1,5 @@ |
||||
This directory is temporarily needed while we transition the manual to CommonMark. It stores the output of the ../md-to-db.sh script that converts CommonMark files back to DocBook. |
||||
|
||||
We are choosing to convert the Markdown to DocBook at authoring time instead of manual building time, because we do not want the pandoc toolchain to become part of the NixOS closure. |
||||
|
||||
Do not edit the DocBook files inside this directory or its subdirectories. Instead, edit the corresponding .md file in the normal manual directories, and run ../md-to-db.sh to update the file here. |
@ -0,0 +1,22 @@ |
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="chap-contributing"> |
||||
<title>Contributing to this manual</title> |
||||
<para> |
||||
The DocBook and CommonMark sources of NixOS’ manual are in the |
||||
<link xlink:href="https://github.com/NixOS/nixpkgs/tree/master/nixos/doc/manual">nixos/doc/manual</link> |
||||
subdirectory of the |
||||
<link xlink:href="https://github.com/NixOS/nixpkgs">Nixpkgs</link> |
||||
repository. |
||||
</para> |
||||
<para> |
||||
You can quickly check your edits with the following: |
||||
</para> |
||||
<programlisting> |
||||
$ cd /path/to/nixpkgs |
||||
$ ./nixos/doc/manual/md-to-db.sh |
||||
$ nix-build nixos/release.nix -A manual.x86_64-linux |
||||
</programlisting> |
||||
<para> |
||||
If the build succeeds, the manual will be in |
||||
<literal>./result/share/doc/nixos/index.html</literal>. |
||||
</para> |
||||
</chapter> |
@ -0,0 +1,33 @@ |
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-building-cd"> |
||||
<title>Building Your Own NixOS CD</title> |
||||
<para> |
||||
Building a NixOS CD is as easy as configuring your own computer. The |
||||
idea is to use another module which will replace your |
||||
<literal>configuration.nix</literal> to configure the system that |
||||
would be installed on the CD. |
||||
</para> |
||||
<para> |
||||
Default CD/DVD configurations are available inside |
||||
<literal>nixos/modules/installer/cd-dvd</literal> |
||||
</para> |
||||
<programlisting> |
||||
$ git clone https://github.com/NixOS/nixpkgs.git |
||||
$ cd nixpkgs/nixos |
||||
$ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-minimal.nix default.nix |
||||
</programlisting> |
||||
<para> |
||||
Before burning your CD/DVD, you can check the content of the image |
||||
by mounting anywhere like suggested by the following command: |
||||
</para> |
||||
<programlisting> |
||||
# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso</screen> |
||||
</programlisting> |
||||
<para> |
||||
If you want to customize your NixOS CD in more detail, or generate |
||||
other kinds of images, you might want to check out |
||||
<link xlink:href="https://github.com/nix-community/nixos-generators">nixos-generators</link>. |
||||
This can also be a good starting point when you want to use Nix to |
||||
build a <quote>minimal</quote> image that doesn’t include a NixOS |
||||
installation. |
||||
</para> |
||||
</chapter> |
@ -0,0 +1,26 @@ |
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="release-21.11"> |
||||
<title>Release 21.11 (<quote>?</quote>, 2021.11/??)</title> |
||||
<para> |
||||
In addition to numerous new and upgraded packages, this release has |
||||
the following highlights: |
||||
</para> |
||||
<itemizedlist spacing="compact"> |
||||
<listitem> |
||||
<para> |
||||
Support is planned until the end of April 2022, handing over to |
||||
22.05. |
||||
</para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
<section xml:id="backward-incompatibilities"> |
||||
<title>Backward incompatibilities</title> |
||||
<itemizedlist spacing="compact"> |
||||
<listitem> |
||||
<para> |
||||
The <literal>staticjinja</literal> package has been upgraded |
||||
from 1.0.4 to 2.0.0 |
||||
</para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
</section> |
||||
</section> |
@ -0,0 +1,33 @@ |
||||
#! /usr/bin/env nix-shell |
||||
#! nix-shell -I nixpkgs=channel:nixpkgs-unstable -i bash -p pandoc |
||||
|
||||
# This script is temporarily needed while we transition the manual to |
||||
# CommonMark. It converts the .md files in the regular manual folder |
||||
# into DocBook files in the from_md folder. |
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" |
||||
pushd $DIR |
||||
|
||||
OUT="$DIR/from_md" |
||||
mapfile -t MD_FILES < <(find . -type f -regex '.*\.md$') |
||||
|
||||
for mf in ${MD_FILES[*]}; do |
||||
if [ "${mf: -11}" == ".section.md" ]; then |
||||
mkdir -p $(dirname "$OUT/$mf") |
||||
pandoc "$mf" -t docbook \ |
||||
--extract-media=media \ |
||||
-f markdown+smart \ |
||||
| cat > "$OUT/${mf%".section.md"}.section.xml" |
||||
fi |
||||
|
||||
if [ "${mf: -11}" == ".chapter.md" ]; then |
||||
mkdir -p $(dirname "$OUT/$mf") |
||||
pandoc "$mf" -t docbook \ |
||||
--top-level-division=chapter \ |
||||
--extract-media=media \ |
||||
-f markdown+smart \ |
||||
| cat > "$OUT/${mf%".chapter.md"}.chapter.xml" |
||||
fi |
||||
done |
||||
|
||||
popd |
@ -0,0 +1,9 @@ |
||||
# Release 21.11 (“?”, 2021.11/??) {#release-21.11} |
||||
|
||||
In addition to numerous new and upgraded packages, this release has the following highlights: |
||||
|
||||
* Support is planned until the end of April 2022, handing over to 22.05. |
||||
|
||||
## Backward incompatibilities |
||||
|
||||
* The `staticjinja` package has been upgraded from 1.0.4 to 2.0.0 |
@ -0,0 +1,114 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
cfg = config.services.botamusique; |
||||
|
||||
format = pkgs.formats.ini {}; |
||||
configFile = format.generate "botamusique.ini" cfg.settings; |
||||
in |
||||
{ |
||||
meta.maintainers = with lib.maintainers; [ hexa ]; |
||||
|
||||
options.services.botamusique = { |
||||
enable = mkEnableOption "botamusique, a bot to play audio streams on mumble"; |
||||
|
||||
package = mkOption { |
||||
type = types.package; |
||||
default = pkgs.botamusique; |
||||
description = "The botamusique package to use."; |
||||
}; |
||||
|
||||
settings = mkOption { |
||||
type = with types; submodule { |
||||
freeformType = format.type; |
||||
options = { |
||||
server.host = mkOption { |
||||
type = types.str; |
||||
default = "localhost"; |
||||
example = "mumble.example.com"; |
||||
description = "Hostname of the mumble server to connect to."; |
||||
}; |
||||
|
||||
server.port = mkOption { |
||||
type = types.port; |
||||
default = 64738; |
||||
description = "Port of the mumble server to connect to."; |
||||
}; |
||||
|
||||
bot.username = mkOption { |
||||
type = types.str; |
||||
default = "botamusique"; |
||||
description = "Name the bot should appear with."; |
||||
}; |
||||
|
||||
bot.comment = mkOption { |
||||
type = types.str; |
||||
default = "Hi, I'm here to play radio, local music or youtube/soundcloud music. Have fun!"; |
||||
description = "Comment displayed for the bot."; |
||||
}; |
||||
}; |
||||
}; |
||||
default = {}; |
||||
description = '' |
||||
Your <filename>configuration.ini</filename> as a Nix attribute set. Look up |
||||
possible options in the <link xlink:href="https://github.com/azlux/botamusique/blob/master/configuration.example.ini">configuration.example.ini</link>. |
||||
''; |
||||
}; |
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
systemd.services.botamusique = { |
||||
after = [ "network.target" ]; |
||||
wantedBy = [ "multi-user.target" ]; |
||||
|
||||
unitConfig.Documentation = "https://github.com/azlux/botamusique/wiki"; |
||||
|
||||
environment.HOME = "/var/lib/botamusique"; |
||||
|
||||
serviceConfig = { |
||||
ExecStart = "${cfg.package}/bin/botamusique --config ${configFile}"; |
||||
Restart = "always"; # the bot exits when the server connection is lost |
||||
|
||||
# Hardening |
||||
CapabilityBoundingSet = [ "" ]; |
||||
DynamicUser = true; |
||||
IPAddressDeny = [ |
||||
"link-local" |
||||
"multicast" |
||||
]; |
||||
LockPersonality = true; |
||||
MemoryDenyWriteExecute = true; |
||||
ProcSubset = "pid"; |
||||
PrivateDevices = true; |
||||
PrivateUsers = true; |
||||
PrivateTmp = true; |
||||
ProtectClock = true; |
||||
ProtectControlGroups = true; |
||||
ProtectHome = true; |
||||
ProtectHostname = true; |
||||
ProtectKernelLogs = true; |
||||
ProtectKernelModules = true; |
||||
ProtectKernelTunables = true; |
||||
ProtectProc = "invisible"; |
||||
ProtectSystem = "strict"; |
||||
RestrictNamespaces = true; |
||||
RestrictRealtime = true; |
||||
RestrictAddressFamilies = [ |
||||
"AF_INET" |
||||
"AF_INET6" |
||||
]; |
||||
StateDirectory = "botamusique"; |
||||
SystemCallArchitectures = "native"; |
||||
SystemCallFilter = [ |
||||
"@system-service" |
||||
"~@privileged" |
||||
"~@resources" |
||||
]; |
||||
UMask = "0077"; |
||||
WorkingDirectory = "/var/lib/botamusique"; |
||||
}; |
||||
}; |
||||
}; |
||||
} |
@ -0,0 +1,74 @@ |
||||
{ config, lib, pkgs, options }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
cfg = config.services.prometheus.exporters.pihole; |
||||
in |
||||
{ |
||||
port = 9617; |
||||
extraOpts = { |
||||
apiToken = mkOption { |
||||
type = types.str; |
||||
default = ""; |
||||
example = "580a770cb40511eb85290242ac130003580a770cb40511eb85290242ac130003"; |
||||
description = '' |
||||
pi-hole API token which can be used instead of a password |
||||
''; |
||||
}; |
||||
interval = mkOption { |
||||
type = types.str; |
||||
default = "10s"; |
||||
example = "30s"; |
||||
description = '' |
||||
How often to scrape new data |
||||
''; |
||||
}; |
||||
password = mkOption { |
||||
type = types.str; |
||||
default = ""; |
||||
example = "password"; |
||||
description = '' |
||||
The password to login into pihole. An api token can be used instead. |
||||
''; |
||||
}; |
||||
piholeHostname = mkOption { |
||||
type = types.str; |
||||
default = "pihole"; |
||||
example = "127.0.0.1"; |
||||
description = '' |
||||
Hostname or address where to find the pihole webinterface |
||||
''; |
||||
}; |
||||
piholePort = mkOption { |
||||
type = types.port; |
||||
default = "80"; |
||||
example = "443"; |
||||
description = '' |
||||
The port pihole webinterface is reachable on |
||||
''; |
||||
}; |
||||
protocol = mkOption { |
||||
type = types.enum [ "http" "https" ]; |
||||
default = "http"; |
||||
example = "https"; |
||||
description = '' |
||||
The protocol which is used to connect to pihole |
||||
''; |
||||
}; |
||||
}; |
||||
serviceOpts = { |
||||
serviceConfig = { |
||||
ExecStart = '' |
||||
${pkgs.bash}/bin/bash -c "${pkgs.prometheus-pihole-exporter}/bin/pihole-exporter \ |
||||
-interval ${cfg.interval} \ |
||||
${optionalString (cfg.apiToken != "") "-pihole_api_token ${cfg.apiToken}"} \ |
||||
-pihole_hostname ${cfg.piholeHostname} \ |
||||
${optionalString (cfg.password != "") "-pihole_password ${cfg.password}"} \ |
||||
-pihole_port ${toString cfg.piholePort} \ |
||||
-pihole_protocol ${cfg.protocol} \ |
||||
-port ${toString cfg.port}" |
||||
''; |
||||
}; |
||||
}; |
||||
} |
@ -0,0 +1,47 @@ |
||||
import ./make-test-python.nix ({ pkgs, lib, ...} : |
||||
|
||||
{ |
||||
name = "botamusique"; |
||||
meta.maintainers = with lib.maintainers; [ hexa ]; |
||||
|
||||
nodes = { |
||||
machine = { config, ... }: { |
||||
services.murmur = { |
||||
enable = true; |
||||
registerName = "NixOS tests"; |
||||
}; |
||||
|
||||
services.botamusique = { |
||||
enable = true; |
||||
settings = { |
||||
server = { |
||||
channel = "NixOS tests"; |
||||
}; |
||||
bot = { |
||||
version = false; |
||||
auto_check_update = false; |
||||
}; |
||||
}; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
testScript = '' |
||||
start_all() |
||||
|
||||
machine.wait_for_unit("murmur.service") |
||||
machine.wait_for_unit("botamusique.service") |
||||
|
||||
machine.sleep(10) |
||||
|
||||
machine.wait_until_succeeds( |
||||
"journalctl -u murmur.service -e | grep -q '<1:botamusique(-1)> Authenticated'" |
||||
) |
||||
|
||||
with subtest("Check systemd hardening"): |
||||
output = machine.execute("systemctl show botamusique.service")[1] |
||||
machine.log(output) |
||||
output = machine.execute("systemd-analyze security botamusique.service")[1] |
||||
machine.log(output) |
||||
''; |
||||
}) |
@ -0,0 +1,37 @@ |
||||
{ lib |
||||
, fetchFromGitLab |
||||
, rustPlatform |
||||
, pkg-config |
||||
, clang |
||||
, libclang |
||||
, glib |
||||
, gtk4 |
||||
, pipewire |
||||
}: |
||||
|
||||
rustPlatform.buildRustPackage rec { |
||||
pname = "helvum"; |
||||
version = "0.2.0"; |
||||
|
||||
src = fetchFromGitLab { |
||||
domain = "gitlab.freedesktop.org"; |
||||
owner = "ryuukyu"; |
||||
repo = pname; |
||||
rev = version; |
||||
sha256 = "sha256-sQ4epL3QNOLHuR/dr/amHgiaxV/1SWeb3eijnjAAR3w="; |
||||
}; |
||||
|
||||
cargoSha256 = "sha256-uNTSU06Fz/ud04K40e98rb7o/uAht0DsiJOXeHX72vw="; |
||||
|
||||
nativeBuildInputs = [ clang pkg-config ]; |
||||
buildInputs = [ glib gtk4 pipewire ]; |
||||
|
||||
LIBCLANG_PATH = "${libclang.lib}/lib"; |
||||
|
||||
meta = with lib; { |
||||
description = "A GTK patchbay for pipewire"; |
||||
homepage = "https://gitlab.freedesktop.org/ryuukyu/helvum"; |
||||
license = licenses.gpl3Only; |
||||
maintainers = with maintainers; [ fufexan ]; |
||||
}; |
||||
} |
@ -0,0 +1,54 @@ |
||||
#! /usr/bin/env nix-shell |
||||
#! nix-shell -p yq bash curl bc ripgrep |
||||
#! nix-shell -i bash |
||||
|
||||
set -Eeuxo pipefail |
||||
|
||||
cleanup() { |
||||
rm -rf "$TMPDIR" |
||||
} |
||||
|
||||
trap cleanup EXIT |
||||
|
||||
ROOT="$(dirname "$(readlink -f "$0")")" |
||||
if [ ! -f "$ROOT/default.nix" ]; then |
||||
echo "ERROR: cannot find default.nix in $ROOT" |
||||
exit 1 |
||||
fi |
||||
|
||||
if [ "$(basename "$ROOT")" != plexamp ]; then |
||||
echo "ERROR: folder not named plexamp" |
||||
exit 1 |
||||
fi |
||||
|
||||
TMPDIR="$(mktemp -d)" |
||||
|
||||
VERSION_FILE="$TMPDIR/version.yml" |
||||
VERSION_URL="https://plexamp.plex.tv/plexamp.plex.tv/desktop/latest-linux.yml" |
||||
curl "$VERSION_URL" -o "$VERSION_FILE" |
||||
|
||||
VERSION="$(yq -r .version "$VERSION_FILE")" |
||||
SHA512="$(yq -r .sha512 "$VERSION_FILE")" |
||||
|
||||
DEFAULT_NIX="$ROOT/default.nix" |
||||
WORKING_NIX="$TMPDIR/default.nix" |
||||
cp "$DEFAULT_NIX" "$WORKING_NIX" |
||||
|
||||
sed -i "s@version = .*;@version = \"$VERSION\";@g" "$WORKING_NIX" |
||||
|
||||
if diff "$DEFAULT_NIX" "$WORKING_NIX"; then |
||||
echo "WARNING: no changes" |
||||
exit 0 |
||||
fi |
||||
|
||||
# update sha hash (convenietly provided) |
||||
sed -i "s@sha.* = .*;@sha512 = \"$SHA512\";@g" "$WORKING_NIX" |
||||
|
||||
# update the changelog ("just" increment the number) |
||||
CHANGELOG_URL=$(rg --only-matching 'changelog = "(.+)";' --replace '$1' $WORKING_NIX) |
||||
CHANGELOG_NUMBER=$(rg --only-matching '.*/([0-9]+)' --replace '$1' <<< $CHANGELOG_URL) |
||||
NEXT_CHANGELOG=$(($CHANGELOG_NUMBER + 1)) |
||||
NEXT_URL=$(rg --only-matching '(.*)/[0-9]+' --replace "\$1/$NEXT_CHANGELOG" <<< $CHANGELOG_URL) |
||||
sed -i "s@changelog = \".*\";@changelog = \"$NEXT_URL\";@" $WORKING_NIX |
||||
|
||||
mv $WORKING_NIX $DEFAULT_NIX |
@ -0,0 +1,36 @@ |
||||
{ lib, fetchurl, appimageTools, }: |
||||
|
||||
let |
||||
pname = "ytmdesktop"; |
||||
version = "1.13.0"; |
||||
name = "${pname}-${version}"; |
||||
|
||||
src = fetchurl { |
||||
url = "https://github.com/ytmdesktop/ytmdesktop/releases/download/v${version}/YouTube-Music-Desktop-App-${version}.AppImage"; |
||||
sha256 = "0f5l7hra3m3q9zd0ngc9dj4mh1lk0rgicvh9idpd27wr808vy28v"; |
||||
}; |
||||
|
||||
appimageContents = appimageTools.extract { inherit name src; }; |
||||
in appimageTools.wrapType2 rec { |
||||
inherit name src; |
||||
|
||||
extraInstallCommands = '' |
||||
mv $out/bin/{${name},${pname}} |
||||
|
||||
install -m 444 \ |
||||
-D ${appimageContents}/youtube-music-desktop-app.desktop \ |
||||
-t $out/share/applications |
||||
substituteInPlace \ |
||||
$out/share/applications/youtube-music-desktop-app.desktop \ |
||||
--replace 'Exec=AppRun' 'Exec=${pname}' |
||||
cp -r ${appimageContents}/usr/share/icons $out/share |
||||
''; |
||||
|
||||
meta = with lib; { |
||||
description = "A Desktop App for YouTube Music"; |
||||
homepage = "https://ytmdesktop.app/"; |
||||
license = licenses.cc0; |
||||
platforms = platforms.linux; |
||||
maintainers = [ maintainers.lgcl ]; |
||||
}; |
||||
} |
@ -0,0 +1,27 @@ |
||||
{ buildGoModule |
||||
, fetchFromGitHub |
||||
, lib |
||||
}: |
||||
|
||||
buildGoModule rec { |
||||
pname = "faraday"; |
||||
version = "0.2.3-alpha"; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "lightninglabs"; |
||||
repo = "faraday"; |
||||
rev = "v${version}"; |
||||
sha256 = "16cqaslsbwda23b5n0sfppybd3ma4ch545100ydxrwac4zhrq4kq"; |
||||
}; |
||||
|
||||
vendorSha256 = "1hh99nfprlmhkc36arg3w1kxby59i2l7n258cp40niv7bjn37hrq"; |
||||
|
||||
subPackages = [ "cmd/frcli" "cmd/faraday" ]; |
||||
|
||||
meta = with lib; { |
||||
description = "LND Channel Management Tools"; |
||||
homepage = "https://github.com/lightninglabs/faraday"; |
||||
license = licenses.mit; |
||||
maintainers = with maintainers; [ proofofkeags ]; |
||||
}; |
||||
} |
@ -1,15 +0,0 @@ |
||||
Subject: Prevent "-dirty" from being erroneously added to the version
|
||||
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index d36d1a3..00048fc 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -28,7 +28,7 @@ always:
|
||||
# Always rebuild because .git/HEAD is a symbolic ref one can't depend on
|
||||
StellarCoreVersion.h: always
|
||||
@vers=$$(cd "$(srcdir)" \
|
||||
- && git describe --always --dirty --tags 2>/dev/null \
|
||||
+ && git describe --always --tags 2>/dev/null \
|
||||
|| echo "$(PACKAGE) $(VERSION)"); \
|
||||
echo "#define STELLAR_CORE_VERSION \"$$vers\"" > $@~
|
||||
@if cmp -s $@~ $@; then rm -f $@~; else \
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue