Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
154 commits
Select commit Hold shift + click to select a range
9ab418c
evcc: 0.130.9 -> 0.130.13
mweinelt Sep 22, 2024
9cce40a
emacsPackages.psgml: add upstream bug link
jian-lin Sep 24, 2024
5197f37
emacsPackages.chronometrist-key-values: override when only needed
jian-lin Oct 6, 2024
54ce6ab
emacsPackages.frontside-javascript: override only when needed
jian-lin Oct 6, 2024
870f259
emacsPackages.alectryon: override only when needed
jian-lin Oct 6, 2024
6d6fcbc
emacsPackages.bpr: override only when needed
jian-lin Oct 13, 2024
ff4389c
python312Packages.icalendar: 5.0.13 -> 6.0.0
dotlambda Jul 18, 2024
710965b
python312Packages.x-wr-timezone: 0.0.7 -> 1.0.1
dotlambda Sep 30, 2024
13a7f03
python312Packages.recurring-ical-events: 3.3.0 -> 3.3.2
dotlambda Sep 30, 2024
170bc03
xandikos: fix compatibility with icalendar v6
dotlambda Oct 1, 2024
a380503
xandikos: modernize
dotlambda Oct 1, 2024
0d1329b
todoman: depends on pytz
dotlambda Oct 1, 2024
ccf534f
todoman: modernize
dotlambda Oct 1, 2024
a5e6db8
python312Packages.icalevents: fix compatibility with icalendar v6
dotlambda Oct 2, 2024
06dc95b
python312Packages.icalendar: 6.0.0 -> 6.0.1
dotlambda Oct 14, 2024
147fa86
autosuspend: 7.0.1 -> 7.0.2
dotlambda Oct 14, 2024
6c6a8a6
khal: pin icalendar at 5.0.13
dotlambda Oct 14, 2024
5bc914f
khal: modernize
dotlambda Oct 14, 2024
8a7eb1b
subread: 2.0.6 -> 2.0.7
r-ryantm Oct 14, 2024
34f4d68
fastjet-contrib: 1.053 -> 1.055 (#348372)
r-ryantm Oct 14, 2024
ff9f8cd
snapweb: init at 0.8.0
ettom Oct 9, 2024
d66d047
nixos/snapserver: default http.docRoot to snapweb
ettom Oct 9, 2024
77ecf16
warp-terminal: 0.2024.10.08.08.02.stable_01 -> 0.2024.10.08.08.02.sta…
FlameFlag Oct 12, 2024
f1f9de4
chore: typos and comment fixups in Go build-support function
yuanwang-wf Oct 17, 2024
080ec11
module.nix aktualisieren
gabyx Oct 11, 2024
75cb666
nixos-rebuild.sh: pass flags to nix-copy-closure whenever possible
elikoga Sep 12, 2024
d7198e4
justbuild: format
GaetanLepage Oct 13, 2024
9ba96cb
justbuild: 1.3.1 -> 1.3.2
GaetanLepage Oct 13, 2024
d2c6af4
justbuild: add tests.version test
GaetanLepage Oct 13, 2024
f637985
justbuild: add update script
GaetanLepage Oct 13, 2024
735dde0
justbuild: use default version of protobuf
GaetanLepage Oct 13, 2024
9d3e156
miniaudicle: 1.5.2.0 -> 1.5.3.0
r-ryantm Oct 13, 2024
ad6727d
mingtest: 0.1.9 -> 0.2.1
r-ryantm Oct 14, 2024
5deffc6
Revert "nixos/tests/networking: test nameservers via DHCP"
vcunat Oct 14, 2024
cdc43e9
python312Packages.cohere: 5.10.0 -> 5.11.0
GaetanLepage Oct 1, 2024
42b13f8
saunafs: create link for mount.saunafs
markuskowa Oct 4, 2024
2f2c9c5
nixos/saunafs: add module + test
markuskowa Oct 3, 2024
7d56d28
saunafs: add VM test to passthru.test
markuskowa Oct 8, 2024
24d4751
nixos/release-notes: add saunafs under "New modules" sections
markuskowa Oct 8, 2024
fdb91f4
supergfxctl: 5.2.1 -> 5.2.4
r-ryantm Oct 14, 2024
0f89cfa
kdePackages.klevernotes: 1.0.0 -> 1.1.0
r-ryantm Oct 14, 2024
17babcd
vimPlugins.leetcode-nvim: init at 2024-06-27
Sep 7, 2024
0e46bd8
nemu: fix build
msanft Oct 14, 2024
0f8b95b
bear: reformat using RFC style
jchv Oct 14, 2024
cc40bc2
bear: fix build failure
jchv Oct 14, 2024
a0c60f1
nushellPlugins.net: 1.7.0 -> 1.8.0
happysalada Oct 13, 2024
ed866ba
mise: fix shell completion
konradmalik Sep 23, 2024
bae3157
exult: 1.8 -> 1.10.1
romatthe Oct 13, 2024
7e6f475
yofi: fix build
ocfox Sep 27, 2024
da81b95
vscode-extensions.elixir-lsp.vscode-elixir-ls: 0.24.0 -> 0.24.1
datafoo Oct 14, 2024
76e34bc
fcp: move to by-name; nixfmt
Bot-wxt1221 Sep 28, 2024
6987517
fcp: fix build
Bot-wxt1221 Sep 28, 2024
0adadc0
python312Packages.testcontainers: 4.8.1 -> 4.8.2
GaetanLepage Oct 14, 2024
db1fd9e
hatch: 1.12.0 -> 1.13.0
GaetanLepage Oct 14, 2024
5988ce7
python312Packages.optimum: 1.22.0 -> 1.23.0
r-ryantm Oct 11, 2024
e68442c
pdm: 2.19.1 -> 2.19.2
jfvillablanca Oct 11, 2024
74debf8
python3Packages.django-mdeditor: patch out polyfill.io usage, bump KaTeX
tomodachi94 Oct 9, 2024
431a218
gitlab: 17.2.8 -> 17.2.9
srhb Oct 10, 2024
4969726
netdata: 1.47.3 -> 1.47.4
rhoriguchi Oct 10, 2024
c5fe7a9
minetest: add mainProgram and conditional test builds
peterhoeg Oct 10, 2024
8e34eda
mjmap: init at 0.1.0-unstable-2023-11-13
emilazy Oct 6, 2024
4498081
unrar-free: 0.3.0 -> 0.3.1
r-ryantm Oct 14, 2024
6103276
mkPythonPackage, mkPythonApplication: handle passthru with mkDerivation
ShamrockLee Oct 7, 2024
5bc3819
buildPython*: Deprecate and remove (buildPython* { ... }).override
ShamrockLee Aug 10, 2024
ddd1f57
seabios: nixfmt-rfc-style
AndersonTorres Sep 30, 2024
ec6cee1
seabios: use outputDoc
AndersonTorres Sep 30, 2024
4d1dc30
seabios: new parameter ___build-type
AndersonTorres Sep 30, 2024
b1ad024
seabios: passthru attribute `firmware`
AndersonTorres Sep 30, 2024
601ec35
{seabios-coreboot, seabios-csm, seabios-qemu}: "init"
AndersonTorres Sep 30, 2024
6ecc822
python312Packages.accelerate: 0.34.2 -> 1.0.0
r-ryantm Oct 9, 2024
d31d181
python312Packages.gotenberg-client: 0.6.0 -> 0.7.0
r-ryantm Oct 9, 2024
bfa385c
python3.tests: remove unnecessary condition and disable failing tests…
natsukium Oct 3, 2024
937520c
python312Packages.pynitrokey: 0.4.50 -> 0.6.0
panicgh Oct 5, 2024
4bdaa85
oqs-provider: fix hash for retagged 0.7.0
sgvictorino Oct 13, 2024
e5e3a80
python312Packages.ipytablewidgets: 0.3.1 -> 0.3.2
r-ryantm Oct 13, 2024
a67c7d6
openapi-generator-cli: 7.8.0 -> 7.9.0
r-ryantm Oct 8, 2024
eae45da
cubiomes-viewer: 4.0.1 -> 4.1.0
r-ryantm Oct 8, 2024
5b22758
sway-assign-cgroups: 0.4.0 -> 0.4.1
r-ryantm Oct 7, 2024
80ed967
debian-goodies: 0.88.1 -> 0.88.2
r-ryantm Oct 13, 2024
65d0038
nng: 1.8.0 -> 1.9.0
r-ryantm Oct 7, 2024
c30873c
netscanner: 0.5.3 -> 0.6.0
r-ryantm Oct 11, 2024
3032cc7
ord: 0.20.0 -> 0.20.1
r-ryantm Oct 4, 2024
2a02a10
alpaca: 2.6.0 -> 2.6.5
Aleksanaa Oct 14, 2024
69e52f9
proton-pass: 1.23.0 -> 1.23.1
Steinhagen Oct 12, 2024
9da0a11
llvmPackages_13: build from filtered monorepoSrc
sternenseemann Oct 11, 2024
6c08559
radicale: 3.2.3 -> 3.3.0
dotlambda Oct 14, 2024
d979420
wire-desktop: add CVE-2024-6775 to knownVulnerabilities
flokli Oct 13, 2024
97c786b
percona-server, percona-xtrabackup: rework naming
osnyx Oct 2, 2024
4f3d854
percona-server_8_4: init at 8.4.0-1
osnyx Oct 2, 2024
20c82c3
percona-server_8_0: 8.0.36-28 -> 8.0.37-29
osnyx Oct 13, 2024
a1e4df4
percona-xtrabackup_8_0: 8.0.36-30 -> 8.0.35-31
osnyx Oct 2, 2024
50b62f0
percona-xtrabackup_8_4: init at 8.4.0-1
osnyx Oct 2, 2024
343a057
percona: release notes for 8.4 LTS release
osnyx Oct 2, 2024
072f100
percona: apply nixfmt
osnyx Oct 2, 2024
78e2071
.git-blame-ignore-revs: add percona reformatting
osnyx Oct 2, 2024
75df38d
percona: deprecate innovation/lts release flavours
osnyx Oct 13, 2024
6b78f22
tests/mysql: properly specify percona packages
osnyx Oct 13, 2024
922b9ac
percona: correct licensing information
osnyx Oct 13, 2024
0f7ef0f
sickgear: 3.32.7 -> 3.32.10
r-ryantm Oct 7, 2024
cd70baa
elektroid: 3.0.1 -> 3.1
r-ryantm Oct 7, 2024
824a7e2
sdrangel: 7.22.0 -> 7.22.1
r-ryantm Oct 6, 2024
899206a
cargo-binstall: 1.10.5 -> 1.10.7
r-ryantm Oct 6, 2024
b4d6ca0
termius: 9.6.1 -> 9.7.2
r-ryantm Oct 6, 2024
80a9260
zarf: 0.40.1 -> 0.41.0
r-ryantm Oct 6, 2024
8fe8b6b
local-ai: 2.21.1 -> 2.22.0
ck3d Oct 12, 2024
c45c889
python312Packages.xarray: don't use with lib; in meta
doronbehar Oct 8, 2024
fbb787d
python312Packages.xarray: adopt by doronbehar
doronbehar Oct 8, 2024
bc45478
python312Packages.xarray: 2024.07.0 -> 2024.09.0
doronbehar Oct 8, 2024
d4df2ec
texlab: 5.19.0 -> 5.20.0
kira-bruneau Oct 9, 2024
561c9c3
texlab: fix aarch64-linux build
doronbehar Oct 14, 2024
d212634
python312Packages.lxmf: 0.5.5 -> 0.5.6
fabaff Oct 13, 2024
9a5b083
python312Packages.rns: 0.8.3 -> 0.8.4
fabaff Oct 13, 2024
9502f65
python312Packages.types-pytz: 2024.2.0.20240913 -> 2024.2.0.20241003
fabaff Oct 13, 2024
9615fe1
felix-fm: 2.13.0 -> 2.14.0
fabaff Oct 13, 2024
316014c
ttop: 1.5.2 -> 1.5.3
fabaff Oct 13, 2024
eaec82c
ttop: format with nixfmt
fabaff Oct 13, 2024
78f5b8a
python312Packages.gios: 4.0.0 -> 5.0.0
fabaff Oct 12, 2024
424e3ef
python312Packages.mypy-boto3-acm-pca: 1.35.0 -> 1.35.38
fabaff Oct 12, 2024
6dc4e0c
python312Packages.mypy-boto3-appflow: 1.35.0 -> 1.35.39
fabaff Oct 12, 2024
1fd74f5
python312Packages.mypy-boto3-codepipeline: 1.35.33 -> 1.35.37
fabaff Oct 12, 2024
39dd0e1
python312Packages.mypy-boto3-dms: 1.35.0 -> 1.35.38
fabaff Oct 12, 2024
1e099ba
python312Packages.mypy-boto3-ec2: 1.35.34 -> 1.35.38
fabaff Oct 12, 2024
6d08095
python312Packages.mypy-boto3-ecs: 1.35.21 -> 1.35.38
fabaff Oct 12, 2024
bce85f7
python312Packages.mypy-boto3-elastic-inference: 1.35.0 -> 1.35.38
fabaff Oct 12, 2024
c2773b0
python312Packages.mypy-boto3-elbv2: 1.35.18 -> 1.35.39
fabaff Oct 12, 2024
494a7ee
python312Packages.mypy-boto3-emr: 1.35.18 -> 1.35.39
fabaff Oct 12, 2024
78b7735
python312Packages.mypy-boto3-guardduty: 1.35.22 -> 1.35.39
fabaff Oct 12, 2024
b15f021
python312Packages.mypy-boto3-iotfleetwise: 1.35.0 -> 1.35.38
fabaff Oct 12, 2024
141ab3a
python312Packages.mypy-boto3-outposts: 1.35.0 -> 1.35.38
fabaff Oct 12, 2024
0c20785
python312Packages.mypy-boto3-robomaker: 1.35.0 -> 1.35.39
fabaff Oct 12, 2024
1173327
python312Packages.mypy-boto3-route53resolver: 1.35.0 -> 1.35.38
fabaff Oct 12, 2024
85944d4
python312Packages.meshtastic: 2.5.1 -> 2.5.2
fabaff Oct 14, 2024
59ad2ad
python312Packages.tencentcloud-sdk-python: 3.0.1248 -> 3.0.1249
fabaff Oct 14, 2024
b7e25f4
heimdal: remove absolute path to pwd, replace patchPhase with postPat…
SuperSandro2000 Oct 10, 2024
2ac4ed6
datefudge: 1.26 -> 1.27
r-ryantm Oct 14, 2024
cbe7b21
feather: 2.6.8 -> 2.7.0
r-ryantm Oct 14, 2024
6656680
knot-dns: 3.4.0 -> 3.4.1
vcunat Oct 14, 2024
e822362
nixos/knotd: extend SystemCallFilter
vcunat Oct 14, 2024
4e59b17
cloak-pt: 2.9.0 -> 2.10.0
r-ryantm Oct 14, 2024
4974070
mask: 0.11.4 -> 0.11.6
r-ryantm Oct 14, 2024
0475b93
z-lua: 1.8.18 -> 1.8.19
r-ryantm Oct 14, 2024
51d59cf
sof-firmware: add new files from 2024.09
melvyn2 Oct 14, 2024
5588005
apkeep: 0.16.0 -> 0.17.0
r-ryantm Oct 14, 2024
8462ca4
gallery-dl: 1.27.5 -> 1.27.6
FlameFlag Oct 12, 2024
999e749
riscv-pk: 1.0.0 -> unstable-2024-10-09
SharzyL Oct 14, 2024
52b1a45
python3Packages.skytemple-ssb-emulator: 1.6.4 -> 1.8.0, fetch from Gi…
marius851000 Sep 21, 2024
822e557
python3Packages.skytemple-ssb-debugger: 1.7.0 -> 1.8.2
marius851000 Sep 21, 2024
d3e94a4
python3Packages.pmdsky-debug-py: 8.0.4 -> 10.0.21
marius851000 Sep 21, 2024
bd534d9
python3Packages.explorerscript: 0.1.3 -> 0.2.1.post2, do not rebuild …
marius851000 Sep 21, 2024
06b239c
python3Packages.skytemple-rust: 1.6.5 -> 1.8.2, fetch from GitHub
marius851000 Sep 21, 2024
09ab712
python3Packages.skytemple-files: 1.7.0 -> 1.8.3
marius851000 Sep 21, 2024
bf60c84
skytemple: 1.6.5 -> 1.8.3
marius851000 Sep 21, 2024
6f66c01
tmux-sessionizer: 0.4.2 -> 0.4.3
r-ryantm Oct 14, 2024
3d49a60
nanovg and monomer can build on darwins
yuanwang-wf Oct 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -186,3 +186,6 @@ cffc27daf06c77c0d76bc35d24b929cb9d68c3c9

# fetchurl: nixfmt-rfc-style
ce21e97a1f20dee15da85c084f9d1148d84f853b

# percona: apply nixfmt
8d14fa2886fec877690c6d28cfcdba4503dbbcea
10 changes: 10 additions & 0 deletions nixos/doc/manual/release-notes/rl-2411.section.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,8 @@

- [Immich](https://github.com/immich-app/immich), a self-hosted photo and video backup solution. Available as [services.immich](#opt-services.immich.enable).

- [saunafs](https://saunafs.com) Distributed POSIX file system. Available as [services.saunafs](options.html#opt-services.saunafs).

- [obs-studio](https://obsproject.com/), Free and open source software for video recording and live streaming. Available as [programs.obs-studio.enable](#opt-programs.obs-studio.enable).

- [Veilid](https://veilid.com), a headless server that enables privacy-focused data sharing and messaging on a peer-to-peer network. Available as [services.veilid](#opt-services.veilid.enable).
Expand All @@ -187,6 +189,9 @@

- The nvidia driver no longer defaults to the proprietary driver starting with version 560. You will need to manually set `hardware.nvidia.open` to select the proprietary or open driver.

- The `(buildPythonPackage { ... }).override` attribute is now deprecated and removed in favour of `overridePythonAttrs`.
This change does not affect the override interface of most Python packages, as [`<pkg>.override`](https://nixos.org/manual/nixpkgs/unstable/#sec-pkg-override) provided by `callPackage` shadows such a locally-defined `override` attribute.

- All Cinnamon and XApp packages have been moved to top-level (i.e., `cinnamon.nemo` is now `nemo`).

- All GNOME packages have been moved to top-level (i.e., `gnome.nautilus` is now `nautilus`).
Expand Down Expand Up @@ -227,6 +232,11 @@
Also be aware that if you have set additional options in `services.wstunnel.{clients,servers}.<name>.extraArgs`,
that those might have been removed or modified upstream.

- `percona-server_8_4` and `mysql84` now have password authentication via the deprecated `mysql_native_password` disabled by default. This authentication plugin can be enabled via a CLI argument again, for detailed instructions and alternative authentication methods [see upstream documentation](https://dev.mysql.com/doc/refman/8.4/en/native-pluggable-authentication.html). The config file directive `default_authentication_plugin` has been removed.

- Percona has decided not to follow the LTS/ Innovation release scheme of upstream MySQL and thus [will only create releases for MySQL LTS versions](https://www.percona.com/blog/no-mysql-9-x-innovation-releases-from-percona/). Hence, the package names `percona-server_lts`, `percona-server_innovation`, `percona-xtrabackup_lts` and `percona-xtrabackup_innovation` are deprecated.
- `percona-server` and `percona-server_lts` now point towards the new LTS release `percona-server_8_4`. The previous LTS continues to be supported and is available as `percona-server_8_0`. The same is true for the supporting `percona-xtrabackup` tooling.

- `clang-tools_<version>` packages have been moved into `llvmPackages_<version>` (i.e. `clang-tools_18` is now `llvmPackages_18.clang-tools`).
- For convenience, the top-level `clang-tools` attribute remains and is now bound to `llvmPackages.clang-tools`.
- Top-level `clang_tools_<version>` attributes are now aliases; these will be removed in a future release.
Expand Down
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -965,6 +965,7 @@
./services/network-filesystems/rsyncd.nix
./services/network-filesystems/samba-wsdd.nix
./services/network-filesystems/samba.nix
./services/network-filesystems/saunafs.nix
./services/network-filesystems/tahoe.nix
./services/network-filesystems/u9fs.nix
./services/network-filesystems/webdav-server-rs.nix
Expand Down
3 changes: 2 additions & 1 deletion nixos/modules/services/audio/snapserver.nix
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,8 @@ in {

http.docRoot = lib.mkOption {
type = with lib.types; nullOr path;
default = null;
default = pkgs.snapweb;
defaultText = lib.literalExpression "pkgs.snapweb";
description = ''
Path to serve from the HTTP servers root.
'';
Expand Down
287 changes: 287 additions & 0 deletions nixos/modules/services/network-filesystems/saunafs.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,287 @@
{
config,
lib,
pkgs,
...
}:

let
cfg = config.services.saunafs;

settingsFormat =
let
listSep = " ";
allowedTypes = with lib.types; [
bool
int
float
str
];
valueToString =
val:
if lib.isList val then
lib.concatStringsSep listSep (map (x: valueToString x) val)
else if lib.isBool val then
(if val then "1" else "0")
else
toString val;

in
{
type =
let
valueType =
lib.types.oneOf (
[
(lib.types.listOf valueType)
]
++ allowedTypes
)
// {
description = "Flat key-value file";
};
in
lib.types.attrsOf valueType;

generate =
name: value:
pkgs.writeText name (
lib.concatStringsSep "\n" (lib.mapAttrsToList (key: val: "${key} = ${valueToString val}") value)
);
};

initTool = pkgs.writeShellScriptBin "sfsmaster-init" ''
if [ ! -e ${cfg.master.settings.DATA_PATH}/metadata.sfs ]; then
cp --update=none ${pkgs.saunafs}/var/lib/saunafs/metadata.sfs.empty ${cfg.master.settings.DATA_PATH}/metadata.sfs
chmod +w ${cfg.master.settings.DATA_PATH}/metadata.sfs
fi
'';

# master config file
masterCfg = settingsFormat.generate "sfsmaster.cfg" cfg.master.settings;

# metalogger config file
metaloggerCfg = settingsFormat.generate "sfsmetalogger.cfg" cfg.metalogger.settings;

# chunkserver config file
chunkserverCfg = settingsFormat.generate "sfschunkserver.cfg" cfg.chunkserver.settings;

# generic template for all daemons
systemdService = name: extraConfig: configFile: {
wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ];
after = [
"network.target"
"network-online.target"
];

serviceConfig = {
Type = "forking";
ExecStart = "${pkgs.saunafs}/bin/sfs${name} -c ${configFile} start";
ExecStop = "${pkgs.saunafs}/bin/sfs${name} -c ${configFile} stop";
ExecReload = "${pkgs.saunafs}/bin/sfs${name} -c ${configFile} reload";
} // extraConfig;
};

in
{
###### interface

options = {
services.saunafs = {
masterHost = lib.mkOption {
type = lib.types.str;
default = null;
description = "IP or hostname name of master host.";
};

sfsUser = lib.mkOption {
type = lib.types.str;
default = "saunafs";
description = "Run daemons as user.";
};

client.enable = lib.mkEnableOption "Saunafs client";

master = {
enable = lib.mkOption {
type = lib.types.bool;
description = ''
Enable Saunafs master daemon.
You need to run `sfsmaster-init` on a freshly installed master server to
initialize the `DATA_PATH` directory.
'';
default = false;
};

exports = lib.mkOption {
type = with lib.types; listOf str;
default = null;
description = "Paths to exports file (see {manpage}`sfsexports.cfg(5)`).";
example = lib.literalExpression ''
[ "* / rw,alldirs,admin,maproot=0:0" ];
'';
};

openFirewall = lib.mkOption {
type = lib.types.bool;
description = "Whether to automatically open the necessary ports in the firewall.";
default = false;
};

settings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;

options.DATA_PATH = lib.mkOption {
type = lib.types.str;
default = "/var/lib/saunafs/master";
description = "Data storage directory.";
};
};

description = "Contents of config file ({manpage}`sfsmaster.cfg(5)`).";
};
};

metalogger = {
enable = lib.mkEnableOption "Saunafs metalogger daemon";

settings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;

options.DATA_PATH = lib.mkOption {
type = lib.types.str;
default = "/var/lib/saunafs/metalogger";
description = "Data storage directory";
};
};

description = "Contents of metalogger config file (see {manpage}`sfsmetalogger.cfg(5)`).";
};
};

chunkserver = {
enable = lib.mkEnableOption "Saunafs chunkserver daemon";

openFirewall = lib.mkOption {
type = lib.types.bool;
description = "Whether to automatically open the necessary ports in the firewall.";
default = false;
};

hdds = lib.mkOption {
type = with lib.types; listOf str;
default = null;

example = lib.literalExpression ''
[ "/mnt/hdd1" ];
'';

description = ''
Mount points to be used by chunkserver for storage (see {manpage}`sfshdd.cfg(5)`).
Note, that these mount points must writeable by the user defined by the saunafs user.
'';
};

settings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;

options.DATA_PATH = lib.mkOption {
type = lib.types.str;
default = "/var/lib/saunafs/chunkserver";
description = "Directory for chunck meta data";
};
};

description = "Contents of chunkserver config file (see {manpage}`sfschunkserver.cfg(5)`).";
};
};
};
};

###### implementation

config =
lib.mkIf (cfg.client.enable || cfg.master.enable || cfg.metalogger.enable || cfg.chunkserver.enable)
{

warnings = [
(lib.mkIf (cfg.sfsUser == "root") "Running saunafs services as root is not recommended.")
];

# Service settings
services.saunafs = {
master.settings = lib.mkIf cfg.master.enable {
WORKING_USER = cfg.sfsUser;
EXPORTS_FILENAME = toString (
pkgs.writeText "sfsexports.cfg" (lib.concatStringsSep "\n" cfg.master.exports)
);
};

metalogger.settings = lib.mkIf cfg.metalogger.enable {
WORKING_USER = cfg.sfsUser;
MASTER_HOST = cfg.masterHost;
};

chunkserver.settings = lib.mkIf cfg.chunkserver.enable {
WORKING_USER = cfg.sfsUser;
MASTER_HOST = cfg.masterHost;
HDD_CONF_FILENAME = toString (
pkgs.writeText "sfshdd.cfg" (lib.concatStringsSep "\n" cfg.chunkserver.hdds)
);
};
};

# Create system user account for daemons
users =
lib.mkIf
(cfg.sfsUser != "root" && (cfg.master.enable || cfg.metalogger.enable || cfg.chunkserver.enable))
{
users."${cfg.sfsUser}" = {
isSystemUser = true;
description = "saunafs daemon user";
group = "saunafs";
};
groups."${cfg.sfsUser}" = { };
};

environment.systemPackages =
(lib.optional cfg.client.enable pkgs.saunafs) ++ (lib.optional cfg.master.enable initTool);

networking.firewall.allowedTCPPorts =
(lib.optionals cfg.master.openFirewall [
9419
9420
9421
])
++ (lib.optional cfg.chunkserver.openFirewall 9422);

# Ensure storage directories exist
systemd.tmpfiles.rules =
lib.optional cfg.master.enable "d ${cfg.master.settings.DATA_PATH} 0700 ${cfg.sfsUser} ${cfg.sfsUser} -"
++ lib.optional cfg.metalogger.enable "d ${cfg.metalogger.settings.DATA_PATH} 0700 ${cfg.sfsUser} ${cfg.sfsUser} -"
++ lib.optional cfg.chunkserver.enable "d ${cfg.chunkserver.settings.DATA_PATH} 0700 ${cfg.sfsUser} ${cfg.sfsUser} -";

# Service definitions
systemd.services.sfs-master = lib.mkIf cfg.master.enable (
systemdService "master" {
TimeoutStartSec = 1800;
TimeoutStopSec = 1800;
Restart = "no";
} masterCfg
);

systemd.services.sfs-metalogger = lib.mkIf cfg.metalogger.enable (
systemdService "metalogger" { Restart = "on-abort"; } metaloggerCfg
);

systemd.services.sfs-chunkserver = lib.mkIf cfg.chunkserver.enable (
systemdService "chunkserver" { Restart = "on-abort"; } chunkserverCfg
);
};
}
1 change: 1 addition & 0 deletions nixos/modules/services/networking/knot.nix
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,7 @@ in {
SystemCallFilter = [
"@system-service"
"~@privileged"
"@chown"
] ++ optionals (cfg.enableXDP) [
"bpf"
];
Expand Down
1 change: 1 addition & 0 deletions nixos/tests/all-tests.nix
Original file line number Diff line number Diff line change
Expand Up @@ -889,6 +889,7 @@ in {
samba-wsdd = handleTest ./samba-wsdd.nix {};
sane = handleTest ./sane.nix {};
sanoid = handleTest ./sanoid.nix {};
saunafs = handleTest ./saunafs.nix {};
scaphandre = handleTest ./scaphandre.nix {};
schleuder = handleTest ./schleuder.nix {};
scion-freestanding-deployment = handleTest ./scion/freestanding-deployment {};
Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/mysql/common.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
inherit (pkgs) mysql80;
};
perconaPackages = {
inherit (pkgs) percona-server_lts percona-server_innovation;
inherit (pkgs) percona-server_8_0 percona-server_8_4;
};
mkTestName = pkg: "mariadb_${builtins.replaceStrings ["."] [""] (lib.versions.majorMinor pkg.version)}";
}
4 changes: 0 additions & 4 deletions nixos/tests/networking/networkd-and-scripted.nix
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,6 @@ let
client.wait_until_succeeds("ip addr show dev enp2s0 | grep -q '192.168.2'")
client.wait_until_succeeds("ip addr show dev enp2s0 | grep -q 'fd00:1234:5678:2:'")
with subtest("Wait until we have received the nameservers"):
client.wait_until_succeeds("grep -q 2001:db8::1 /etc/resolv.conf")
client.wait_until_succeeds("grep -q 192.168.2.1 /etc/resolv.conf")
with subtest("Test vlan 1"):
client.wait_until_succeeds("ping -c 1 192.168.1.1")
client.wait_until_succeeds("ping -c 1 fd00:1234:5678:1::1")
Expand Down
1 change: 0 additions & 1 deletion nixos/tests/networking/networkmanager.nix
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,6 @@ let
static.wait_for_unit("NetworkManager.service")
dynamic.wait_until_succeeds("cat /etc/resolv.conf | grep -q '192.168.1.1'")
dynamic.wait_until_succeeds("cat /etc/resolv.conf | grep -q '2001:db8::1'")
static.wait_until_succeeds("cat /etc/resolv.conf | grep -q '10.10.10.10'")
static.wait_until_fails("cat /etc/resolv.conf | grep -q '192.168.1.1'")
'';
Expand Down
1 change: 0 additions & 1 deletion nixos/tests/networking/router.nix
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@
AdvSendAdvert on;
AdvManagedFlag on;
AdvOtherConfigFlag on;
RDNSS 2001:db8::1 {};
prefix fd00:1234:5678:${toString n}::/64 {
AdvAutonomous off;
Expand Down
Loading