Compare commits
24 commits
jupyter_di
...
prod
Author | SHA1 | Date | |
---|---|---|---|
fruchti | 76cabab60a | ||
fruchti | ef69748075 | ||
fruchti | 4994a81881 | ||
fruchti | 0fe9a18a96 | ||
fruchti | 4553c49a2b | ||
fruchti | 8c8fbbbff8 | ||
fruchti | b7719a7570 | ||
fruchti | 57f19e259f | ||
fruchti | 1f863c789d | ||
fruchti | 801a472e99 | ||
fruchti | d0d2f1f64e | ||
fruchti | 2a4dce6e02 | ||
fruchti | 958117375a | ||
fruchti | 9195d6f6de | ||
fruchti | b67bf68f0d | ||
fruchti | c44799033a | ||
fruchti | 7a7eb0e9fb | ||
fruchti | c0baac0488 | ||
fruchti | 131c18230a | ||
fruchti | f678ad57f8 | ||
fruchti | d6f2c33a09 | ||
fruchti | 7d14f4a8df | ||
fruchti | 2494def822 | ||
fruchti | a5d18374bf |
|
@ -3,7 +3,7 @@
|
||||||
config = lib.mkDefault {
|
config = lib.mkDefault {
|
||||||
i18n.defaultLocale = "en_GB.UTF-8";
|
i18n.defaultLocale = "en_GB.UTF-8";
|
||||||
console.keyMap = "us";
|
console.keyMap = "us";
|
||||||
services.xserver.layout = "us-fruchti";
|
services.xserver.xkb.layout = "us-fruchti";
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
changeColorScheme-vim
|
changeColorScheme-vim
|
||||||
vim-dispatch
|
vim-dispatch
|
||||||
vimtex
|
vimtex
|
||||||
suda-vim
|
vim-suda
|
||||||
];
|
];
|
||||||
opt = [];
|
opt = [];
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,7 +5,8 @@
|
||||||
tmux zellij
|
tmux zellij
|
||||||
wget
|
wget
|
||||||
rsync
|
rsync
|
||||||
git
|
magic-wormhole
|
||||||
|
git git-lfs
|
||||||
gnupg
|
gnupg
|
||||||
file
|
file
|
||||||
ripgrep
|
ripgrep
|
||||||
|
@ -13,7 +14,7 @@
|
||||||
htop
|
htop
|
||||||
ncdu
|
ncdu
|
||||||
killall
|
killall
|
||||||
ranger nnn joshuto
|
ranger nnn # joshuto
|
||||||
hexyl
|
hexyl
|
||||||
rink
|
rink
|
||||||
|
|
||||||
|
@ -37,7 +38,7 @@
|
||||||
xsel
|
xsel
|
||||||
];
|
];
|
||||||
|
|
||||||
fonts.fonts = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
vollkorn
|
vollkorn
|
||||||
alegreya alegreya-sans
|
alegreya alegreya-sans
|
||||||
b612
|
b612
|
||||||
|
|
|
@ -24,7 +24,7 @@ in
|
||||||
groups = [ "wheel" ];
|
groups = [ "wheel" ];
|
||||||
commands = [
|
commands = [
|
||||||
{
|
{
|
||||||
command = "${pkgs.nixos-rebuild}/bin/nixos-rebuild *";
|
command = "/run/current-system/sw/bin/nixos-rebuild";
|
||||||
options = [ "NOPASSWD" ];
|
options = [ "NOPASSWD" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
services.xserver.extraLayouts = {
|
services.xserver.xkb.extraLayouts = {
|
||||||
de-x270 = {
|
de-x270 = {
|
||||||
description = "DE layout with some small changes for Thinkpad X270";
|
description = "DE layout with some small changes for Thinkpad X270";
|
||||||
languages = [ "deu" ];
|
languages = [ "deu" ];
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./development.nix
|
./development.nix
|
||||||
./gnome.nix
|
./xfce.nix
|
||||||
./x270.nix
|
./x270.nix
|
||||||
./scanner.nix
|
./scanner.nix
|
||||||
./printer.nix
|
./printer.nix
|
||||||
|
@ -63,13 +63,16 @@
|
||||||
|
|
||||||
zathura
|
zathura
|
||||||
inkscape
|
inkscape
|
||||||
vlc
|
vlc mpv a52dec
|
||||||
gthumb
|
gthumb
|
||||||
gimp
|
gimp
|
||||||
tenacity
|
tenacity
|
||||||
|
|
||||||
openscad
|
openscad
|
||||||
freecad
|
freecad
|
||||||
solvespace
|
solvespace
|
||||||
|
(pkgs.callPackage ../packages/dune3d.nix {})
|
||||||
|
|
||||||
vscodium
|
vscodium
|
||||||
marktext
|
marktext
|
||||||
tor-browser-bundle-bin
|
tor-browser-bundle-bin
|
||||||
|
@ -172,6 +175,16 @@
|
||||||
LidSwitchIgnoreInhibited = no
|
LidSwitchIgnoreInhibited = no
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
services.earlyoom = {
|
||||||
|
enable = true;
|
||||||
|
enableNotifications = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [{
|
||||||
|
device = "/swapfile";
|
||||||
|
size = 16 * 1024;
|
||||||
|
}];
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./gitea.nix
|
./forgejo.nix
|
||||||
./tls_sni.nix
|
./tls_sni.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader.grub.enable = true;
|
boot.loader.grub.enable = true;
|
||||||
boot.loader.grub.device = "/dev/vda";
|
boot.loader.grub.device = "/dev/sda";
|
||||||
|
|
||||||
networking.hostName = "Emitter";
|
networking.hostName = "Emitter";
|
||||||
|
|
||||||
|
@ -14,12 +14,12 @@
|
||||||
networking.useDHCP = false;
|
networking.useDHCP = false;
|
||||||
networking = {
|
networking = {
|
||||||
defaultGateway = {
|
defaultGateway = {
|
||||||
address = "2.59.133.1";
|
address = "176.96.139.1";
|
||||||
interface = "ens3";
|
interface = "ens18";
|
||||||
};
|
};
|
||||||
defaultGateway6 = {
|
defaultGateway6 = {
|
||||||
address = "2a0d:5940:7::1";
|
address = "2a0d:5940:80:4e::1";
|
||||||
interface = "ens3";
|
interface = "ens18";
|
||||||
};
|
};
|
||||||
nameservers = [
|
nameservers = [
|
||||||
"9.9.9.10"
|
"9.9.9.10"
|
||||||
|
@ -27,38 +27,38 @@
|
||||||
"2606:4700:4700::1111"
|
"2606:4700:4700::1111"
|
||||||
"2001:4860:4860::8888"
|
"2001:4860:4860::8888"
|
||||||
];
|
];
|
||||||
interfaces.ens3 = {
|
interfaces.ens18 = {
|
||||||
ipv4 = {
|
ipv4 = {
|
||||||
addresses = [
|
addresses = [
|
||||||
{
|
{
|
||||||
address = "2.59.133.12";
|
address = "176.96.139.54";
|
||||||
prefixLength = 24;
|
prefixLength = 24;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
routes = [
|
routes = [
|
||||||
{
|
{
|
||||||
address = "2.59.133.0";
|
address = "176.96.139.0";
|
||||||
prefixLength = 24;
|
prefixLength = 24;
|
||||||
via = "2.59.133.1";
|
via = "176.96.139.1";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
ipv6 = {
|
ipv6 = {
|
||||||
addresses = [
|
addresses = [
|
||||||
{
|
{
|
||||||
address = "2a0d:5940:7:16f:216:3cff:fe63:9a54";
|
address = "2a0d:5940:80:4e::2";
|
||||||
prefixLength = 64;
|
prefixLength = 64;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
address = "fe80::216:3cff:fe63:9a54";
|
address = "fe80::4874:40ff:fe38:7a45";
|
||||||
prefixLength = 64;
|
prefixLength = 64;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
routes = [
|
routes = [
|
||||||
{
|
{
|
||||||
address = "2a0d:5940:7:16f:216:3cff:fe63:9a54";
|
address = "2a0d:5940:80:4e::2";
|
||||||
prefixLength = 64;
|
prefixLength = 64;
|
||||||
via = "2a0d:5940:7::1";
|
via = "2a0d:5940:80:4e::1";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -131,7 +131,11 @@
|
||||||
};
|
};
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
|
|
||||||
RestartSec = retryDelay;
|
RestartSec = retryDelay;
|
||||||
|
# Skip transitions through failed state, i.e. don’t send a e-mail
|
||||||
|
# before the maximum number of retries is exhausted
|
||||||
|
RestartMode = "direct";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,24 @@ in
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
boot.kernelParams = [ "acpi=force" "reboot=bios" ];
|
boot.kernelParams = [ "acpi=force" "reboot=bios" ];
|
||||||
|
|
||||||
|
boot.initrd.kernelModules = [ "i915" ];
|
||||||
|
nixpkgs.config.packageOverrides = pkgs: {
|
||||||
|
vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
|
||||||
|
};
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
(if (lib.versionOlder (lib.versions.majorMinor lib.version) "23.11") then vaapiIntel else intel-vaapi-driver)
|
||||||
|
libvdpau-va-gl
|
||||||
|
vaapiVdpau
|
||||||
|
# intel-media-driver
|
||||||
|
];
|
||||||
|
};
|
||||||
|
environment.variables = {
|
||||||
|
VDPAU_DRIVER = "va_gl";
|
||||||
|
};
|
||||||
|
hardware.cpu.intel.updateMicrocode = true;
|
||||||
|
|
||||||
networking.hostName = "Rupert";
|
networking.hostName = "Rupert";
|
||||||
|
|
||||||
users.users = {
|
users.users = {
|
||||||
|
@ -56,6 +74,7 @@ in
|
||||||
services.flatpak.enable = true;
|
services.flatpak.enable = true;
|
||||||
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||||
xdg.portal.enable = true;
|
xdg.portal.enable = true;
|
||||||
|
xdg.portal.config.common.default = "*";
|
||||||
|
|
||||||
hardware.bluetooth = {
|
hardware.bluetooth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -127,6 +146,11 @@ in
|
||||||
SUBSYSTEM=="video4linux", ATTRS{idProduct}=="0002", ATTRS{idVendor}=="1d6b", SYMLINK+="hdmi_capture"
|
SUBSYSTEM=="video4linux", ATTRS{idProduct}=="0002", ATTRS{idVendor}=="1d6b", SYMLINK+="hdmi_capture"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
swapDevices = [{
|
||||||
|
device = "/swapfile";
|
||||||
|
size = 8 * 1024;
|
||||||
|
}];
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
|
|
@ -4,12 +4,14 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
windowManager.bspwm.enable = true;
|
windowManager.bspwm.enable = true;
|
||||||
displayManager = {
|
displayManager = {
|
||||||
defaultSession = "none+bspwm";
|
|
||||||
lightdm.enable = true;
|
lightdm.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.displayManager = {
|
||||||
|
defaultSession = "none+bspwm";
|
||||||
autoLogin.enable = true;
|
autoLogin.enable = true;
|
||||||
autoLogin.user = "waldi";
|
autoLogin.user = "waldi";
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
services.unclutter-xfixes = {
|
services.unclutter-xfixes = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="0660", GROUP="plugdev"
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="0660", GROUP="plugdev"
|
||||||
|
|
||||||
# WCH-LinkE
|
# WCH-LinkE
|
||||||
SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8010", MODE="0660", GROUP="plugdev"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8010", MODE="0660", GROUP="plugdev"
|
||||||
|
|
||||||
# Glasgow
|
# Glasgow
|
||||||
SUBSYSTEM=="usb", ATTRS{idVendor}=="20b7", ATTRS{idProduct}=="9db1", MODE="0660", GROUP="plugdev"
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="20b7", ATTRS{idProduct}=="9db1", MODE="0660", GROUP="plugdev"
|
||||||
|
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
@ -2,18 +2,17 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
domain = "git.25120.org";
|
domain = "git.25120.org";
|
||||||
giteaCustom = pkgs.callPackage ../packages/directory.nix {
|
forgejoCustom = pkgs.callPackage ../packages/directory.nix {
|
||||||
name = "gitea-custom";
|
name = "forgejo-custom";
|
||||||
source = ./gitea-custom;
|
source = ./forgejo-custom;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
services.gitea = {
|
services.forgejo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
appName = "${domain}";
|
|
||||||
database = {
|
database = {
|
||||||
type = "postgres";
|
type = "postgres";
|
||||||
passwordFile = "/secrets/gitea_db_password";
|
passwordFile = "/secrets/forgejo_db_password";
|
||||||
createDatabase = false;
|
createDatabase = false;
|
||||||
};
|
};
|
||||||
repositoryRoot = "/data/git/repositories";
|
repositoryRoot = "/data/git/repositories";
|
||||||
|
@ -22,12 +21,13 @@ in
|
||||||
contentDir = "/data/git/data/lfs";
|
contentDir = "/data/git/data/lfs";
|
||||||
};
|
};
|
||||||
settings = let
|
settings = let
|
||||||
|
python = pkgs.python311;
|
||||||
docutils =
|
docutils =
|
||||||
pkgs.python310.withPackages (ps: with ps; [
|
python.withPackages (ps: with ps; [
|
||||||
docutils # Provides rendering of ReStructured Text files
|
docutils # Provides rendering of ReStructured Text files
|
||||||
pygments # Provides syntax highlighting
|
pygments # Provides syntax highlighting
|
||||||
]);
|
]);
|
||||||
nbconvert = pkgs.python310.withPackages (ps: with ps; [
|
nbconvert = python.withPackages (ps: with ps; [
|
||||||
jupyter
|
jupyter
|
||||||
ipykernel
|
ipykernel
|
||||||
nbconvert
|
nbconvert
|
||||||
|
@ -41,7 +41,7 @@ in
|
||||||
input_file="$1"
|
input_file="$1"
|
||||||
|
|
||||||
command="${nbconvert}/bin/jupyter nbconvert --stdout --to html --template basic"
|
command="${nbconvert}/bin/jupyter nbconvert --stdout --to html --template basic"
|
||||||
cache_directory="${config.services.gitea.stateDir}/markup_cache/jupyter"
|
cache_directory="${config.services.forgejo.stateDir}/markup_cache/jupyter"
|
||||||
max_cache_file_count="${toString max_cached_jupyter_notebooks}"
|
max_cache_file_count="${toString max_cached_jupyter_notebooks}"
|
||||||
|
|
||||||
cache_file="$cache_directory/$(md5sum "$input_file" | cut -d' ' -f1)"
|
cache_file="$cache_directory/$(md5sum "$input_file" | cut -d' ' -f1)"
|
||||||
|
@ -64,6 +64,7 @@ in
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
DEFAULT.APP_NAME = "${domain}";
|
||||||
server = {
|
server = {
|
||||||
SSH_PORT = lib.head config.services.openssh.ports;
|
SSH_PORT = lib.head config.services.openssh.ports;
|
||||||
ROOT_URL = "https://${domain}/";
|
ROOT_URL = "https://${domain}/";
|
||||||
|
@ -72,6 +73,7 @@ in
|
||||||
};
|
};
|
||||||
service.DISABLE_REGISTRATION = true;
|
service.DISABLE_REGISTRATION = true;
|
||||||
session.COOKIE_SECURE = true;
|
session.COOKIE_SECURE = true;
|
||||||
|
UI.DEFAULT_THEME = "forgejo-auto";
|
||||||
"markup.restructuredtext" = {
|
"markup.restructuredtext" = {
|
||||||
ENABLED = true;
|
ENABLED = true;
|
||||||
FILE_EXTENSIONS = ".rst";
|
FILE_EXTENSIONS = ".rst";
|
||||||
|
@ -103,11 +105,11 @@ in
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
authentication = ''
|
authentication = ''
|
||||||
local gitea all ident map=gitea-users
|
local forgejo all ident map=forgejo-users
|
||||||
'';
|
'';
|
||||||
# Map the gitea user to postgresql
|
# Map the forgejo user to postgresql
|
||||||
identMap = ''
|
identMap = ''
|
||||||
gitea-users gitea gitea
|
forgejo-users forgejo forgejo
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -124,14 +126,14 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# users.users.gitea.extraGroups = [ "keys" ];
|
# users.users.forgejo.extraGroups = [ "keys" ];
|
||||||
systemd.services.gitea = {
|
systemd.services.forgejo = {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ReadOnlyPaths = [ "/secrets" ];
|
ReadOnlyPaths = [ "/secrets" ];
|
||||||
};
|
};
|
||||||
preStart = ''
|
preStart = ''
|
||||||
cp -frT "${giteaCustom}/" "${config.services.gitea.stateDir}/custom/"
|
cp -frT "${forgejoCustom}/" "${config.services.forgejo.stateDir}/custom/"
|
||||||
find "${config.services.gitea.stateDir}/custom/" -type d -exec chmod 0750 '{}' + -or -type f -exec chmod 0640 '{}' +
|
find "${config.services.forgejo.stateDir}/custom/" -type d -exec chmod 0750 '{}' + -or -type f -exec chmod 0640 '{}' +
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
autoLogin.user = "fruchti";
|
autoLogin.user = "fruchti";
|
||||||
};
|
};
|
||||||
security.pam.services.gdm.enableGnomeKeyring = true;
|
security.pam.services.gdm.enableGnomeKeyring = true;
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
services.touchegg.enable = true;
|
services.touchegg.enable = true;
|
||||||
services.gnome.gnome-settings-daemon.enable = true;
|
services.gnome.gnome-settings-daemon.enable = true;
|
||||||
|
|
|
@ -5,7 +5,6 @@ in
|
||||||
{
|
{
|
||||||
services.hedgedoc = {
|
services.hedgedoc = {
|
||||||
enable = true;
|
enable = true;
|
||||||
workDir = "/data/hedgedoc";
|
|
||||||
environmentFile = "/secrets/hedgedoc.env";
|
environmentFile = "/secrets/hedgedoc.env";
|
||||||
settings = {
|
settings = {
|
||||||
port = 7000;
|
port = 7000;
|
||||||
|
@ -39,9 +38,7 @@ in
|
||||||
ensureUsers = [
|
ensureUsers = [
|
||||||
{
|
{
|
||||||
name = "hedgedoc";
|
name = "hedgedoc";
|
||||||
ensurePermissions = {
|
ensureDBOwnership = true;
|
||||||
"DATABASE hedgedoc" = "ALL PRIVILEGES";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
ensureDatabases = [ "hedgedoc" ];
|
ensureDatabases = [ "hedgedoc" ];
|
||||||
|
|
|
@ -6,20 +6,21 @@ in
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
https = true;
|
https = true;
|
||||||
package = pkgs.nextcloud26;
|
package = pkgs.nextcloud28;
|
||||||
hostName = hostName;
|
hostName = hostName;
|
||||||
datadir = "/data/nextcloud";
|
datadir = "/data/nextcloud";
|
||||||
config = {
|
settings = {
|
||||||
dbtype = "pgsql";
|
trusted_domains = [
|
||||||
dbhost = "/run/postgresql";
|
|
||||||
adminpassFile = "/secrets/nextcloud_admin_password.txt";
|
|
||||||
extraTrustedDomains = [
|
|
||||||
((lib.toLower config.networking.hostName) + ".lan")
|
((lib.toLower config.networking.hostName) + ".lan")
|
||||||
(lib.toLower config.networking.hostName)
|
(lib.toLower config.networking.hostName)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
config = {
|
||||||
|
dbtype = "pgsql";
|
||||||
|
dbhost = "/run/postgresql";
|
||||||
|
adminpassFile = "/secrets/nextcloud_admin_password.txt";
|
||||||
|
};
|
||||||
caching.redis = true;
|
caching.redis = true;
|
||||||
enableBrokenCiphersForSSE = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
|
@ -27,16 +28,14 @@ in
|
||||||
ensureUsers = [
|
ensureUsers = [
|
||||||
{
|
{
|
||||||
name = "nextcloud";
|
name = "nextcloud";
|
||||||
ensurePermissions = {
|
ensureDBOwnership = true;
|
||||||
"DATABASE nextcloud" = "ALL PRIVILEGES";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "superuser";
|
|
||||||
ensurePermissions = {
|
|
||||||
"ALL TABLES IN SCHEMA public" = "ALL PRIVILEGES";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
# {
|
||||||
|
# name = "superuser";
|
||||||
|
# ensurePermissions = {
|
||||||
|
# "ALL TABLES IN SCHEMA public" = "ALL PRIVILEGES";
|
||||||
|
# };
|
||||||
|
# }
|
||||||
];
|
];
|
||||||
ensureDatabases = [ "nextcloud" ];
|
ensureDatabases = [ "nextcloud" ];
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,6 +6,17 @@
|
||||||
speed = 170;
|
speed = 170;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Ensure that trackpoint mouse buttons work after suspend without having
|
||||||
|
# to touch the trackpoint first
|
||||||
|
powerManagement = {
|
||||||
|
powerDownCommands = ''
|
||||||
|
modprobe -r psmouse
|
||||||
|
'';
|
||||||
|
resumeCommands = ''
|
||||||
|
modprobe psmouse
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
services.xserver.videoDrivers = [ "modesetting" ];
|
services.xserver.videoDrivers = [ "modesetting" ];
|
||||||
|
|
||||||
boot.initrd.kernelModules = [ "i915" ];
|
boot.initrd.kernelModules = [ "i915" ];
|
||||||
|
|
43
hosts/xfce.nix
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
libinput.enable = true;
|
||||||
|
desktopManager = {
|
||||||
|
xfce.enable = true;
|
||||||
|
xterm.enable = false;
|
||||||
|
};
|
||||||
|
displayManager = {
|
||||||
|
lightdm.enable = true;
|
||||||
|
defaultSession = "xfce";
|
||||||
|
autoLogin.enable = true;
|
||||||
|
autoLogin.user = "fruchti";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
nixpkgs.config.pulseaudio = true;
|
||||||
|
hardware.pulseaudio.enable = true;
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
services.blueman.enable = true;
|
||||||
|
# environment.xfce.excludePackages = with pkgs.xfce; [
|
||||||
|
# xfce4-terminal
|
||||||
|
# ];
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
xfce.xfce4-whiskermenu-plugin
|
||||||
|
xfce.xfce4-pulseaudio-plugin
|
||||||
|
xfce.xfce4-volumed-pulse
|
||||||
|
xfce.xfwm4-themes
|
||||||
|
pinentry-gnome
|
||||||
|
lounge-gtk-theme
|
||||||
|
hackneyed
|
||||||
|
blueman
|
||||||
|
gnome.file-roller
|
||||||
|
];
|
||||||
|
security.pam.services.lightdm.enableGnomeKeyring = true;
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
services.cpupower-gui.enable = true;
|
||||||
|
|
||||||
|
programs.gnupg.agent.pinentryFlavor = "gnome3";
|
||||||
|
services.pcscd.enable = true;
|
||||||
|
services.dbus.packages = [ pkgs.gcr ];
|
||||||
|
}
|
|
@ -20,7 +20,7 @@ in
|
||||||
to="${toAddress}"
|
to="${toAddress}"
|
||||||
service="$1"
|
service="$1"
|
||||||
full_status="$(systemctl status --full --lines 200 "$service")"
|
full_status="$(systemctl status --full --lines 200 "$service")"
|
||||||
exit_code="$(echo "$full_status" | head -n5 | tail -1 | sed -e 's/.*status=\(.*\))$/\1/g')"
|
exit_code="$(echo "$full_status" | head -n5 | tail -1 | sed -e 's/.*ExecStart=.*status=\(.*\))$/\1/g')"
|
||||||
# state="$(systemctl is-failed "$service")"
|
# state="$(systemctl is-failed "$service")"
|
||||||
|
|
||||||
fail_priority=1
|
fail_priority=1
|
||||||
|
|
|
@ -2,5 +2,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./burp.nix
|
./burp.nix
|
||||||
|
./horizon-eda.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
13
overlays/horizon-eda.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
horizon-eda = (super.horizon-eda.overrideAttrs (old: {
|
||||||
|
# Add an environment variable to fix redraw issues on Intel Graphics
|
||||||
|
patches = [
|
||||||
|
./horizon_software_draw_surface.patch
|
||||||
|
];
|
||||||
|
}));
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
10
overlays/horizon_software_draw_surface.patch
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
diff --git a/org.horizon_eda.HorizonEDA.desktop b/org.horizon_eda.HorizonEDA.desktop
|
||||||
|
index 7551df54..d8df7800 100644
|
||||||
|
--- a/org.horizon_eda.HorizonEDA.desktop
|
||||||
|
+++ b/org.horizon_eda.HorizonEDA.desktop
|
||||||
|
@@ -5,4 +5,4 @@ Categories=Development;Engineering;Electronics;
|
||||||
|
Type=Application
|
||||||
|
Terminal=false
|
||||||
|
Icon=org.horizon_eda.HorizonEDA
|
||||||
|
-Exec=horizon-eda %U
|
||||||
|
+Exec=env GDK_GL=software-draw-surface horizon-eda %U
|
65
packages/dune3d.nix
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
{
|
||||||
|
cmake,
|
||||||
|
eigen,
|
||||||
|
fetchFromGitHub,
|
||||||
|
glm,
|
||||||
|
gobject-introspection,
|
||||||
|
gtkmm4,
|
||||||
|
lib,
|
||||||
|
libepoxy,
|
||||||
|
librsvg,
|
||||||
|
libspnav,
|
||||||
|
libuuid,
|
||||||
|
meson,
|
||||||
|
ninja,
|
||||||
|
opencascade-occt,
|
||||||
|
pkg-config,
|
||||||
|
python3,
|
||||||
|
gcc13Stdenv,
|
||||||
|
wrapGAppsHook,
|
||||||
|
}:
|
||||||
|
|
||||||
|
gcc13Stdenv.mkDerivation rec {
|
||||||
|
pname = "dune3d";
|
||||||
|
version = "1.1.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "dune3d";
|
||||||
|
repo = "dune3d";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-Z/kdOc/MbnnEyRsel3aZGndTAy1eCdAK0Wdta0HxaE4=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
gobject-introspection
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
wrapGAppsHook
|
||||||
|
];
|
||||||
|
buildInputs = [
|
||||||
|
cmake
|
||||||
|
eigen
|
||||||
|
glm
|
||||||
|
gtkmm4
|
||||||
|
libepoxy
|
||||||
|
librsvg
|
||||||
|
libspnav
|
||||||
|
libuuid
|
||||||
|
opencascade-occt
|
||||||
|
(python3.withPackages (pp: [
|
||||||
|
pp.pygobject3
|
||||||
|
]))
|
||||||
|
];
|
||||||
|
|
||||||
|
env.CASROOT = opencascade-occt;
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "3D CAD application";
|
||||||
|
homepage = "https://dune3d.org";
|
||||||
|
license = licenses.gpl3Plus;
|
||||||
|
mainProgram = "dune3d";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|