1
0
Fork 0
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:
Eternahl 2024-09-13 11:36:18 +02:00
parent a617e687e7
commit 20dcec7b68
3 changed files with 117 additions and 99 deletions

View file

@ -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

View file

@ -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));

View file

@ -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));
}