commit
fe788df84d
19 changed files with 341 additions and 163 deletions
16
hetzner-vpn1.nix
Normal file
16
hetzner-vpn1.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./modules/server
|
||||
(import ./modules/hardware "hetzner-vpn1")
|
||||
];
|
||||
|
||||
config = {
|
||||
my = {
|
||||
server.enable = true;
|
||||
};
|
||||
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICdYqY3Y1/f1bsAi5Qfyr/UWuX9ixu96IeAlhoQaJkbf''
|
||||
];
|
||||
};
|
||||
}
|
||||
6
modules/_common/default.nix
Normal file
6
modules/_common/default.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./i18n.nix
|
||||
./nixpkgs.nix
|
||||
];
|
||||
}
|
||||
28
modules/_common/i18n.nix
Normal file
28
modules/_common/i18n.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{...}: {
|
||||
config = {
|
||||
time.timeZone = "Europe/Berlin";
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
extraLocaleSettings = {
|
||||
LC_ADDRESS = "de_DE.UTF-8";
|
||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
||||
LC_MONETARY = "de_DE.UTF-8";
|
||||
LC_NAME = "de_DE.UTF-8";
|
||||
LC_NUMERIC = "de_DE.UTF-8";
|
||||
LC_PAPER = "de_DE.UTF-8";
|
||||
LC_TELEPHONE = "de_DE.UTF-8";
|
||||
LC_TIME = "de_DE.UTF-8";
|
||||
};
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
# Configure keymap in X11
|
||||
layout = "de";
|
||||
xkbVariant = "";
|
||||
};
|
||||
|
||||
# Configure console keymap
|
||||
console.keyMap = "de";
|
||||
};
|
||||
}
|
||||
16
modules/_common/nixpkgs.nix
Normal file
16
modules/_common/nixpkgs.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{...}: {
|
||||
config = {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
system = {
|
||||
stateVersion = "22.11";
|
||||
# enable auto updates
|
||||
autoUpgrade.enable = true;
|
||||
};
|
||||
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "00:30";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.my;
|
||||
in {
|
||||
imports = [
|
||||
./home
|
||||
./desktop
|
||||
./i18n.nix
|
||||
./nixpkgs.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
firewall.enable = true;
|
||||
};
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PermitRootLogin = "no";
|
||||
PasswordAuthentication = false;
|
||||
KbdInteractiveAuthentication = false;
|
||||
};
|
||||
};
|
||||
|
||||
systemd.extraConfig = ''
|
||||
DefaultTimeoutStopSec=12s
|
||||
'';
|
||||
|
||||
programs = {
|
||||
zsh.enable = true;
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
package = pkgs.gitFull;
|
||||
};
|
||||
};
|
||||
|
||||
environment = {
|
||||
pathsToLink = ["/share/zsh"];
|
||||
|
||||
systemPackages = with pkgs; [
|
||||
lm_sensors
|
||||
tldr
|
||||
ncdu
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -7,8 +7,12 @@
|
|||
cfg = config.my.desktop;
|
||||
in {
|
||||
imports = [
|
||||
<home-manager/nixos>
|
||||
../_common
|
||||
./gnome.nix
|
||||
./kde.nix
|
||||
./vinzenz.nix
|
||||
./ronja.nix
|
||||
];
|
||||
|
||||
options.my.desktop = {
|
||||
|
|
@ -16,12 +20,25 @@ in {
|
|||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.useGlobalPkgs = true;
|
||||
|
||||
services = {
|
||||
# Enable the X11 windowing system / wayland depending on DE
|
||||
xserver.enable = true;
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
printing.enable = true;
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PermitRootLogin = "no";
|
||||
PasswordAuthentication = false;
|
||||
KbdInteractiveAuthentication = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Enable sound with pipewire.
|
||||
|
|
@ -44,21 +61,53 @@ in {
|
|||
};
|
||||
|
||||
# unblock kde connect / gsconnect
|
||||
networking.firewall = {
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
# KDE Connect
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
}
|
||||
];
|
||||
allowedUDPPortRanges = [
|
||||
{
|
||||
# KDE Connect
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
}
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
firewall.enable = true;
|
||||
|
||||
firewall = {
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
# KDE Connect
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
}
|
||||
];
|
||||
allowedUDPPortRanges = [
|
||||
{
|
||||
# KDE Connect
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
systemd.extraConfig = ''
|
||||
DefaultTimeoutStopSec=12s
|
||||
'';
|
||||
|
||||
programs = {
|
||||
zsh.enable = true;
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
package = pkgs.gitFull;
|
||||
};
|
||||
};
|
||||
|
||||
environment = {
|
||||
pathsToLink = ["/share/zsh"];
|
||||
|
||||
systemPackages = with pkgs; [
|
||||
lm_sensors
|
||||
tldr
|
||||
ncdu
|
||||
];
|
||||
};
|
||||
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
"electron-12.2.3"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,22 +4,22 @@
|
|||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.my.gnome;
|
||||
desktopCfg = config.my.desktop;
|
||||
cfg = desktopCfg.gnome;
|
||||
|
||||
#applyGnomeUserSettings = {
|
||||
# home.packages = with pkgs; [
|
||||
# gnome.gpaste
|
||||
# amberol
|
||||
# ];
|
||||
|
||||
# dconf.settings = {
|
||||
# "org/gnome/desktop/peripherals/keyboard" = {
|
||||
# numlock-state = true;
|
||||
# };
|
||||
# };
|
||||
#};
|
||||
applyGnomeUserSettings = {
|
||||
home.packages = with pkgs; [
|
||||
gnome.gpaste
|
||||
amberol
|
||||
];
|
||||
dconf.settings = {
|
||||
"org/gnome/desktop/peripherals/keyboard" = {
|
||||
numlock-state = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
in {
|
||||
options.my.gnome = {
|
||||
options.my.desktop.gnome = {
|
||||
enable = lib.mkEnableOption "gnome desktop";
|
||||
};
|
||||
|
||||
|
|
@ -39,7 +39,9 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [pkgs.gnomeExtensions.gsconnect];
|
||||
environment.systemPackages = with pkgs; [
|
||||
gnomeExtensions.gsconnect
|
||||
];
|
||||
|
||||
# remove some gnome default apps
|
||||
environment.gnome.excludePackages = with pkgs.gnome; [
|
||||
|
|
@ -56,8 +58,8 @@ in {
|
|||
];
|
||||
|
||||
home-manager.users = {
|
||||
# vinzenz = lib.mkIf config.my.home.vinzenz.enable applyGnomeUserSettings;
|
||||
# ronja = lib.mkIf config.my.home.ronja.enable applyGnomeUserSettings;
|
||||
vinzenz = lib.mkIf desktopCfg.vinzenz.enable applyGnomeUserSettings;
|
||||
ronja = lib.mkIf desktopCfg.ronja.enable applyGnomeUserSettings;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,21 +4,21 @@
|
|||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.my.kde;
|
||||
desktopCfg = config.my.desktop;
|
||||
cfg = desktopCfg.kde;
|
||||
|
||||
# applyKdeUserSettings = {
|
||||
# #home = {
|
||||
# # packages = with pkgs; [
|
||||
# # ];
|
||||
# #};
|
||||
|
||||
# services.kdeconnect = {
|
||||
# enable = true;
|
||||
# indicator = true;
|
||||
# };
|
||||
# };
|
||||
applyKdeUserSettings = {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
];
|
||||
};
|
||||
services.kdeconnect = {
|
||||
enable = true;
|
||||
indicator = true;
|
||||
};
|
||||
};
|
||||
in {
|
||||
options.my.kde = {
|
||||
options.my.desktop.kde = {
|
||||
enable = lib.mkEnableOption "KDE desktop";
|
||||
};
|
||||
|
||||
|
|
@ -37,17 +37,19 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
libsForQt5.kate
|
||||
libsForQt5.kalk
|
||||
];
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
libsForQt5.kate
|
||||
libsForQt5.kalk
|
||||
];
|
||||
|
||||
environment.plasma5.excludePackages = with pkgs.libsForQt5; [
|
||||
elisa
|
||||
gwenview
|
||||
okular
|
||||
khelpcenter
|
||||
];
|
||||
plasma5.excludePackages = with pkgs.libsForQt5; [
|
||||
elisa
|
||||
gwenview
|
||||
okular
|
||||
khelpcenter
|
||||
];
|
||||
};
|
||||
|
||||
programs = {
|
||||
dconf.enable = true;
|
||||
|
|
@ -55,8 +57,8 @@ in {
|
|||
};
|
||||
|
||||
home-manager.users = {
|
||||
#vinzenz = lib.mkIf config.my.home.vinzenz.enable applyKdeUserSettings;
|
||||
#ronja = lib.mkIf config.my.home.ronja.enable applyKdeUserSettings;
|
||||
vinzenz = lib.mkIf desktopCfg.vinzenz.enable applyKdeUserSettings;
|
||||
ronja = lib.mkIf desktopCfg.ronja.enable applyKdeUserSettings;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
127
modules/desktop/ronja.nix
Normal file
127
modules/desktop/ronja.nix
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.my.desktop.ronja;
|
||||
in {
|
||||
options.my.desktop.ronja = {
|
||||
enable = lib.mkEnableOption "user ronja";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Define user account
|
||||
users.users.ronja = {
|
||||
isNormalUser = true;
|
||||
description = "Ronja Spiegelberg";
|
||||
extraGroups = ["networkmanager" "wheel"];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
# home manager
|
||||
home-manager.users.ronja = {
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home = {
|
||||
username = "ronja";
|
||||
homeDirectory = "/home/ronja";
|
||||
stateVersion = "22.11";
|
||||
|
||||
sessionVariables = {
|
||||
EDITOR = "nano";
|
||||
};
|
||||
|
||||
packages = with pkgs; [
|
||||
## Apps
|
||||
steam
|
||||
telegram-desktop
|
||||
powerline
|
||||
powerline-fonts
|
||||
lutris
|
||||
kdiff3
|
||||
wineWowPackages.stagingFull
|
||||
wineWowPackages.fonts
|
||||
winetricks
|
||||
|
||||
(lutris.override {
|
||||
extraPkgs = pkgs: [
|
||||
# List package dependencies here
|
||||
];
|
||||
extraLibraries = pkgs: [
|
||||
# List library dependencies here
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
file.".nanorc".text = ''
|
||||
set linenumbers
|
||||
set mouse
|
||||
'';
|
||||
};
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
firefox.enable = true;
|
||||
command-not-found.enable = true;
|
||||
dircolors.enable = true;
|
||||
htop.enable = true;
|
||||
|
||||
zsh = {
|
||||
enable = true;
|
||||
|
||||
enableSyntaxHighlighting = true;
|
||||
enableAutosuggestions = true;
|
||||
enableVteIntegration = true;
|
||||
|
||||
history = {
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
expireDuplicatesFirst = true;
|
||||
};
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
theme = "agnoster";
|
||||
plugins = ["git" "sudo" "systemadmin"];
|
||||
};
|
||||
};
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
userName = "Ronja Spiegelberg";
|
||||
userEmail = "ronja.spiegelberg@gmail.com";
|
||||
|
||||
extraConfig = {
|
||||
pull.ff = "only";
|
||||
init.defaultBranch = "main";
|
||||
merge.tool = "kdiff3";
|
||||
};
|
||||
};
|
||||
|
||||
gh = {
|
||||
enable = true;
|
||||
enableGitCredentialHelper = true;
|
||||
};
|
||||
|
||||
chromium = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
{
|
||||
# ublock origin
|
||||
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
|
||||
}
|
||||
{
|
||||
id = "dcpihecpambacapedldabdbpakmachpb";
|
||||
updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/updates.xml";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
232
modules/desktop/vinzenz.nix
Normal file
232
modules/desktop/vinzenz.nix
Normal file
|
|
@ -0,0 +1,232 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.my.desktop.vinzenz;
|
||||
in {
|
||||
options.my.desktop.vinzenz = {
|
||||
enable = lib.mkEnableOption "user vinzenz";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Define user account
|
||||
users.users.vinzenz = {
|
||||
isNormalUser = true;
|
||||
description = "Vinzenz Schroeter";
|
||||
extraGroups = ["networkmanager" "wheel"];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
# home manager
|
||||
home-manager.users.vinzenz = {
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home = {
|
||||
username = "vinzenz";
|
||||
homeDirectory = "/home/vinzenz";
|
||||
stateVersion = "22.11";
|
||||
|
||||
sessionVariables = {
|
||||
EDITOR = "nano";
|
||||
};
|
||||
|
||||
packages = with pkgs; [
|
||||
keepassxc
|
||||
steam
|
||||
insync
|
||||
telegram-desktop
|
||||
simple-scan
|
||||
wireguard-tools
|
||||
element-desktop
|
||||
etcher
|
||||
iotop
|
||||
radeontop
|
||||
lsof
|
||||
wirelesstools
|
||||
powerline
|
||||
powerline-fonts
|
||||
thefuck
|
||||
dotnet-sdk_7
|
||||
jetbrains.rider
|
||||
alejandra
|
||||
arduino
|
||||
uucp
|
||||
screen
|
||||
jetbrains.pycharm-professional
|
||||
kdiff3
|
||||
docker
|
||||
wineWowPackages.stagingFull
|
||||
wineWowPackages.fonts
|
||||
winetricks
|
||||
|
||||
(lutris.override {
|
||||
extraPkgs = pkgs: [
|
||||
# List package dependencies here
|
||||
];
|
||||
extraLibraries = pkgs: [
|
||||
# List library dependencies here
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
file.".nanorc".text = ''
|
||||
set linenumbers
|
||||
set mouse
|
||||
'';
|
||||
};
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
firefox.enable = true;
|
||||
command-not-found.enable = true;
|
||||
dircolors.enable = true;
|
||||
fzf.enable = true;
|
||||
htop.enable = true;
|
||||
|
||||
zsh = {
|
||||
enable = true;
|
||||
|
||||
enableSyntaxHighlighting = true;
|
||||
enableAutosuggestions = true;
|
||||
enableVteIntegration = true;
|
||||
|
||||
initExtra = ''
|
||||
eval "$(direnv hook zsh)";
|
||||
eval $(thefuck --alias);
|
||||
'';
|
||||
|
||||
shellAliases = {
|
||||
my-apply = "sudo nixos-rebuild boot";
|
||||
my-switch = "sudo nixos-rebuild switch";
|
||||
my-update = "sudo nixos-rebuild boot --upgrade";
|
||||
my-fmt = "alejandra .";
|
||||
};
|
||||
|
||||
history = {
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
expireDuplicatesFirst = true;
|
||||
};
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
theme = "agnoster";
|
||||
plugins = ["git" "sudo" "docker" "systemadmin" "thefuck"];
|
||||
};
|
||||
};
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
userName = "Vinzenz Schroeter";
|
||||
userEmail = "vinzenz.f.s@gmail.com";
|
||||
|
||||
aliases = {
|
||||
prettylog = "log --pretty=oneline --graph";
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
pull.ff = "only";
|
||||
init.defaultBranch = "main";
|
||||
merge.tool = "kdiff3";
|
||||
push.autoSetupRemote = "true";
|
||||
};
|
||||
};
|
||||
|
||||
gh = {
|
||||
enable = true;
|
||||
enableGitCredentialHelper = true;
|
||||
};
|
||||
|
||||
vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
enableUpdateCheck = false;
|
||||
extensions = with pkgs; [
|
||||
vscode-extensions.bbenoist.nix
|
||||
vscode-extensions.ms-python.python
|
||||
vscode-extensions.kamadorueda.alejandra
|
||||
];
|
||||
userSettings = {
|
||||
"git.autofetch" = true;
|
||||
"update.mode" = "none";
|
||||
"editor.fontFamily" = "'Fira Code', 'Droid Sans Mono', 'monospace', monospace";
|
||||
"editor.fontLigatures" = true;
|
||||
"editor.formatOnSave" = true;
|
||||
"editor.formatOnSaveMode" = "modificationsIfAvailable";
|
||||
"editor.minimap.autohide" = true;
|
||||
"diffEditor.diffAlgorithm" = "advanced";
|
||||
"explorer.excludeGitIgnore" = true;
|
||||
"workbench.startupEditor" = "readme";
|
||||
"markdown.extension.tableFormatter.normalizeIndentation" = true;
|
||||
"markdown.extension.toc.orderedList" = false;
|
||||
"telemetry.telemetryLevel" = "off";
|
||||
"redhat.telemetry.enabled" = false;
|
||||
"workbench.enableExperiments" = false;
|
||||
};
|
||||
};
|
||||
|
||||
direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
|
||||
chromium = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
{
|
||||
# ublock origin
|
||||
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
|
||||
}
|
||||
{
|
||||
id = "dcpihecpambacapedldabdbpakmachpb";
|
||||
updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/updates.xml";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
bottom = {
|
||||
enable = true;
|
||||
settings = {
|
||||
# https://github.com/ClementTsang/bottom/blob/master/sample_configs/default_config.toml
|
||||
};
|
||||
};
|
||||
|
||||
exa = {
|
||||
enable = true;
|
||||
git = true;
|
||||
icons = true;
|
||||
enableAliases = true;
|
||||
extraOptions = [
|
||||
"--group-directories-first"
|
||||
"--header"
|
||||
];
|
||||
};
|
||||
|
||||
# checked https://rycee.gitlab.io/home-manager/options.html until "programs.jq"
|
||||
};
|
||||
|
||||
editorconfig = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"*" = {
|
||||
charset = "utf-8";
|
||||
end_of_line = "lf";
|
||||
trim_trailing_whitespace = true;
|
||||
insert_final_newline = true;
|
||||
max_line_width = 120;
|
||||
indent_style = "space";
|
||||
indent_size = 4;
|
||||
};
|
||||
"*.nix" = {
|
||||
indent_size = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
33
modules/hardware/common-desktop.nix
Normal file
33
modules/hardware/common-desktop.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
isEnabled = config.my.hardware.common-desktop.enable;
|
||||
in {
|
||||
imports = [
|
||||
];
|
||||
|
||||
options.my.hardware.common-desktop = {
|
||||
enable = lib.mkEnableOption "common desktop hardware settings";
|
||||
};
|
||||
|
||||
config = lib.mkIf isEnabled {
|
||||
boot.loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
};
|
||||
}
|
||||
32
modules/hardware/default.nix
Normal file
32
modules/hardware/default.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
hostName: {
|
||||
modulesPath,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
(builtins.toString ./. + "/${hostName}.nix")
|
||||
./common-desktop.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
networking.hostName = hostName;
|
||||
|
||||
boot.loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
};
|
||||
}
|
||||
97
modules/hardware/hetzner-vpn1.nix
Normal file
97
modules/hardware/hetzner-vpn1.nix
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
lib,
|
||||
modulesPath,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
];
|
||||
|
||||
config = {
|
||||
boot = {
|
||||
tmp.cleanOnBoot = true;
|
||||
loader = {
|
||||
systemd-boot.enable = lib.mkForce false;
|
||||
efi.canTouchEfiVariables = lib.mkForce false;
|
||||
grub = {
|
||||
enable = true;
|
||||
efiSupport = true;
|
||||
efiInstallAsRemovable = true;
|
||||
device = "nodev";
|
||||
};
|
||||
};
|
||||
initrd = {
|
||||
availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront"];
|
||||
kernelModules = ["nvme"];
|
||||
};
|
||||
};
|
||||
|
||||
zramSwap.enable = true;
|
||||
networking.domain = "";
|
||||
|
||||
fileSystems = {
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/77CF-345D";
|
||||
fsType = "vfat";
|
||||
};
|
||||
"/" = {
|
||||
device = "/dev/sda1";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
# This file was populated at runtime with the networking
|
||||
# details gathered from the active system.
|
||||
networking = {
|
||||
nameservers = ["8.8.8.8"];
|
||||
defaultGateway = "172.31.1.1";
|
||||
defaultGateway6 = {
|
||||
address = "fe80::1";
|
||||
interface = "eth0";
|
||||
};
|
||||
dhcpcd.enable = false;
|
||||
usePredictableInterfaceNames = lib.mkForce false;
|
||||
interfaces = {
|
||||
eth0 = {
|
||||
ipv4 = {
|
||||
addresses = [
|
||||
{
|
||||
address = "157.90.146.125";
|
||||
prefixLength = 32;
|
||||
}
|
||||
];
|
||||
routes = [
|
||||
{
|
||||
address = "172.31.1.1";
|
||||
prefixLength = 32;
|
||||
}
|
||||
];
|
||||
};
|
||||
ipv6 = {
|
||||
addresses = [
|
||||
{
|
||||
address = "2a01:4f8:c012:7137::1";
|
||||
prefixLength = 64;
|
||||
}
|
||||
{
|
||||
address = "fe80::9400:2ff:fe87:7fc9";
|
||||
prefixLength = 64;
|
||||
}
|
||||
];
|
||||
routes = [
|
||||
{
|
||||
address = "fe80::1";
|
||||
prefixLength = 128;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.udev.extraRules = ''
|
||||
ATTR{address}=="96:00:02:87:7f:c9", NAME="eth0"
|
||||
|
||||
'';
|
||||
};
|
||||
}
|
||||
32
modules/hardware/vinzenz-lpt.nix
Normal file
32
modules/hardware/vinzenz-lpt.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{...}: {
|
||||
config = {
|
||||
my.hardware.common-desktop.enable = true;
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci"];
|
||||
initrd.kernelModules = [];
|
||||
kernelModules = ["kvm-intel"];
|
||||
extraModulePackages = [];
|
||||
loader.efi.efiSysMountPoint = "/boot/efi";
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/34cb86c4-8823-4785-9672-92ef0bcd5eaf";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@"];
|
||||
};
|
||||
|
||||
"/boot/efi" = {
|
||||
device = "/dev/disk/by-uuid/2381-1CD2";
|
||||
fsType = "vfat";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{device = "/dev/disk/by-uuid/f5932f70-60e4-4abe-b23d-2cab3c095c7d";}
|
||||
];
|
||||
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
};
|
||||
}
|
||||
55
modules/hardware/vinzenz-pc2.nix
Normal file
55
modules/hardware/vinzenz-pc2.nix
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{...}: {
|
||||
config = {
|
||||
my.hardware.common-desktop.enable = true;
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "sd_mod"]; # "usb_storage"
|
||||
initrd.kernelModules = [];
|
||||
kernelModules = ["kvm-amd"];
|
||||
extraModulePackages = [];
|
||||
loader.efi.efiSysMountPoint = "/boot";
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@"];
|
||||
};
|
||||
|
||||
"/home" = {
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@home"];
|
||||
};
|
||||
|
||||
"/games" = {
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@games"];
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/AF67-8F16";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
"/mnt/nixos_btrfs_root" = {
|
||||
# subvolume with id 5 is always the root volume
|
||||
# this is convenient for managing the flat subvolume hierarchy
|
||||
device = "/dev/disk/by-uuid/0e9c983a-e733-447e-8181-f41d6670c4b8";
|
||||
fsType = "btrfs";
|
||||
options = ["subvolid=5"];
|
||||
};
|
||||
|
||||
"/mnt/ssd2" = {
|
||||
device = "/dev/disk/by-uuid/6b2a647d-c68e-4c07-85bf-c9bfc5db7e8a";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [];
|
||||
|
||||
hardware.cpu.amd.updateMicrocode = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.my.home;
|
||||
in {
|
||||
imports = [
|
||||
./vinzenz.nix
|
||||
./ronja.nix
|
||||
# enable home manager
|
||||
<home-manager/nixos>
|
||||
];
|
||||
|
||||
options.my.home = {
|
||||
enable = lib.mkEnableOption "my home management";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.useGlobalPkgs = true;
|
||||
};
|
||||
}
|
||||
52
modules/server/default.nix
Normal file
52
modules/server/default.nix
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.my.server;
|
||||
in {
|
||||
imports = [
|
||||
../_common
|
||||
];
|
||||
|
||||
options.my.server = {
|
||||
enable = lib.mkEnableOption "server role";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services = {
|
||||
# Enable the OpenSSH daemon.
|
||||
openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
# PermitRootLogin = "no"; # this is managed through authorized keys
|
||||
PasswordAuthentication = false;
|
||||
KbdInteractiveAuthentication = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs = {
|
||||
git.enable = true;
|
||||
zsh.enable = true;
|
||||
};
|
||||
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
# ssh
|
||||
from = 22;
|
||||
to = 22;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
ncdu
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,12 +1,17 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./modules
|
||||
(import ./hardware "vinzenz-lpt")
|
||||
./modules/desktop
|
||||
(import ./modules/hardware "vinzenz-lpt")
|
||||
];
|
||||
|
||||
config = {
|
||||
my.gnome.enable = true;
|
||||
my.home.vinzenz.enable = true;
|
||||
my = {
|
||||
desktop = {
|
||||
enable = true;
|
||||
gnome.enable = true;
|
||||
vinzenz.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.flatpak.enable = true;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,14 +1,17 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./modules
|
||||
(import ./hardware "vinzenz-pc2")
|
||||
(import ./modules/hardware "vinzenz-pc2")
|
||||
];
|
||||
|
||||
config = {
|
||||
my.kde.enable = true;
|
||||
my.home = {
|
||||
vinzenz.enable = true;
|
||||
ronja.enable = true;
|
||||
my = {
|
||||
desktop = {
|
||||
enable = true;
|
||||
kde.enable = true;
|
||||
vinzenz.enable = true;
|
||||
ronja.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
users.groups."games" = {
|
||||
|
|
|
|||
Loading…
Reference in a new issue