-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathobjectscriptenv.nix
More file actions
76 lines (69 loc) · 2 KB
/
Copy pathobjectscriptenv.nix
File metadata and controls
76 lines (69 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
{ pkgs, lib, ... }:
let
containerUser = "iris-development";
containerUserHome = "/var/home/${containerUser}";
containerName = containerUser;
irisDataDir = "${containerUserHome}/iris-data";
containerUid = 51773; # DO NOT CHANGE THIS
durableMountDir = "/dur";
iscDataDirectory = "${durableMountDir}/iconfig";
in
{
programs.vscode = {
enable = true;
extensions = lib.map (pkgPath: pkgs.callPackage pkgPath { }) [
./pkgs/vscode-intersystems-objectscript.nix
./pkgs/vscode-intersystems-servermanager.nix
./pkgs/vscode-intersystems-language-server.nix
];
};
environment.shellAliases =
let
runInContainer =
command:
"sudo -u ${containerUser} HOME=${containerUserHome} sh -c 'cd ${containerUserHome} && podman exec -it ${containerName} ${command}'";
in
{
iris-bash = runInContainer "/bin/bash";
iris-term = runInContainer "iris session IRIS";
iris-web = "xdg-open http://127.0.0.1:52773/csp/sys/UtilHome.csp";
};
virtualisation.oci-containers = {
backend = "podman";
containers."${containerName}" = {
autoStart = false;
podman = {
user = containerUser;
};
hostname = containerName;
image = "intersystems/iris-community:latest-em";
ports = [
"127.0.0.1:52773:52773"
"127.0.0.1:1972:1972"
];
extraOptions = [ "--userns=keep-id" ];
volumes = [
"${irisDataDir}:${durableMountDir}"
];
environment = {
ISC_DATA_DIRECTORY = iscDataDirectory;
};
};
};
systemd.tmpfiles.rules = [
"d ${irisDataDir} 0700 ${containerUser} ${containerUser} -"
];
users.users."${containerUser}" = {
isSystemUser = true;
uid = containerUid;
group = containerUser;
createHome = true;
home = containerUserHome;
linger = true;
# Ermöglicht Rootless Podman das Mapping von UIDs innerhalb des Containers
autoSubUidGidRange = true;
};
users.groups."${containerUser}" = {
gid = containerUid;
};
}