lass 3: add per-user
This commit is contained in:
parent
36c79341f7
commit
fb41fe76c6
54
lass/3modules/per-user.nix
Normal file
54
lass/3modules/per-user.nix
Normal file
|
@ -0,0 +1,54 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with builtins;
|
||||
with lib;
|
||||
let
|
||||
cfg = config.lass.per-user;
|
||||
|
||||
out = {
|
||||
options.lass.per-user = api;
|
||||
config = imp;
|
||||
};
|
||||
|
||||
api = mkOption {
|
||||
type = with types; attrsOf (submodule {
|
||||
options = {
|
||||
packages = mkOption {
|
||||
type = listOf path;
|
||||
default = [];
|
||||
};
|
||||
};
|
||||
});
|
||||
default = {};
|
||||
};
|
||||
|
||||
imp = {
|
||||
#
|
||||
# TODO only shellInit and use well-known paths
|
||||
#
|
||||
environment.shellInit = ''
|
||||
if test -e ${user-profiles}/"$LOGNAME"; then
|
||||
. ${user-profiles}/"$LOGNAME"
|
||||
fi
|
||||
'';
|
||||
environment.interactiveShellInit = ''
|
||||
if test -e ${user-profiles}/"$LOGNAME"; then
|
||||
. ${user-profiles}/"$LOGNAME"
|
||||
fi
|
||||
'';
|
||||
environment.profileRelativeEnvVars.PATH = mkForce [ "/bin" ];
|
||||
};
|
||||
|
||||
user-profiles = pkgs.runCommand "user-profiles" {} ''
|
||||
mkdir $out
|
||||
${concatStrings (mapAttrsToList (logname: { packages, ... }: ''
|
||||
cat > $out/${logname} <<\EOF
|
||||
${optionalString (length packages > 0) (
|
||||
let path = makeSearchPath "bin" packages; in
|
||||
''export PATH="$PATH":${escapeShellArg path}''
|
||||
)}
|
||||
EOF
|
||||
'') cfg)}
|
||||
'';
|
||||
|
||||
in out
|
Loading…
Reference in a new issue