diff --git a/modules/base.nix b/modules/base.nix index 36fd79e..0d507a7 100644 --- a/modules/base.nix +++ b/modules/base.nix @@ -4,11 +4,13 @@ { lib, pkgs, config, ...}: let - inherit (lib) mkEnableOption mkOption types isDerivation hasAttr ; + inherit (lib) mkEnableOption mkOption types isDerivation hasAttr concatStringsSep; inherit (pkgs.pseudofile) dir symlink; inherit (pkgs.liminix.networking) address interface; inherit (pkgs.liminix.services) bundle; + # TODO: escape shell argument. + exportVar = name: value: "export ${name}=\"${value}\""; type_service = pkgs.liminix.lib.types.service; in { @@ -22,6 +24,24 @@ in { /run/current-system, we just add the paths in /etc/profile ''; }; + + environmentVariables = mkOption { + type = types.attrsOf types.str; + description = '' + Attribute set of environment variables to make available + in a login shell. + + The value is assumed to be escaped and the name to be valid. + ''; + }; + + prompt = mkOption { + type = types.str; + default = "$(whoami)@$(hostname) # "; + description = '' + Prompt string (PS1) for the shell. + ''; + }; }; services = mkOption { type = types.attrsOf type_service; @@ -105,15 +125,14 @@ in { }; }; }; - - imports = [ ./nixpkgs.nix ]; - config = { # By default, we enable cross-compilation support. nixpkgs.buildPlatform = lib.mkDefault builtins.currentSystem; defaultProfile.packages = with pkgs; [ s6 s6-init-bin execline s6-linux-init s6-rc ]; + # Set the useful PS1 prompt by default. + defaultProfile.environmentVariables.PS1 = lib.mkDefault config.defaultProfile.prompt; boot.commandLine = [ "panic=10 oops=panic init=/bin/init loglevel=8" @@ -184,9 +203,10 @@ in { etc = let profile = symlink (pkgs.writeScript ".profile" '' - PATH=${lib.makeBinPath config.defaultProfile.packages}:/bin + PATH=${lib.makeBinPath config.defaultProfile.packages}:/bin export PATH - ''); + ${concatStringsSep "\n" (map exportVar config.defaultProfile.environmentVariables)} + ''); in dir { inherit profile; ashrc = profile; diff --git a/modules/nixpkgs.nix b/modules/nixpkgs.nix index 5932108..206d506 100644 --- a/modules/nixpkgs.nix +++ b/modules/nixpkgs.nix @@ -330,8 +330,6 @@ in ''; }; }; - - imports = [ ./misc/assertions.nix ]; config = { _module.args = { diff --git a/modules/outputs/initramfs.nix b/modules/outputs/initramfs.nix index 0b1b12a..b1e0ea8 100644 --- a/modules/outputs/initramfs.nix +++ b/modules/outputs/initramfs.nix @@ -13,14 +13,6 @@ in boot.initramfs = { enable = mkEnableOption "initramfs"; }; - system.build.toplevel = mkOption { - type = types.package; - description = '' - pkgs.systemconfig for the configured filesystem, - contains 'activate' and 'init' commands - ''; - internal = true; - }; system.outputs = { initramfs = mkOption { type = types.package; @@ -47,8 +39,6 @@ in INITRAMFS_COMPRESSION_ZSTD = "y"; }; - system.build.toplevel = config.system.outputs.systemConfiguration; - system.outputs = { initramfs = let