diff options
Diffstat (limited to 'nixos/modules/system/boot/systemd.nix')
-rw-r--r-- | nixos/modules/system/boot/systemd.nix | 232 |
1 files changed, 3 insertions, 229 deletions
diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix index 29c449d4d0be..4bd412014a54 100644 --- a/nixos/modules/system/boot/systemd.nix +++ b/nixos/modules/system/boot/systemd.nix @@ -301,19 +301,6 @@ let }; }; - networkConfig = { name, config, ... }: { - config = { - matchConfig = optionalAttrs (config.name != null) { - Name = config.name; - }; - networkConfig = optionalAttrs (config.DHCP != null) { - DHCP = config.DHCP; - } // optionalAttrs (config.domains != null) { - Domains = concatStringsSep " " config.domains; - }; - }; - }; - toOption = x: if x == true then "true" else if x == false then "false" @@ -412,98 +399,6 @@ let ${attrsToSection def.matchConfig} ''; - linkToUnit = name: def: - { inherit (def) enable; - text = commonMatchText def + - '' - [Link] - ${attrsToSection def.linkConfig} - ''; - }; - - netdevToUnit = name: def: - { inherit (def) enable; - text = commonMatchText def + - '' - [NetDev] - ${attrsToSection def.netdevConfig} - - ${optionalString (def.vlanConfig != { }) '' - [VLAN] - ${attrsToSection def.vlanConfig} - - ''} - ${optionalString (def.macvlanConfig != { }) '' - [MACVLAN] - ${attrsToSection def.macvlanConfig} - - ''} - ${optionalString (def.vxlanConfig != { }) '' - [VXLAN] - ${attrsToSection def.vxlanConfig} - - ''} - ${optionalString (def.tunnelConfig != { }) '' - [Tunnel] - ${attrsToSection def.tunnelConfig} - - ''} - ${optionalString (def.peerConfig != { }) '' - [Peer] - ${attrsToSection def.peerConfig} - - ''} - ${optionalString (def.tunConfig != { }) '' - [Tun] - ${attrsToSection def.tunConfig} - - ''} - ${optionalString (def.tapConfig != { }) '' - [Tap] - ${attrsToSection def.tapConfig} - - ''} - ${optionalString (def.bondConfig != { }) '' - [Bond] - ${attrsToSection def.bondConfig} - - ''} - ''; - }; - - networkToUnit = name: def: - { inherit (def) enable; - text = commonMatchText def + - '' - [Network] - ${attrsToSection def.networkConfig} - ${concatStringsSep "\n" (map (s: "Address=${s}") def.address)} - ${concatStringsSep "\n" (map (s: "Gateway=${s}") def.gateway)} - ${concatStringsSep "\n" (map (s: "DNS=${s}") def.dns)} - ${concatStringsSep "\n" (map (s: "NTP=${s}") def.ntp)} - ${concatStringsSep "\n" (map (s: "VLAN=${s}") def.vlan)} - ${concatStringsSep "\n" (map (s: "MACVLAN=${s}") def.macvlan)} - ${concatStringsSep "\n" (map (s: "VXLAN=${s}") def.vxlan)} - ${concatStringsSep "\n" (map (s: "Tunnel=${s}") def.tunnel)} - - ${optionalString (def.dhcpConfig != { }) '' - [DHCP] - ${attrsToSection def.dhcpConfig} - - ''} - ${flip concatMapStrings def.addresses (x: '' - [Address] - ${attrsToSection x.addressConfig} - - '')} - ${flip concatMapStrings def.routes (x: '' - [Route] - ${attrsToSection x.routeConfig} - - '')} - ''; - }; - generateUnits = type: units: upstreamUnits: upstreamWants: pkgs.runCommand "${type}-units" { preferLocalBuild = true; } '' mkdir -p $out @@ -683,47 +578,6 @@ in ''; }; - systemd.network.enable = mkOption { - default = false; - type = types.bool; - description = '' - Whether to enable networkd or not. - ''; - }; - - systemd.network.links = mkOption { - default = {}; - type = types.attrsOf types.optionSet; - options = [ linkOptions ]; - description = "Definition of systemd network links."; - }; - - systemd.network.netdevs = mkOption { - default = {}; - type = types.attrsOf types.optionSet; - options = [ netdevOptions ]; - description = "Definition of systemd network devices."; - }; - - systemd.network.networks = mkOption { - default = {}; - type = types.attrsOf types.optionSet; - options = [ networkOptions networkConfig ]; - description = "Definition of systemd networks."; - }; - - systemd.network.units = mkOption { - description = "Definition of networkd units."; - default = {}; - type = types.attrsOf types.optionSet; - options = { name, config, ... }: - { options = concreteUnitOptions; - config = { - unit = mkDefault (makeUnit name config); - }; - }; - }; - systemd.defaultUnit = mkOption { default = "multi-user.target"; type = types.str; @@ -807,22 +661,6 @@ in ''; }; - services.resolved.enable = mkOption { - default = false; - type = types.bool; - description = '' - Enables the systemd dns resolver daemon. - ''; - }; - - services.timesyncd.enable = mkOption { - default = false; - type = types.bool; - description = '' - Enables the systemd ntp client daemon. - ''; - }; - systemd.tmpfiles.rules = mkOption { type = types.listOf types.str; default = []; @@ -886,7 +724,7 @@ in ###### implementation - config = mkMerge [ { + config = { warnings = concatLists (mapAttrsToList (name: service: optional (service.serviceConfig.Type or "" == "oneshot" && service.serviceConfig.Restart or "no" != "no") @@ -899,6 +737,7 @@ in environment.etc."systemd/system".source = generateUnits "system" cfg.units upstreamSystemUnits upstreamSystemWants; + # FIXME: move to networkd.nix. environment.etc."systemd/network".source = generateUnits "network" cfg.network.units [] []; @@ -979,11 +818,6 @@ in (v: let n = escapeSystemdPath v.where; in nameValuePair "${n}.automount" (automountToUnit n v)) cfg.automounts); - systemd.network.units = - mapAttrs' (n: v: nameValuePair "${n}.link" (linkToUnit n v)) cfg.network.links - // mapAttrs' (n: v: nameValuePair "${n}.netdev" (netdevToUnit n v)) cfg.network.netdevs - // mapAttrs' (n: v: nameValuePair "${n}.network" (networkToUnit n v)) cfg.network.networks; - systemd.user.units = mapAttrs' (n: v: nameValuePair "${n}.service" (serviceToUnit n v)) cfg.user.services // mapAttrs' (n: v: nameValuePair "${n}.socket" (socketToUnit n v)) cfg.user.sockets @@ -1006,15 +840,6 @@ in users.extraUsers.systemd-journal-gateway.uid = config.ids.uids.systemd-journal-gateway; users.extraGroups.systemd-journal-gateway.gid = config.ids.gids.systemd-journal-gateway; - users.extraUsers.systemd-network.uid = config.ids.uids.systemd-network; - users.extraGroups.systemd-network.gid = config.ids.gids.systemd-network; - - users.extraUsers.systemd-resolve.uid = config.ids.uids.systemd-resolve; - users.extraGroups.systemd-resolve.gid = config.ids.gids.systemd-resolve; - - users.extraUsers.systemd-timesync.uid = config.ids.uids.systemd-timesync; - users.extraGroups.systemd-timesync.gid = config.ids.gids.systemd-timesync; - # Generate timer units for all services that have a ‘startAt’ value. systemd.timers = mapAttrs (name: service: @@ -1053,57 +878,6 @@ in systemd.services.systemd-remount-fs.restartIfChanged = false; systemd.services.systemd-journal-flush.restartIfChanged = false; - } - (mkIf config.systemd.network.enable { - systemd.services.systemd-networkd = { - wantedBy = [ "multi-user.target" ]; - before = [ "network-interfaces.target" ]; - restartTriggers = [ config.environment.etc."systemd/network".source ]; - }; - - systemd.services.systemd-networkd-wait-online = { - before = [ "network-online.target" "ip-up.target" ]; - wantedBy = [ "network-online.target" "ip-up.target" ]; - }; - - systemd.services."systemd-network-wait-online@" = { - description = "Wait for Network Interface %I to be Configured"; - conflicts = [ "shutdown.target" ]; - requisite = [ "systemd-networkd.service" ]; - after = [ "systemd-networkd.service" ]; - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - ExecStart = "${config.systemd.package}/lib/systemd/systemd-networkd-wait-online -i %I"; - }; - }; - - services.resolved.enable = mkDefault true; - services.timesyncd.enable = mkDefault config.services.ntp.enable; - }) - (mkIf config.services.resolved.enable { - systemd.services.systemd-resolved = { - wantedBy = [ "multi-user.target" ]; - restartTriggers = [ config.environment.etc."systemd/resolved.conf".source ]; - }; - - environment.etc."systemd/resolved.conf".text = '' - [Resolve] - DNS=${concatStringsSep " " config.networking.nameservers} - ''; - }) - (mkIf config.services.timesyncd.enable { - systemd.services.systemd-timesyncd = { - wantedBy = [ "sysinit.target" ]; - restartTriggers = [ config.environment.etc."systemd/timesyncd.conf".source ]; - }; - - environment.etc."systemd/timesyncd.conf".text = '' - [Time] - NTP=${concatStringsSep " " config.services.ntp.servers} - ''; + }; - systemd.services.ntpd.enable = false; - }) - ]; } |