Commit Graph

66 Commits

Author SHA1 Message Date
pennae
2e751c0772 treewide: automatically md-convert option descriptions
the conversion procedure is simple:

 - find all things that look like options, ie calls to either `mkOption`
   or `lib.mkOption` that take an attrset. remember the attrset as the
   option
 - for all options, find a `description` attribute who's value is not a
   call to `mdDoc` or `lib.mdDoc`
 - textually convert the entire value of the attribute to MD with a few
   simple regexes (the set from mdize-module.sh)
 - if the change produced a change in the manual output, discard
 - if the change kept the manual unchanged, add some text to the
   description to make sure we've actually found an option. if the
   manual changes this time, keep the converted description

this procedure converts 80% of nixos options to markdown. around 2000
options remain to be inspected, but most of those fail the "does not
change the manual output check": currently the MD conversion process
does not faithfully convert docbook tags like <code> and <package>, so
any option using such tags will not be converted at all.
2022-07-30 15:16:34 +02:00
Artturi
3cff3f75b4
Merge pull request #166340 from max-privatevoid/patch-6 2022-06-28 19:55:10 +03:00
Max
2a8bf9777d nixos/ipfs: do not leak config to journal on startup
The preStart script for the IPFS service will print parts of the configuration
to stdout (and therefore, the journal) when applying profiles on startup. This
may lead to unwanted disclosure of private information, such as remote pinning
service API keys. Fix by sending stdout to /dev/null.
2022-06-17 23:41:27 +02:00
Max
72d6d73e37 nixos/ipfs: Only set ReadWritePaths when hardened
Co-authored-by: Luflosi <Luflosi@users.noreply.github.com>
2022-04-16 20:48:28 +02:00
Luflosi
faad370edc nixos/ipfs: fix the services.ipfs.autoMigrate option
Apparently this was never properly tested and never worked. When the IPFS repo needs upgrading, the first call to ipfs, which is run before running the migration, fails with the error message "Error: ipfs repo needs migration".
To fix this, simply run the migration before any `ipfs config` calls but don't run it when `dataDir` is empty and we need to call `ipfs init`.
Writing a NixOS test for this would require keeping at least two versions of IPFS in Nixpkgs, which we don't currently do.
2022-04-16 07:38:13 -04:00
Luflosi
8a5e51525d nixos/ipfs: add Luflosi as maintainer 2022-04-16 07:38:13 -04:00
Luflosi
6b2eca8d56 nixos/ipfs: remove unused code
This code became obsolete with 4044d81d5c, just a couple days after it was introduced.
2022-04-16 07:38:13 -04:00
Robert Hensing
39e0bd705b
Merge pull request #165259 from Luflosi/ipfs-recursiveUpdate
nixos/ipfs: use lib.recursiveUpdate instead of // operator
2022-04-05 19:16:39 +02:00
Luflosi
ec415055ba nixos/ipfs: improve how the commandline flags are generated
Use `utils.escapeSystemdExecArgs` instead of relying on the exact way in which `toString` formats a list.
In https://github.com/NixOS/nixpkgs/pull/156706#discussion_r795867283 a suggestion was made and then implemented to replace `toString` with `concatStringsSep " "`.
@pennae then suggested to use `utils.escapeSystemdExecArgs` instead in https://github.com/NixOS/nixpkgs/pull/164846#issuecomment-1073001848.
2022-03-24 20:42:07 +00:00
Luflosi
38f1576ba9
nixos/ipfs: use lib.recursiveUpdate instead of // operator
Use `recursiveUpdate` instead of the // operator, as recommended in https://nix.dev/anti-patterns/language#attr1-attr2-merge-operator. Without this change, setting `services.ipfs.extraConfig.Addresses.NoAnnounce` for example will cause `services.ipfs.apiAddress`, `services.ipfs.gatewayAddress` and `services.ipfs.swarmAddress` to be ignored.
2022-03-22 13:01:35 +01:00
Luflosi
41d45d674a
nixos/ipfs: add systemd hardening
Use the hardened systemd unit from upstream.
2022-03-22 11:12:14 +01:00
Luflosi
0eb1d070c8 ipfs-migrator: 1.7.1 -> 2.0.2
https://github.com/ipfs/fs-repo-migrations/releases/tag/v2.0.2

This is pretty much a complete rewrite of the ipfs-migrator package.
In version 2.0.0 a major change was made to the way the migrator works. Before, there was one binary that contained every migration. Now every migration has its own binary. If fs-repo-migrations can't find a required binary in the PATH, it will download it off the internet. To prevent that, build every migration individually, symlink them all into one package and then wrap fs-repo-migrations so it finds the package with all the migrations.
The change to the IPFS NixOS module and the IPFS package is needed because without explicitly specifying a repo version to migrate to, fs-repo-migrations will query the internet to find the latest version. This fails in the sandbox, for example when testing the ipfs passthru tests.
While it may seem like the repoVersion and IPFS version are in sync and the code could be simplified, this is not the case. See https://github.com/ipfs/fs-repo-migrations#when-should-i-migrate for a table with the IPFS versions and corresponding repo versions.
Go 1.17 breaks the migrations, so use Go 1.16 instead. This is also the Go version used in their CI, see 3dc218e300/.github/workflows/test.yml (L4). See https://github.com/ipfs/fs-repo-migrations/pull/140#issuecomment-982715907 for a previous mention of this issue. The issue manifests itself when doing anything with a migration, for example `fs-repo-11-to-12 --help`:
```
panic: qtls.ClientHelloInfo doesn't match

goroutine 1 [running]:
github.com/marten-seemann/qtls-go1-15.init.0()
	github.com/marten-seemann/qtls-go1-15@v0.1.1/unsafe.go:20 +0x132
```
Also add myself as a maintainer for this package.
This fixes the test failure discovered in https://github.com/NixOS/nixpkgs/pull/160914.
See https://github.com/ipfs/fs-repo-migrations/issues/148 to read some of my struggles with updating this package.
2022-02-25 11:12:19 -08:00
schnusch
97f809dc87 nixos/ipfs: use ipfs config replace 2022-02-06 21:42:56 +01:00
pennae
2512455639 nixos/*: add trivial defaultText for options with simple defaults 2021-12-02 22:35:04 +01:00
Naïm Favier
2ddc335e6f
nixos/doc: clean up defaults and examples 2021-10-04 12:47:20 +02:00
Kevin Cox
a49a3d97ac
Merge pull request #137113 from kevincox/ipfs-profile-fix
nixos.ipfs: Fix startup after unclean shutdown.
2021-09-10 08:26:04 -04:00
happysalada
6a51087bba ipfs: default to not listen on the local network 2021-09-10 09:39:55 +09:00
Kevin Cox
af354d2049
nixos.ipfs: Fix startup after unclean shutdown.
Fixes https://github.com/NixOS/nixpkgs/issues/135684
2021-09-08 12:17:22 -04:00
Kevin Cox
3106d032f7
Merge pull request #136261 from happysalada/ipfs_auto_migrations
Ipfs auto migrations
2021-08-31 09:33:20 -04:00
happysalada
8bce3034fd ipfs: add autoMigrate option 2021-08-31 22:22:36 +09:00
happysalada
4502d6386e ipfs: nixpkgs-fmt 2021-08-31 12:55:31 +09:00
happysalada
977ac07fed ipfs: increase UDP buffer size 2021-08-31 09:50:59 +09:00
happysalada
54dbdcbcbb ipfs: nixpkgs-fmt 2021-08-31 09:50:59 +09:00
Max
8f36abb528
nixos/ipfs: run profile applications offline 2021-08-30 01:00:44 +02:00
Luflosi
2b02b34029
nixos/ipfs: replace deprecated command line option
According to https://docs.ipfs.io/reference/cli/#ipfs the --local command line option is deprecated and should be replaced with --offline.
2021-06-30 17:32:38 +02:00
Luflosi
b32b56cd54
nixos/ipfs: remove separate ipfs-init systemd unit
There is no need for a separate unit. Simplify the NixOS module by adding the shell code to preStart of the main unit, where the other initialization code already is.
2021-04-22 21:13:05 +02:00
Luflosi
5ff547e729
nixos/ipfs: fix typo in comment
This typo was introduced in 4044d81d5c.
2021-04-21 21:49:48 +02:00
Fabián Heredia Montiel
acd3d3dd20 nixos/modules/services/network-filesystems/ipfs: refactor
Add `package` option to change the package used for the service.
2020-11-03 17:35:06 -06:00
John Ericson
e6fe9abd8b nixos/ipfs: Allow QUIC connections to socket activate too
Well, via the underlying UDP. QUIC-level socket activation we'll get
someday.
2020-08-11 22:08:19 +00:00
Luflosi
4d9dec0aba
nixos/ipfs: add QUIC transport to swarmAddress list
According to https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#addressesswarm, the default list of swarm multiaddrs now includes the QUIC transport.
2020-08-08 23:08:56 +02:00
John Ericson
4044d81d5c IPFS NixOS module: Socket unit file more precise
The systemd socket unit files now more precisely track the IPFS
configuration, by including any multaddr they can make a `ListenStream`
for. (The daemon doesn't currently support anything which would use
`ListDatagram`, so we don't need to worry about that.)

The tests use some of these features.
2020-06-17 21:43:04 +00:00
Matthew Bauer
2c2f6c0b38 nixos/ipfs: only set listenstream when gateway/api is default 2020-06-12 17:15:34 -05:00
Matthew Bauer
982a17a48e nixos/ipfs: always expose sockets 2020-06-12 17:15:34 -05:00
Matthew Bauer
fa06d8f961 nixos/ipfs: actually use upstream systemd units 2020-06-12 17:15:34 -05:00
Matthew Bauer
b36ef706fb nixos/ipfs: add startWhenNeeded option
This makes it possible to only start IPFS when needed. So a user’s
IPFS daemon only starts when they actually use it.

A few important warnings though:

  - This probably shouldn’t be mixed with services.ipfs.autoMount
    since you want /ipfs and /ipns aren’t activated like this
  - ipfs.socket assumes that you are using ports 5001 and 8080 for the
    API and gateway respectively. We could do some parsing to figure
    out what is in apiAddress and gatewayAddress, but that’s kind of
    difficult given the nonstandard address format.
  - Apparently? this doesn’t work with the --api commands used in the tests.

Of course you can always start automatically with startWhenNeeded =
false, or just running ‘systemctl start ipfs.service’.

Tested with the following test (modified from tests/ipfs.nix):

  import ./make-test-python.nix ({ pkgs, ...} : {
    name = "ipfs";

    nodes.machine = { ... }: {
      services.ipfs = {
        enable = true;
        startWhenNeeded = true;
      };
    };

    testScript = ''
      start_all()

      machine.wait_until_succeeds("ipfs id")
      ipfs_hash = machine.succeed("echo fnord | ipfs add | awk '{ print $2 }'")

      machine.succeed(f"ipfs cat /ipfs/{ipfs_hash.strip()} | grep fnord")
    '';
  })

Fixes #90145

Update nixos/modules/services/network-filesystems/ipfs.nix

Co-authored-by: Florian Klink <flokli@flokli.de>
2020-06-12 17:15:27 -05:00
Matthew Bauer
c5f40198f3 nixos/ipfs: consolidate services into one ipfs.service
Previously we had three services for different config flavors. This is
confusing because only one instance of IPFS can run on a host / port
combination at once. So move all into ipfs.service, which contains the
configuration specified in services.ipfs.

Also remove the env wrapper and just use systemd env configuration.
2020-06-11 15:27:22 -05:00
Matthew Bauer
74ff433320 nixos/ipfs: remove unused auto migrate feature 2020-06-11 14:32:06 -05:00
Dietrich Daroch
735c9a70d7 Services,IPFS,Fix: Require the ipfs-migrator package for handling upgrades.
Without it, the services get stuck on startup when the IPFS repo needs upgrades.
2020-05-13 00:15:50 -07:00
Nathan Fish
496899068e ipfs: remove ipfs repo fsck
https://github.com/NixOS/nixpkgs/pull/86242#issuecomment-621469759
2020-05-05 22:19:06 +00:00
Florian Klink
f74735c9d7 nixos: remove dependencies on local-fs.target
Since https://github.com/NixOS/nixpkgs/pull/61321, local-fs.target is
part of sysinit.target again, meaning units without
DefaultDependencies=no will automatically depend on it, and the manual
set dependencies can be dropped.
2019-09-01 19:06:38 +02:00
Michael Weiss
2473d902e6
nixos/fuse: init
Add a module for /etc/fuse.conf.
Fixes #30923.
2019-08-11 16:13:23 +02:00
Aaron Andersen
b7f376c01b nixos/ipfs: replace deprecated usage of PermissionsStartOnly
see https://github.com/NixOS/nixpkgs/issues/53852
2019-04-13 07:00:59 -04:00
Symphorien Gibol
a915b33315 nixos: add preferLocalBuild=true; on derivations for config files 2019-02-22 20:11:27 +01:00
Emery Hemingway
124d8ccc69
Add IPFS warning 2018-12-22 20:04:19 +01:00
Tuomas Tynkkynen
96190535e5 Revert "nixos: rename system.{stateVersion,defaultChannel} -> system.nixos.\1"
This reverts commit 095fe5b43d.

Pointless renames considered harmful. All they do is force people to
spend extra work updating their configs for no benefit, and hindering
the ability to switch between unstable and stable versions of NixOS.

Like, what was the value of having the "nixos." there? I mean, by
definition anything in a NixOS module has something to do with NixOS...
2018-07-28 00:12:55 +03:00
Florian Klink
fff5923686 nixos/modules: users.(extraUsers|extraGroup->users|group) 2018-06-30 03:02:58 +02:00
Sebastian Jordan
2009c76a66 nixos/ipfs: Improve behavior of localDiscovery option
It is no longer required to change the config your ipfs repo manually if you change
localDiscovery option in nixos configuration after ipfs repository initialization.
2018-05-23 16:44:31 +02:00
Sebastian Jordan
1bf798b8cb nixos/ipfs: Add option to disable local port scanning for ipfs daemon 2018-05-21 14:16:47 +02:00
Jan Malakhovski
095fe5b43d nixos: rename system.{stateVersion,defaultChannel} -> system.nixos.\1 2018-05-12 19:27:09 +00:00
Eric Litak
d0b9d13618 ipfs: add swarmAddress option 2017-11-25 22:56:07 -08:00