изменено: configuration.nix
This commit is contained in:
parent
493c848267
commit
ff43c9d25b
1 changed files with 173 additions and 43 deletions
|
|
@ -10,12 +10,24 @@
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
serverIP = "10.0.174.12";
|
serverIP = "10.0.174.12";
|
||||||
|
buildNodeYggIP = "[200:ccc6:1361:5c84:aba0:1244:35f5:c903]";
|
||||||
hasBootPartition = config.fileSystems ? "/boot";
|
hasBootPartition = config.fileSystems ? "/boot";
|
||||||
isNvidia = (builtins.readFile (pkgs.runCommandLocal "isNvidia" {} ''
|
isNvidia = (builtins.readFile (pkgs.runCommandLocal "isNvidia" {} ''
|
||||||
${pkgs.pciutils}/bin/lspci | ${pkgs.busybox}/bin/grep NVIDIA | ${pkgs.busybox}/bin/grep VGA > $out || true
|
${pkgs.pciutils}/bin/lspci | ${pkgs.busybox}/bin/grep NVIDIA | ${pkgs.busybox}/bin/grep VGA > $out || true
|
||||||
'')) != "";
|
'')) != "";
|
||||||
|
starumlDebUrl = "http://${serverIP}/StarUML_6.2.2_amd64.deb"; # подставь точное имя
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(final: prev: {
|
||||||
|
staruml = prev.staruml.overrideAttrs (old: {
|
||||||
|
src = final.fetchurl {
|
||||||
|
url = starumlDebUrl;
|
||||||
|
hash = "sha256-1zxrT7phXeQYNbWHWMyPuHiUglrPSMPP0bfAcfvt8dM=";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
})
|
||||||
|
];
|
||||||
users.users.student = {
|
users.users.student = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
initialPassword = "student"; # вход беспарольный, но пароль student
|
initialPassword = "student"; # вход беспарольный, но пароль student
|
||||||
|
|
@ -44,12 +56,11 @@ in
|
||||||
# набор плагинов, я бы сказал, богат до избыточности, но главное есть Python
|
# набор плагинов, я бы сказал, богат до избыточности, но главное есть Python
|
||||||
# и Database Nagivator. Остальное - любителям и любознательным.
|
# и Database Nagivator. Остальное - любителям и любознательным.
|
||||||
(with inputs.nix-jetbrains-plugins.plugins."${system}"; [
|
(with inputs.nix-jetbrains-plugins.plugins."${system}"; [
|
||||||
#idea-community."2024.1"."mobi.hsz.idea.gitignore"
|
idea-community."2024.1"."mobi.hsz.idea.gitignore"
|
||||||
idea-community."2024.1"."org.jetbrains.erlang"
|
#idea-community."2024.1"."org.jetbrains.erlang"
|
||||||
idea-community."2024.1"."JProfiler"
|
idea-community."2024.1"."JProfiler"
|
||||||
idea-community."2024.1"."DBN"
|
idea-community."2024.1"."DBN"
|
||||||
idea-community."2024.1"."MatlabSupport"
|
idea-community."2024.1"."MatlabSupport"
|
||||||
#idea-community."2024.1"."com.intellij.notebooks.core"
|
|
||||||
idea-community."2024.1"."PlantUML integration"
|
idea-community."2024.1"."PlantUML integration"
|
||||||
idea-community."2024.1"."org.intellij.scala"
|
idea-community."2024.1"."org.intellij.scala"
|
||||||
idea-community."2024.1"."PythonCore"
|
idea-community."2024.1"."PythonCore"
|
||||||
|
|
@ -59,9 +70,9 @@ in
|
||||||
idea-community."2024.1"."org.mapstruct.intellij"
|
idea-community."2024.1"."org.mapstruct.intellij"
|
||||||
idea-community."2024.1"."ski.chrzanow.foldableprojectview"
|
idea-community."2024.1"."ski.chrzanow.foldableprojectview"
|
||||||
idea-community."2024.1"."String Manipulation"
|
idea-community."2024.1"."String Manipulation"
|
||||||
idea-community."2024.1"."quokka.js"
|
#idea-community."2024.1"."quokka.js"
|
||||||
idea-community."2024.1"."org.asciidoctor.intellij.asciidoc"
|
idea-community."2024.1"."org.asciidoctor.intellij.asciidoc"
|
||||||
#idea-community."2024.1"."R4Intellij"
|
idea-community."2024.1"."R4Intellij"
|
||||||
idea-community."2024.1"."com.redhat.devtools.lsp4ij"
|
idea-community."2024.1"."com.redhat.devtools.lsp4ij"
|
||||||
])
|
])
|
||||||
++
|
++
|
||||||
|
|
@ -91,7 +102,7 @@ in
|
||||||
|
|
||||||
# Напоминаю что у нас есть СЕТЕВОЙ ДИСК по адресу 10.0.174.12
|
# Напоминаю что у нас есть СЕТЕВОЙ ДИСК по адресу 10.0.174.12
|
||||||
# и для студентов пока есть единая учётка student@mirea.ru,
|
# и для студентов пока есть единая учётка student@mirea.ru,
|
||||||
# рассматривается вариант авторизации через login.mirea.ru.
|
# рассматривается вариант авторизации через sso.mirea.ru.
|
||||||
# Преподаватели могут зарегистрироваться ОТДЕЛЬНО
|
# Преподаватели могут зарегистрироваться ОТДЕЛЬНО
|
||||||
seafile-client
|
seafile-client
|
||||||
|
|
||||||
|
|
@ -151,8 +162,6 @@ in
|
||||||
# 1) STM32CubeIDE упаковать не удалось
|
# 1) STM32CubeIDE упаковать не удалось
|
||||||
# 2) есть основания полагать, что её функциональность лучше встроить
|
# 2) есть основания полагать, что её функциональность лучше встроить
|
||||||
# в IJ IDEA CE, как это сделано в настоящем Clion;
|
# в IJ IDEA CE, как это сделано в настоящем Clion;
|
||||||
#stm32cubemx.packages.x86_64-linux.stm32cubemx
|
|
||||||
stm32flash
|
|
||||||
stlink
|
stlink
|
||||||
stlink-gui
|
stlink-gui
|
||||||
stm32loader
|
stm32loader
|
||||||
|
|
@ -168,6 +177,115 @@ in
|
||||||
|
|
||||||
logisim-evolution
|
logisim-evolution
|
||||||
unityhub # UnityHub - 3D-моделирование, визуализация, геймдев, AR/VR
|
unityhub # UnityHub - 3D-моделирование, визуализация, геймдев, AR/VR
|
||||||
|
(pkgs.stdenv.mkDerivation rec {
|
||||||
|
pname = "dwsim";
|
||||||
|
version = "9.0.5";
|
||||||
|
|
||||||
|
src = pkgs.fetchurl {
|
||||||
|
url = "http://${serverIP}/dwsim_9.0.5-amd64.deb";
|
||||||
|
sha256 = "sha256:0352mxz9czfh52z4lf7njlyqvikvbh2bgs2h4zi2dsjrssql3h2j";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.dpkg
|
||||||
|
pkgs.makeWrapper
|
||||||
|
pkgs.bubblewrap
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = (with pkgs; [
|
||||||
|
dotnet-runtime
|
||||||
|
gtk3
|
||||||
|
glib
|
||||||
|
pango
|
||||||
|
cairo
|
||||||
|
gdk-pixbuf
|
||||||
|
atk
|
||||||
|
fontconfig
|
||||||
|
freetype
|
||||||
|
] ++ (with pkgs.xorg; [
|
||||||
|
libX11
|
||||||
|
libXcursor
|
||||||
|
libXrandr
|
||||||
|
libXinerama
|
||||||
|
libXi
|
||||||
|
]));
|
||||||
|
|
||||||
|
unpackPhase = ''
|
||||||
|
dpkg-deb -x $src .
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/lib/dwsim
|
||||||
|
mkdir -p $out/bin
|
||||||
|
|
||||||
|
cp -r usr/local/lib/dwsim/* $out/lib/dwsim/
|
||||||
|
mkdir -p $out/share/icons/hicolor/256x256/apps
|
||||||
|
cp $out/lib/dwsim/bitmaps/DWSIM_ico.png \
|
||||||
|
$out/share/icons/hicolor/256x256/apps/dwsim.png
|
||||||
|
mkdir -p "$out/lib/dwsim/DWSIM Application Data"
|
||||||
|
|
||||||
|
cat > $out/bin/dwsim << 'EOF'
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
|
||||||
|
APPDIR="@out@/lib/dwsim"
|
||||||
|
APPDATA="$HOME/.local/share/dwsim-appdata"
|
||||||
|
|
||||||
|
mkdir -p "$APPDATA"
|
||||||
|
|
||||||
|
# LD_LIBRARY_PATH для GtkSharp
|
||||||
|
export LD_LIBRARY_PATH="@gtk3@/lib:@glib@/lib:@pango@/lib:@cairo@/lib:@gdk-pixbuf@/lib:@atk@/lib:@fontconfig@/lib:@freetype@/lib:$LD_LIBRARY_PATH"
|
||||||
|
|
||||||
|
export DISPLAY="$DISPLAY"
|
||||||
|
|
||||||
|
exec @bwrap@ \
|
||||||
|
--bind "@out@" "@out@" \
|
||||||
|
--bind "$APPDATA" "$APPDIR/DWSIM Application Data" \
|
||||||
|
--ro-bind /nix /nix \
|
||||||
|
--ro-bind "$XAUTHORITY" "$HOME/.Xauthority" \
|
||||||
|
--setenv XAUTHORITY "$HOME/.Xauthority" \
|
||||||
|
--dev /dev \
|
||||||
|
--proc /proc \
|
||||||
|
--bind /tmp/.X11-unix /tmp/.X11-unix \
|
||||||
|
--setenv DISPLAY $DISPLAY \
|
||||||
|
--chdir "$APPDIR" \
|
||||||
|
@dotnet@ "$APPDIR/DWSIM.UI.Desktop.exe" "$@"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
substituteInPlace $out/bin/dwsim \
|
||||||
|
--subst-var out \
|
||||||
|
--subst-var-by bwrap ${pkgs.bubblewrap}/bin/bwrap \
|
||||||
|
--subst-var-by dotnet ${pkgs.dotnet-runtime}/bin/dotnet \
|
||||||
|
--subst-var-by gtk3 ${pkgs.gtk3} \
|
||||||
|
--subst-var-by glib ${pkgs.glib} \
|
||||||
|
--subst-var-by pango ${pkgs.pango} \
|
||||||
|
--subst-var-by cairo ${pkgs.cairo} \
|
||||||
|
--subst-var-by gdk-pixbuf ${pkgs.gdk-pixbuf} \
|
||||||
|
--subst-var-by atk ${pkgs.atk} \
|
||||||
|
--subst-var-by fontconfig ${pkgs.fontconfig} \
|
||||||
|
--subst-var-by freetype ${pkgs.freetype}
|
||||||
|
|
||||||
|
chmod +x $out/bin/dwsim
|
||||||
|
|
||||||
|
mkdir -p $out/share/applications
|
||||||
|
|
||||||
|
cat > $out/share/applications/dwsim.desktop << EOF
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=DWSIM
|
||||||
|
GenericName=Process Simulator
|
||||||
|
Comment=Chemical Process Simulation Environment
|
||||||
|
Exec=dwsim
|
||||||
|
Icon=dwsim
|
||||||
|
Terminal=false
|
||||||
|
Categories=Development
|
||||||
|
StartupWMClass=DWSIM
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
'';
|
||||||
|
})
|
||||||
(pkgs.stdenv.mkDerivation rec {
|
(pkgs.stdenv.mkDerivation rec {
|
||||||
pname = "cnc_vmc_sim";
|
pname = "cnc_vmc_sim";
|
||||||
version = "1.0.0-share";
|
version = "1.0.0-share";
|
||||||
|
|
@ -231,7 +349,7 @@ in
|
||||||
pname = "simintech";
|
pname = "simintech";
|
||||||
version = "2.23.13";
|
version = "2.23.13";
|
||||||
src = builtins.fetchTarball {
|
src = builtins.fetchTarball {
|
||||||
url = "http://kafpi.local/simintech_rus_linux.tgz";
|
url = "http://${serverIP}/simintech_rus_linux.tgz";
|
||||||
sha256 = "sha256:1i9plx6vx6jm38bx4kbh4piak5jwrpc4hxxjd3b89zyng1g4abvs";
|
sha256 = "sha256:1i9plx6vx6jm38bx4kbh4piak5jwrpc4hxxjd3b89zyng1g4abvs";
|
||||||
};
|
};
|
||||||
dontFixLibtool = true;
|
dontFixLibtool = true;
|
||||||
|
|
@ -249,6 +367,8 @@ in
|
||||||
pango.out
|
pango.out
|
||||||
xorg.libX11.out
|
xorg.libX11.out
|
||||||
zlib.out
|
zlib.out
|
||||||
|
xorg.libX11.out
|
||||||
|
zlib.out
|
||||||
(pkgs.writeShellScriptBin "firefox" "exec ${pkgs.chromium}/bin/chromium \"$@\"") # похоже, что SimInTech захардкодил Firefox, но не все так юзают Firefox
|
(pkgs.writeShellScriptBin "firefox" "exec ${pkgs.chromium}/bin/chromium \"$@\"") # похоже, что SimInTech захардкодил Firefox, но не все так юзают Firefox
|
||||||
];
|
];
|
||||||
runScript = "${src}/bin/mmain";
|
runScript = "${src}/bin/mmain";
|
||||||
|
|
@ -277,11 +397,36 @@ in
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
||||||
|
(pkgs.writeShellScriptBin "gcc" ''${pkgs.clang}/bin/clang "$@"'')
|
||||||
|
(pkgs.writeShellScriptBin "g++" ''${pkgs.clang}/bin/clang++ "$@"'')
|
||||||
|
|
||||||
(vscode-with-extensions.override {
|
(vscode-with-extensions.override {
|
||||||
vscodeExtensions = with vscode-extensions; [
|
vscodeExtensions = with vscode-extensions; [
|
||||||
ms-vscode.cpptools-extension-pack
|
ms-vscode.cpptools-extension-pack
|
||||||
zainchen.json
|
zainchen.json
|
||||||
ms-dotnettools.csharp
|
ms-dotnettools.csharp
|
||||||
|
formulahendry.code-runner
|
||||||
|
tomoki1207.pdf
|
||||||
|
ms-vscode.hexeditor
|
||||||
|
jebbs.plantuml
|
||||||
|
ms-toolsai.jupyter
|
||||||
|
ms-toolsai.vscode-jupyter-slideshow
|
||||||
|
ms-toolsai.vscode-jupyter-cell-tags
|
||||||
|
ms-vscode-remote.remote-ssh
|
||||||
|
timonwong.shellcheck
|
||||||
|
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||||
|
{
|
||||||
|
name = "better-cpp-syntax";
|
||||||
|
publisher = "jeff-hykin";
|
||||||
|
version = "1.27.1";
|
||||||
|
sha256 = "sha256-GO/ooq50KLFsiEuimqTbD/mauQYcD/p2keHYo/6L9gw=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "vscode-cppcheck";
|
||||||
|
publisher = "brobeson";
|
||||||
|
version = "0.1.0";
|
||||||
|
sha256 = "sha256-RDgO8/XenttOcYQSGEu4N2FKg9+FZaQe6HYkVjztH5o=";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -351,6 +496,20 @@ in
|
||||||
historyLimit = 5000;
|
historyLimit = 5000;
|
||||||
clock24 = true;
|
clock24 = true;
|
||||||
};
|
};
|
||||||
|
programs.chromium = {
|
||||||
|
enable = true;
|
||||||
|
extraOpts = {
|
||||||
|
"BrowserSignin" = 0;
|
||||||
|
"SyncDisabled" = true;
|
||||||
|
"PasswordManagerEnabled" = false;
|
||||||
|
"SpellcheckEnabled" = true;
|
||||||
|
"SpellcheckLanguage" = [
|
||||||
|
"ru"
|
||||||
|
"en-US"
|
||||||
|
"fr"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# если машина установлена на диск с Windows,
|
# если машина установлена на диск с Windows,
|
||||||
# то она позволяет "увидеть" и выбрать Windows в течение 30 с
|
# то она позволяет "увидеть" и выбрать Windows в течение 30 с
|
||||||
|
|
@ -381,10 +540,9 @@ in
|
||||||
nvidia.acceptLicense = true;
|
nvidia.acceptLicense = true;
|
||||||
};
|
};
|
||||||
nix.settings = {
|
nix.settings = {
|
||||||
substituters = [
|
substituters = if config.services.harmonia.enable then [
|
||||||
"https://cache.nixos.org"
|
"https://cache.nixos.org"
|
||||||
];
|
] else [ "https://cache.nixos.org" "http://${buildNodeYggIP}:5000" ];
|
||||||
trusted-public-keys = ["kafpi.local:PttR9S1eDyint3v0LCp5zfBGG+xfxzQ+cxKAQARNpyw="];
|
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
};
|
};
|
||||||
nix.extraOptions = ''
|
nix.extraOptions = ''
|
||||||
|
|
@ -456,24 +614,7 @@ in
|
||||||
services.yggdrasil = {
|
services.yggdrasil = {
|
||||||
enable = true;
|
enable = true;
|
||||||
persistentKeys = true;
|
persistentKeys = true;
|
||||||
settings = { Peers = [ "tcp://10.0.174.12:12345" ]; };
|
settings = { Peers = [ "tcp://${serverIP}:12345" ]; };
|
||||||
};
|
|
||||||
services.avahi = {
|
|
||||||
enable = false;
|
|
||||||
hostName = "nixos"
|
|
||||||
+ builtins.readFile ((pkgs.runCommandLocal "uuid" {} ''
|
|
||||||
mkdir $out
|
|
||||||
cat /proc/sys/kernel/random/uuid > $out/uuid
|
|
||||||
'')+"/uuid");
|
|
||||||
nssmdns4 = true;
|
|
||||||
openFirewall = true;
|
|
||||||
publish = {
|
|
||||||
enable = true;
|
|
||||||
hinfo = true;
|
|
||||||
workstation = true;
|
|
||||||
domain = true;
|
|
||||||
addresses = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# каждый компьютер имеет выход в интернет
|
# каждый компьютер имеет выход в интернет
|
||||||
|
|
@ -481,11 +622,9 @@ in
|
||||||
|
|
||||||
networking.hostName = "nixos";
|
networking.hostName = "nixos";
|
||||||
|
|
||||||
# каждый компьютер ресолвит DNS-запросы СТРОГО через наш сервер
|
|
||||||
networking.nameservers = [ serverIP ];
|
|
||||||
|
|
||||||
# каждый компьютер знает, что kafpi.local - это адрес нашего сервера
|
# каждый компьютер знает, что kafpi.local - это адрес нашего сервера
|
||||||
networking.hosts."${serverIP}" = [ "kafpi.local" "hydra.kafpi.local" ];
|
networking.hosts."${serverIP}" = [ "kafpi.local" ];
|
||||||
|
networking.hosts."${buildNodeYggIP}" = [ "nixos-builds-node" ];
|
||||||
#security.pki.certificateFiles = [
|
#security.pki.certificateFiles = [
|
||||||
# (builtins.fetchurl {
|
# (builtins.fetchurl {
|
||||||
# url = "http://${serverIP}/server.crt";
|
# url = "http://${serverIP}/server.crt";
|
||||||
|
|
@ -548,15 +687,6 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
enableSSHSupport = true;
|
enableSSHSupport = true;
|
||||||
};
|
};
|
||||||
chromium = {
|
|
||||||
enable = true;
|
|
||||||
extraOpts = {
|
|
||||||
"SyncDisabled" = true;
|
|
||||||
"PasswordManagerEnabled" = false;
|
|
||||||
"SpellcheckEnabled" = false;
|
|
||||||
"homepageLocation" = "https://ya.ru";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
udevil.enable = true; # тоже нужно для флешек
|
udevil.enable = true; # тоже нужно для флешек
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue