mirror of
https://github.com/NixOS/nix
synced 2024-09-19 10:50:24 -04:00
update nu scripts to be used as a module
This commit is contained in:
parent
a617e687e7
commit
20dcec7b68
|
@ -261,7 +261,7 @@ if [ -z "$NIX_INSTALLER_NO_MODIFY_PROFILE" ]; then
|
|||
|
||||
if [ -d "$HOME/.config/nushell" ]; then
|
||||
fn="$HOME/.config/nushell/env.nu"
|
||||
printf '\nif ("%s" | path exists) { source "%s"; } # added by Nix installer\n' "$p_nu" "$p_nu" >> "$fn"
|
||||
printf '\nif ("%s" | path exists) { use %s } # added by Nix installer\n' "$p_nu" "$p_nu" >> "$fn"
|
||||
added=1
|
||||
p=${p_nu}
|
||||
fi
|
||||
|
|
|
@ -1,51 +1,60 @@
|
|||
# Only execute this file once per shell.
|
||||
if ('__ETC_PROFILE_NIX_SOURCED' in $env) {
|
||||
return;
|
||||
}
|
||||
$env.__ETC_PROFILE_NIX_SOURCED = 1;
|
||||
export-env {
|
||||
# Only execute this file once per shell.
|
||||
if ('__ETC_PROFILE_NIX_SOURCED' in $env) {
|
||||
return;
|
||||
}
|
||||
$env.__ETC_PROFILE_NIX_SOURCED = 1;
|
||||
|
||||
mut NIX_LINK = [$env.HOME '.nix-profile'] | path join;
|
||||
mut NIX_LINK_NEW = [$env.HOME '.local/state/nix/profile'];
|
||||
if 'XDG_STATE_HOME' in $env {
|
||||
$NIX_LINK_NEW = [$env.XDG_STATE_HOME 'nix/profile'];
|
||||
}
|
||||
$NIX_LINK_NEW = ($NIX_LINK_NEW | path join);
|
||||
if ($NIX_LINK_NEW | path exists) {
|
||||
$NIX_LINK = $NIX_LINK_NEW;
|
||||
}
|
||||
mut NIX_LINK = [$env.HOME '.nix-profile'] | path join;
|
||||
mut NIX_LINK_NEW = [$env.HOME '.local/state/nix/profile'];
|
||||
if 'XDG_STATE_HOME' in $env {
|
||||
$NIX_LINK_NEW = [$env.XDG_STATE_HOME 'nix/profile'];
|
||||
}
|
||||
$NIX_LINK_NEW = ($NIX_LINK_NEW | path join);
|
||||
if ($NIX_LINK_NEW | path exists) {
|
||||
$NIX_LINK = $NIX_LINK_NEW;
|
||||
}
|
||||
|
||||
$env.NIX_PROFILES = (['@localstatedir@/nix/profiles/default' $NIX_LINK] | str join ' ');
|
||||
let NIX_PROFILES = (['@localstatedir@/nix/profiles/default' $NIX_LINK] | str join ' ');
|
||||
|
||||
# Populate bash completions, .desktop files, etc
|
||||
if 'XDG_DATA_DIRS' not-in $env {
|
||||
# According to XDG spec the default is /usr/local/share:/usr/share, don't set something that prevents that default
|
||||
$env.XDG_DATA_DIRS = (['/usr/local/share' '/usr/share'] | str join (char esep));
|
||||
# Populate bash completions, .desktop files, etc
|
||||
mut XDG_DATA_DIRS = '';
|
||||
if 'XDG_DATA_DIRS' not-in $env {
|
||||
# According to XDG spec the default is /usr/local/share:/usr/share, don't set something that prevents that default
|
||||
$XDG_DATA_DIRS = (['/usr/local/share' '/usr/share'] | str join (char esep));
|
||||
}
|
||||
$XDG_DATA_DIRS = (
|
||||
$XDG_DATA_DIRS
|
||||
| split row (char esep)
|
||||
| append ([$NIX_LINK 'share'] | path join)
|
||||
| append '/nix/var/nix/profiles/default/share'
|
||||
| str join (char esep)
|
||||
);
|
||||
|
||||
# Set $NIX_SSL_CERT_FILE so that Nixpkgs applications like curl work.
|
||||
mut NIX_SSL_CERT_FILE = '';
|
||||
if ('NIX_SSL_CERT_FILE' in $env) {
|
||||
# Allow users to override the NIX_SSL_CERT_FILE
|
||||
} else if ('/etc/ssl/certs/ca-certificates.crt' | path exists) { # NixOS, Ubuntu, Debian, Gentoo, Arch
|
||||
$NIX_SSL_CERT_FILE = '/etc/ssl/certs/ca-certificates.crt';
|
||||
} else if ('/etc/ssl/ca-bundle.pem' | path exists) { # openSUSE Tumbleweed
|
||||
$NIX_SSL_CERT_FILE = '/etc/ssl/ca-bundle.pem';
|
||||
} else if ('/etc/ssl/certs/ca-bundle.crt' | path exists) { # Old NixOS
|
||||
$NIX_SSL_CERT_FILE = '/etc/ssl/certs/ca-bundle.crt';
|
||||
} else if ('/etc/pki/tls/certs/ca-bundle.crt' | path exists) { # Fedora, CentOS
|
||||
$NIX_SSL_CERT_FILE = '/etc/pki/tls/certs/ca-bundle.crt';
|
||||
} else {
|
||||
# Fall back to what is in the nix profiles, favouring whatever is defined last.
|
||||
let last = $NIX_PROFILES
|
||||
| split row (char space)
|
||||
| where ([$it 'etc/ssl/certs/ca-bundle.crt'] | path join | path exists)
|
||||
| last;
|
||||
|
||||
$NIX_SSL_CERT_FILE = ([$last 'etc/ssl/certs/ca-bundle.crt'] | path join);
|
||||
}
|
||||
|
||||
$env.NIX_PROFILES = $NIX_PROFILES
|
||||
$env.XDG_DATA_DIRS = $XDG_DATA_DIRS
|
||||
$env.NIX_SSL_CERT_FILE = $NIX_SSL_CERT_FILE
|
||||
$env.PATH = ($env.PATH | prepend '@localstatedir@/nix/profiles/default/bin' | prepend ([$NIX_LINK 'bin'] | path join));
|
||||
}
|
||||
$env.XDG_DATA_DIRS = (
|
||||
$env.XDG_DATA_DIRS
|
||||
| split row (char esep)
|
||||
| append ([$NIX_LINK 'share'] | path join)
|
||||
| append '/nix/var/nix/profiles/default/share'
|
||||
| str join (char esep)
|
||||
);
|
||||
|
||||
# Set $NIX_SSL_CERT_FILE so that Nixpkgs applications like curl work.
|
||||
if ('NIX_SSL_CERT_FILE' in $env) {
|
||||
# Allow users to override the NIX_SSL_CERT_FILE
|
||||
} else if ('/etc/ssl/certs/ca-certificates.crt' | path exists) { # NixOS, Ubuntu, Debian, Gentoo, Arch
|
||||
$env.NIX_SSL_CERT_FILE = '/etc/ssl/certs/ca-certificates.crt';
|
||||
} else if ('/etc/ssl/ca-bundle.pem' | path exists) { # openSUSE Tumbleweed
|
||||
$env.NIX_SSL_CERT_FILE = '/etc/ssl/ca-bundle.pem';
|
||||
} else if ('/etc/ssl/certs/ca-bundle.crt' | path exists) { # Old NixOS
|
||||
$env.NIX_SSL_CERT_FILE = '/etc/ssl/certs/ca-bundle.crt';
|
||||
} else if ('/etc/pki/tls/certs/ca-bundle.crt' | path exists) { # Fedora, CentOS
|
||||
$env.NIX_SSL_CERT_FILE = '/etc/pki/tls/certs/ca-bundle.crt';
|
||||
} else {
|
||||
# Fall back to what is in the nix profiles, favouring whatever is defined last.
|
||||
$env.NIX_PROFILES
|
||||
| split row (char space)
|
||||
| where ([$it 'etc/ssl/certs/ca-bundle.crt'] | path join | path exists)
|
||||
| each { |it| $env.NIX_SSL_CERT_FILE = ([$it 'etc/ssl/certs/ca-bundle.crt'] | path join) }
|
||||
}
|
||||
|
||||
$env.PATH = ($env.PATH | prepend '@localstatedir@/nix/profiles/default/bin' | prepend ([$NIX_LINK 'bin'] | path join));
|
||||
|
|
|
@ -1,54 +1,63 @@
|
|||
if ([$env.HOME $env.USER] | all {nu-check}) {
|
||||
export-env {
|
||||
if ([$env.HOME $env.USER] | all {nu-check}) {
|
||||
|
||||
# Set up the per-user profile.
|
||||
mut NIX_LINK = [$env.HOME '.nix-profile'] | path join;
|
||||
mut NIX_LINK_NEW = [$env.HOME '.local/state/nix/profile'];
|
||||
if 'XDG_STATE_HOME' in $env {
|
||||
$NIX_LINK_NEW = [$env.XDG_STATE_HOME 'nix/profile'];
|
||||
# Set up the per-user profile.
|
||||
mut NIX_LINK = [$env.HOME '.nix-profile'] | path join;
|
||||
mut NIX_LINK_NEW = [$env.HOME '.local/state/nix/profile'];
|
||||
if 'XDG_STATE_HOME' in $env {
|
||||
$NIX_LINK_NEW = [$env.XDG_STATE_HOME 'nix/profile'];
|
||||
}
|
||||
$NIX_LINK_NEW = ($NIX_LINK_NEW | path join);
|
||||
if ($NIX_LINK_NEW | path exists) {
|
||||
$NIX_LINK = $NIX_LINK_NEW;
|
||||
}
|
||||
|
||||
# Set up environment.
|
||||
# This part should be kept in sync with nixpkgs:nixos/modules/programs/environment.nix
|
||||
let NIX_PROFILES = (['@localstatedir@/nix/profiles/default' $NIX_LINK] | str join ' ');
|
||||
|
||||
# Populate bash completions, .desktop files, etc
|
||||
mut XDG_DATA_DIRS = '';
|
||||
if 'XDG_DATA_DIRS' not-in $env {
|
||||
# According to XDG spec the default is /usr/local/share:/usr/share, don't set something that prevents that default
|
||||
$XDG_DATA_DIRS = (['/usr/local/share' '/usr/share'] | str join (char esep));
|
||||
}
|
||||
$XDG_DATA_DIRS = (
|
||||
$XDG_DATA_DIRS
|
||||
| split row (char esep)
|
||||
| append ([$NIX_LINK 'share'] | path join)
|
||||
| append '/nix/var/nix/profiles/default/share'
|
||||
| str join (char esep)
|
||||
);
|
||||
|
||||
# Set $NIX_SSL_CERT_FILE so that Nixpkgs applications like curl work.
|
||||
mut NIX_SSL_CERT_FILE = '';
|
||||
if ('/etc/ssl/certs/ca-certificates.crt' | path exists) { # NixOS, Ubuntu, Debian, Gentoo, Arch
|
||||
$NIX_SSL_CERT_FILE = '/etc/ssl/certs/ca-certificates.crt';
|
||||
} else if ('/etc/ssl/ca-bundle.pem' | path exists) { # openSUSE Tumbleweed
|
||||
$NIX_SSL_CERT_FILE = '/etc/ssl/ca-bundle.pem';
|
||||
} else if ('/etc/ssl/certs/ca-bundle.crt' | path exists) { # Old NixOS
|
||||
$NIX_SSL_CERT_FILE = '/etc/ssl/certs/ca-bundle.crt';
|
||||
} else if ('/etc/pki/tls/certs/ca-bundle.crt' | path exists) { # Fedora, CentOS
|
||||
$NIX_SSL_CERT_FILE = '/etc/pki/tls/certs/ca-bundle.crt';
|
||||
} else if ([$NIX_LINK 'etc/ssl/certs/ca-bundle.crt'] | path join | path exists) { # fall back to cacert in Nix profile
|
||||
$NIX_SSL_CERT_FILE = ([$NIX_LINK 'etc/ssl/certs/ca-bundle.crt'] | path join);
|
||||
} else if ([$NIX_LINK 'etc/ca-bundle.crt'] | path join | path exists) { # old cacert in Nix profile
|
||||
$NIX_SSL_CERT_FILE = ([$NIX_LINK '/etc/ca-bundle.crt'] | path join);
|
||||
}
|
||||
|
||||
# Only use MANPATH if it is already set. In general `man` will just simply
|
||||
# pick up `.nix-profile/share/man` because is it close to `.nix-profile/bin`
|
||||
# which is in the $PATH. For more info, run `manpath -d`.
|
||||
if ('MANPATH' in $env) {
|
||||
export-env {
|
||||
$env.MANPATH = ([$NIX_LINK 'share/man'] | path join | append $"(char esep)($env.MANPATH)")
|
||||
}
|
||||
}
|
||||
|
||||
$env.NIX_PROFILES = $NIX_PROFILES
|
||||
$env.XDG_DATA_DIRS = $XDG_DATA_DIRS
|
||||
$env.NIX_SSL_CERT_FILE = $NIX_SSL_CERT_FILE
|
||||
$env.PATH = ($env.PATH | prepend ([$NIX_LINK 'bin'] | path join))
|
||||
}
|
||||
$NIX_LINK_NEW = ($NIX_LINK_NEW | path join);
|
||||
if ($NIX_LINK_NEW | path exists) {
|
||||
$NIX_LINK = $NIX_LINK_NEW;
|
||||
}
|
||||
|
||||
# Set up environment.
|
||||
# This part should be kept in sync with nixpkgs:nixos/modules/programs/environment.nix
|
||||
$env.NIX_PROFILES = (['@localstatedir@/nix/profiles/default' $NIX_LINK] | str join ' ');
|
||||
|
||||
# Populate bash completions, .desktop files, etc
|
||||
if 'XDG_DATA_DIRS' not-in $env {
|
||||
# According to XDG spec the default is /usr/local/share:/usr/share, don't set something that prevents that default
|
||||
$env.XDG_DATA_DIRS = (['/usr/local/share' '/usr/share'] | str join (char esep));
|
||||
}
|
||||
$env.XDG_DATA_DIRS = (
|
||||
$env.XDG_DATA_DIRS
|
||||
| split row (char esep)
|
||||
| append ([$NIX_LINK 'share'] | path join)
|
||||
| append '/nix/var/nix/profiles/default/share'
|
||||
| str join (char esep)
|
||||
);
|
||||
|
||||
# Set $NIX_SSL_CERT_FILE so that Nixpkgs applications like curl work.
|
||||
if ('/etc/ssl/certs/ca-certificates.crt' | path exists) { # NixOS, Ubuntu, Debian, Gentoo, Arch
|
||||
$env.NIX_SSL_CERT_FILE = '/etc/ssl/certs/ca-certificates.crt';
|
||||
} else if ('/etc/ssl/ca-bundle.pem' | path exists) { # openSUSE Tumbleweed
|
||||
$env.NIX_SSL_CERT_FILE = '/etc/ssl/ca-bundle.pem';
|
||||
} else if ('/etc/ssl/certs/ca-bundle.crt' | path exists) { # Old NixOS
|
||||
$env.NIX_SSL_CERT_FILE = '/etc/ssl/certs/ca-bundle.crt';
|
||||
} else if ('/etc/pki/tls/certs/ca-bundle.crt' | path exists) { # Fedora, CentOS
|
||||
$env.NIX_SSL_CERT_FILE = '/etc/pki/tls/certs/ca-bundle.crt';
|
||||
} else if ([$NIX_LINK 'etc/ssl/certs/ca-bundle.crt'] | path join | path exists) { # fall back to cacert in Nix profile
|
||||
$env.NIX_SSL_CERT_FILE = ([$NIX_LINK 'etc/ssl/certs/ca-bundle.crt'] | path join);
|
||||
} else if ([$NIX_LINK 'etc/ca-bundle.crt'] | path join | path exists) { # old cacert in Nix profile
|
||||
$env.NIX_SSL_CERT_FILE = ([$NIX_LINK '/etc/ca-bundle.crt'] | path join);
|
||||
}
|
||||
|
||||
# Only use MANPATH if it is already set. In general `man` will just simply
|
||||
# pick up `.nix-profile/share/man` because is it close to `.nix-profile/bin`
|
||||
# which is in the $PATH. For more info, run `manpath -d`.
|
||||
if ('MANPATH' in $env) {
|
||||
$env.MANPATH = ([$NIX_LINK 'share/man'] | path join | append $"(char esep)($env.MANPATH)");
|
||||
}
|
||||
|
||||
$env.PATH = ($env.PATH | prepend ([$NIX_LINK 'bin'] | path join));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue