diff options
54 files changed, 6701 insertions, 4417 deletions
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index b6d16311a817..43e47a23dd3e 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -4942,6 +4942,12 @@ githubId = 45168934; name = "Louis Blin"; }; + lucc = { + email = "lucc+nix@posteo.de"; + github = "lucc"; + githubId = 1104419; + name = "Lucas Hoffmann"; + }; ldelelis = { email = "ldelelis@est.frba.utn.edu.ar"; github = "ldelelis"; @@ -5228,6 +5234,10 @@ githubId = 10626; name = "Andreas Wagner"; }; + lrworth = { + email = "luke@worth.id.au"; + name = "Luke Worth"; + }; lschuermann = { email = "leon.git@is.currently.online"; github = "lschuermann"; diff --git a/nixos/doc/manual/release-notes/rl-2103.xml b/nixos/doc/manual/release-notes/rl-2103.xml index 793c7acc58ef..e1638e8b7469 100644 --- a/nixos/doc/manual/release-notes/rl-2103.xml +++ b/nixos/doc/manual/release-notes/rl-2103.xml @@ -293,6 +293,14 @@ Packages depending on <literal>wafHook</literal> need to include any Python into their <literal>nativeBuildInputs</literal>. </para> </listitem> + <listitem> + <para> + Starting with version 1.7.0, the project formerly named <literal>CodiMD</literal> + is now named <literal>HedgeDoc</literal>. + New installations will no longer use the old name for users, state directories and such, this needs to be considered when moving state to a more recent NixOS installation. + Based on <xref linkend="opt-system.stateVersion" />, existing installations will continue to work. + </para> + </listitem> </itemizedlist> </section> diff --git a/nixos/modules/installer/cd-dvd/iso-image.nix b/nixos/modules/installer/cd-dvd/iso-image.nix index 405fbfa10dbf..43d20a556f8d 100644 --- a/nixos/modules/installer/cd-dvd/iso-image.nix +++ b/nixos/modules/installer/cd-dvd/iso-image.nix @@ -143,6 +143,13 @@ let LINUX /boot/${config.system.boot.loader.kernelFile} APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} loglevel=7 INITRD /boot/${config.system.boot.loader.initrdFile} + + # A variant to boot with a serial console enabled + LABEL boot-serial + MENU LABEL NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel} (serial console=ttyS0,115200n8) + LINUX /boot/${config.system.boot.loader.kernelFile} + APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} console=ttyS0,115200n8 + INITRD /boot/${config.system.boot.loader.initrdFile} ''; isolinuxMemtest86Entry = '' diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 213048da500f..3b67a8574938 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -856,7 +856,6 @@ ./services/web-apps/atlassian/confluence.nix ./services/web-apps/atlassian/crowd.nix ./services/web-apps/atlassian/jira.nix - ./services/web-apps/codimd.nix ./services/web-apps/convos.nix ./services/web-apps/cryptpad.nix ./services/web-apps/documize.nix @@ -865,6 +864,7 @@ ./services/web-apps/gerrit.nix ./services/web-apps/gotify-server.nix ./services/web-apps/grocy.nix + ./services/web-apps/hedgedoc.nix ./services/web-apps/icingaweb2/icingaweb2.nix ./services/web-apps/icingaweb2/module-monitoring.nix ./services/web-apps/ihatemoney diff --git a/nixos/modules/services/hardware/udev.nix b/nixos/modules/services/hardware/udev.nix index a212adb7342d..63027f7744dc 100644 --- a/nixos/modules/services/hardware/udev.nix +++ b/nixos/modules/services/hardware/udev.nix @@ -205,7 +205,7 @@ in extraRules = mkOption { default = ""; example = '' - KERNEL=="eth*", ATTR{address}=="00:1D:60:B9:6D:4F", NAME="my_fast_network_card" + SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1D:60:B9:6D:4F", KERNEL=="eth*", NAME="my_fast_network_card" ''; type = types.lines; description = '' diff --git a/nixos/modules/services/networking/wpa_supplicant.nix b/nixos/modules/services/networking/wpa_supplicant.nix index 3cfcb535ef5b..395139879036 100644 --- a/nixos/modules/services/networking/wpa_supplicant.nix +++ b/nixos/modules/services/networking/wpa_supplicant.nix @@ -233,10 +233,9 @@ in { path = [ pkgs.wpa_supplicant ]; script = '' - if [ -f /etc/wpa_supplicant.conf -a "/etc/wpa_supplicant.conf" != "${configFile}" ]; then - echo >&2 "<3>/etc/wpa_supplicant.conf present but ignored. Generated ${configFile} is used instead." + if [ -f /etc/wpa_supplicant.conf -a "/etc/wpa_supplicant.conf" != "${configFile}" ] + then echo >&2 "<3>/etc/wpa_supplicant.conf present but ignored. Generated ${configFile} is used instead." fi - iface_args="-s -u -D${cfg.driver} -c ${configFile}" ${if ifaces == [] then '' for i in $(cd /sys/class/net && echo *); do @@ -249,10 +248,6 @@ in { fi fi done - if [ -z "$args" ]; then - echo >&2 "<3>No wireless interfaces detected (yet)." - exit 1 - fi '' else '' args="${concatMapStringsSep " -N " (i: "-i${i} $iface_args") ifaces}" ''} @@ -266,7 +261,7 @@ in { # Restart wpa_supplicant when a wlan device appears or disappears. services.udev.extraRules = '' - ACTION=="add|remove", SUBSYSTEM=="net", ENV{DEVTYPE}=="wlan", RUN+="/run/current-system/systemd/bin/systemctl restart wpa_supplicant.service" + ACTION=="add|remove", SUBSYSTEM=="net", ENV{DEVTYPE}=="wlan", RUN+="/run/current-system/systemd/bin/systemctl try-restart wpa_supplicant.service" ''; }; diff --git a/nixos/modules/services/web-apps/codimd.nix b/nixos/modules/services/web-apps/hedgedoc.nix index 0fbc9ee820e6..3f646d7db0cd 100644 --- a/nixos/modules/services/web-apps/codimd.nix +++ b/nixos/modules/services/web-apps/hedgedoc.nix @@ -3,10 +3,14 @@ with lib; let - cfg = config.services.codimd; + cfg = config.services.hedgedoc; + + name = if versionAtLeast config.system.stateVersion "21.03" + then "hedgedoc" + else "codimd"; prettyJSON = conf: - pkgs.runCommandLocal "codimd-config.json" { + pkgs.runCommandLocal "hedgedoc-config.json" { nativeBuildInputs = [ pkgs.jq ]; } '' echo '${builtins.toJSON conf}' | jq \ @@ -14,22 +18,26 @@ let ''; in { - options.services.codimd = { - enable = mkEnableOption "the CodiMD Markdown Editor"; + imports = [ + (mkRenamedOptionModule [ "services" "codimd" ] [ "services" "hedgedoc" ]) + ]; + + options.services.hedgedoc = { + enable = mkEnableOption "the HedgeDoc Markdown Editor"; groups = mkOption { type = types.listOf types.str; default = []; description = '' - Groups to which the codimd user should be added. + Groups to which the user ${name} should be added. ''; }; workDir = mkOption { type = types.path; - default = "/var/lib/codimd"; + default = "/var/lib/${name}"; description = '' - Working directory for the CodiMD service. + Working directory for the HedgeDoc service. ''; }; @@ -38,17 +46,17 @@ in domain = mkOption { type = types.nullOr types.str; default = null; - example = "codimd.org"; + example = "hedgedoc.org"; description = '' - Domain name for the CodiMD instance. + Domain name for the HedgeDoc instance. ''; }; urlPath = mkOption { type = types.nullOr types.str; default = null; - example = "/url/path/to/codimd"; + example = "/url/path/to/hedgedoc"; description = '' - Path under which CodiMD is accessible. + Path under which HedgeDoc is accessible. ''; }; host = mkOption { @@ -69,7 +77,7 @@ in path = mkOption { type = types.nullOr types.str; default = null; - example = "/run/codimd.sock"; + example = "/run/hedgedoc.sock"; description = '' Specify where a UNIX domain socket should be placed. ''; @@ -77,7 +85,7 @@ in allowOrigin = mkOption { type = types.listOf types.str; default = []; - example = [ "localhost" "codimd.org" ]; + example = [ "localhost" "hedgedoc.org" ]; description = '' List of domains to whitelist. ''; @@ -201,7 +209,7 @@ in ''; description = '' Specify which database to use. - CodiMD supports mysql, postgres, sqlite and mssql. + HedgeDoc supports mysql, postgres, sqlite and mssql. See <link xlink:href="https://sequelize.readthedocs.io/en/v3/"> https://sequelize.readthedocs.io/en/v3/</link> for more information. Note: This option overrides <option>db</option>. @@ -213,12 +221,12 @@ in example = literalExample '' { dialect = "sqlite"; - storage = "/var/lib/codimd/db.codimd.sqlite"; + storage = "/var/lib/${name}/db.${name}.sqlite"; } ''; description = '' Specify the configuration for sequelize. - CodiMD supports mysql, postgres, sqlite and mssql. + HedgeDoc supports mysql, postgres, sqlite and mssql. See <link xlink:href="https://sequelize.readthedocs.io/en/v3/"> https://sequelize.readthedocs.io/en/v3/</link> for more information. Note: This option overrides <option>db</option>. @@ -227,7 +235,7 @@ in sslKeyPath= mkOption { type = types.nullOr types.str; default = null; - example = "/var/lib/codimd/codimd.key"; + example = "/var/lib/hedgedoc/hedgedoc.key"; description = '' Path to the SSL key. Needed when <option>useSSL</option> is enabled. ''; @@ -235,7 +243,7 @@ in sslCertPath = mkOption { type = types.nullOr types.str; default = null; - example = "/var/lib/codimd/codimd.crt"; + example = "/var/lib/hedgedoc/hedgedoc.crt"; description = '' Path to the SSL cert. Needed when <option>useSSL</option> is enabled. ''; @@ -243,7 +251,7 @@ in sslCAPath = mkOption { type = types.listOf types.str; default = []; - example = [ "/var/lib/codimd/ca.crt" ]; + example = [ "/var/lib/hedgedoc/ca.crt" ]; description = '' SSL ca chain. Needed when <option>useSSL</option> is enabled. ''; @@ -251,7 +259,7 @@ in dhParamPath = mkOption { type = types.nullOr types.str; default = null; - example = "/var/lib/codimd/dhparam.pem"; + example = "/var/lib/hedgedoc/dhparam.pem"; description = '' Path to the SSL dh params. Needed when <option>useSSL</option> is enabled. ''; @@ -260,10 +268,10 @@ in type = types.str; default = "/tmp"; description = '' - Path to the temp directory CodiMD should use. + Path to the temp directory HedgeDoc should use. Note that <option>serviceConfig.PrivateTmp</option> is enabled for - the CodiMD systemd service by default. - (Non-canonical paths are relative to CodiMD's base directory) + the HedgeDoc systemd service by default. + (Non-canonical paths are relative to HedgeDoc's base directory) ''; }; defaultNotePath = mkOption { @@ -271,7 +279,7 @@ in default = "./public/default.md"; description = '' Path to the default Note file. - (Non-canonical paths are relative to CodiMD's base directory) + (Non-canonical paths are relative to HedgeDoc's base directory) ''; }; docsPath = mkOption { @@ -279,7 +287,7 @@ in default = "./public/docs"; description = '' Path to the docs directory. - (Non-canonical paths are relative to CodiMD's base directory) + (Non-canonical paths are relative to HedgeDoc's base directory) ''; }; indexPath = mkOption { @@ -287,7 +295,7 @@ in default = "./public/views/index.ejs"; description = '' Path to the index template file. - (Non-canonical paths are relative to CodiMD's base directory) + (Non-canonical paths are relative to HedgeDoc's base directory) ''; }; hackmdPath = mkOption { @@ -295,7 +303,7 @@ in default = "./public/views/hackmd.ejs"; description = '' Path to the hackmd template file. - (Non-canonical paths are relative to CodiMD's base directory) + (Non-canonical paths are relative to HedgeDoc's base directory) ''; }; errorPath = mkOption { @@ -304,7 +312,7 @@ in defaultText = "./public/views/error.ejs"; description = '' Path to the error template file. - (Non-canonical paths are relative to CodiMD's base directory) + (Non-canonical paths are relative to HedgeDoc's base directory) ''; }; prettyPath = mkOption { @@ -313,7 +321,7 @@ in defaultText = "./public/views/pretty.ejs"; description = '' Path to the pretty template file. - (Non-canonical paths are relative to CodiMD's base directory) + (Non-canonical paths are relative to HedgeDoc's base directory) ''; }; slidePath = mkOption { @@ -322,13 +330,13 @@ in defaultText = "./public/views/slide.hbs"; description = '' Path to the slide template file. - (Non-canonical paths are relative to CodiMD's base directory) + (Non-canonical paths are relative to HedgeDoc's base directory) ''; }; uploadsPath = mkOption { type = types.str; default = "${cfg.workDir}/uploads"; - defaultText = "/var/lib/codimd/uploads"; + defaultText = "/var/lib/${name}/uploads"; description = '' Path under which uploaded files are saved. ''; @@ -766,7 +774,7 @@ in type = types.str; default = ""; description = '' - LDAP field which is used as the username on CodiMD. + LDAP field which is used as the username on HedgeDoc. By default <option>useridField</option> is used. ''; }; @@ -774,7 +782,7 @@ in type = types.str; example = "uid"; description = '' - LDAP field which is a unique identifier for users on CodiMD. + LDAP field which is a unique identifier for users on HedgeDoc. ''; }; tlsca = mkOption { @@ -840,7 +848,7 @@ in requiredGroups = mkOption { type = types.listOf types.str; default = []; - example = [ "Hackmd-users" "Codimd-users" ]; + example = [ "Hedgedoc-Users" ]; description = '' Required group names. ''; @@ -883,7 +891,7 @@ in environmentFile = mkOption { type = with types; nullOr path; default = null; - example = "/var/lib/codimd/codimd.env"; + example = "/var/lib/hedgedoc/hedgedoc.env"; description = '' Environment file as defined in <citerefentry> <refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum> @@ -894,9 +902,9 @@ in setting these variables accordingly in the environment file. <programlisting> - # snippet of CodiMD-related config - services.codimd.configuration.dbURL = "postgres://codimd:\''${DB_PASSWORD}@db-host:5432/codimddb"; - services.codimd.configuration.minio.secretKey = "$MINIO_SECRET_KEY"; + # snippet of HedgeDoc-related config + services.hedgedoc.configuration.dbURL = "postgres://hedgedoc:\''${DB_PASSWORD}@db-host:5432/hedgedocdb"; + services.hedgedoc.configuration.minio.secretKey = "$MINIO_SECRET_KEY"; </programlisting> <programlisting> @@ -906,15 +914,15 @@ in </programlisting> Note that this file needs to be available on the host on which - <literal>CodiMD</literal> is running. + <literal>HedgeDoc</literal> is running. ''; }; package = mkOption { type = types.package; - default = pkgs.codimd; + default = pkgs.hedgedoc; description = '' - Package that provides CodiMD. + Package that provides HedgeDoc. ''; }; }; @@ -924,20 +932,20 @@ in { assertion = cfg.configuration.db == {} -> ( cfg.configuration.dbURL != "" && cfg.configuration.dbURL != null ); - message = "Database configuration for CodiMD missing."; } + message = "Database configuration for HedgeDoc missing."; } ]; - users.groups.codimd = {}; - users.users.codimd = { - description = "CodiMD service user"; - group = "codimd"; + users.groups.${name} = {}; + users.users.${name} = { + description = "HedgeDoc service user"; + group = name; extraGroups = cfg.groups; home = cfg.workDir; createHome = true; isSystemUser = true; }; - systemd.services.codimd = { - description = "CodiMD Service"; + systemd.services.hedgedoc = { + description = "HedgeDoc Service"; wantedBy = [ "multi-user.target" ]; after = [ "networking.target" ]; preStart = '' @@ -947,14 +955,14 @@ in ''; serviceConfig = { WorkingDirectory = cfg.workDir; - ExecStart = "${cfg.package}/bin/codimd"; + ExecStart = "${cfg.package}/bin/hedgedoc"; EnvironmentFile = mkIf (cfg.environmentFile != null) [ cfg.environmentFile ]; Environment = [ "CMD_CONFIG_FILE=${cfg.workDir}/config.json" "NODE_ENV=production" ]; Restart = "always"; - User = "codimd"; + User = name; PrivateTmp = true; }; }; diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index f878b63e02b8..306aca79d13c 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix< |