Inital Server Config
This commit is contained in:
commit
e4dcbc1ee2
6 changed files with 408 additions and 0 deletions
45
flake.nix
Normal file
45
flake.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
description = "jopejoe1 NixOS configuration";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs";
|
||||||
|
|
||||||
|
# Outputs
|
||||||
|
nixos-generators = {
|
||||||
|
url = "github:nix-community/nixos-generators";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Modules
|
||||||
|
disko = {
|
||||||
|
url = "github:nix-community/disko";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||||
|
srvos = {
|
||||||
|
url = "github:nix-community/srvos";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
snm = {
|
||||||
|
url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Utility
|
||||||
|
nixos-anywhere = {
|
||||||
|
url = "github:nix-community/nixos-anywhere";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.disko.follows = "disko";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
inputs@{ self, nixpkgs, ... }:
|
||||||
|
{
|
||||||
|
nixosConfigurations = import ./systems.nix { inherit self inputs nixpkgs; };
|
||||||
|
};
|
||||||
|
}
|
116
systems.nix
Normal file
116
systems.nix
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
inputs,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
mkSystem =
|
||||||
|
systemConfig: name:
|
||||||
|
nixpkgs.lib.nixosSystem rec {
|
||||||
|
system =
|
||||||
|
builtins.replaceStrings
|
||||||
|
[
|
||||||
|
"-unknown-"
|
||||||
|
"-gnu"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"-"
|
||||||
|
""
|
||||||
|
]
|
||||||
|
systemConfig;
|
||||||
|
specialArgs = inputs;
|
||||||
|
modules = [
|
||||||
|
./systems/${name}
|
||||||
|
self.outputs.nixosModules.default
|
||||||
|
{
|
||||||
|
system.stateVersion = "24.05";
|
||||||
|
nixpkgs.hostPlatform = {
|
||||||
|
system = system;
|
||||||
|
config = systemConfig;
|
||||||
|
};
|
||||||
|
networking.hostName = name;
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
substituters = lib.mkForce [
|
||||||
|
"https://cache.nixos.org"
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = lib.mkForce [
|
||||||
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
];
|
||||||
|
trusted-users = [ "root" ];
|
||||||
|
sandbox = true;
|
||||||
|
require-sigs = true;
|
||||||
|
max-jobs = "auto";
|
||||||
|
auto-optimise-store = true;
|
||||||
|
allowed-users = [ "*" ];
|
||||||
|
experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
warn-dirty = true;
|
||||||
|
use-xdg-base-directories = true;
|
||||||
|
keep-going = true;
|
||||||
|
builders-use-substitutes = true;
|
||||||
|
};
|
||||||
|
distributedBuilds = true;
|
||||||
|
package = pkgs.nixVersions.unstable;
|
||||||
|
registry = lib.mkForce (
|
||||||
|
(lib.mapAttrs (_: flake: { inherit flake; })) (
|
||||||
|
(lib.filterAttrs (_: lib.isType "flake")) self.inputs
|
||||||
|
)
|
||||||
|
// {
|
||||||
|
self.flake = self;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
nixPath = lib.mkForce [ "/etc/nix/path" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
nvidia.acceptLicense = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc = lib.mapAttrs' (name: value: {
|
||||||
|
name = "nix/path/${name}";
|
||||||
|
value.source = value.flake;
|
||||||
|
}) config.nix.registry;
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
backupFileExtension = "backup";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.nix-daemon.serviceConfig.LimitNOFILE = lib.mkForce 1048576000;
|
||||||
|
|
||||||
|
networking.hosts = {
|
||||||
|
"192.168.191.46" = [ "zap" ];
|
||||||
|
"192.168.191.142" = [ "kuraokami" ];
|
||||||
|
"2a01:4f8:1c1e:7f93::1" = [ "bloomshine.de" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
hardware.bluetooth.powerOnBoot = true;
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
banner = "Hackers are in Your System!!!\n";
|
||||||
|
settings = {
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
PermitRootLogin = "prohibit-password";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
sukuna-biko-na = mkSystem "aarch64-unknown-linux-gnu" "sukuna-biko-na";
|
||||||
|
raspberry4 = mkSystem "aarch64-unknown-linux-gnu" "raspberry4";
|
||||||
|
}
|
54
systems/raspberry4/default.nix
Normal file
54
systems/raspberry4/default.nix
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
modulesPath,
|
||||||
|
lib,
|
||||||
|
nixos-hardware,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
nixos-hardware.nixosModules.raspberry-pi-4
|
||||||
|
];
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = [ "xhci_pci" ];
|
||||||
|
};
|
||||||
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.supportedFilesystems = lib.mkForce [
|
||||||
|
"btrfs"
|
||||||
|
"cifs"
|
||||||
|
"f2fs"
|
||||||
|
"jfs"
|
||||||
|
"ntfs"
|
||||||
|
"reiserfs"
|
||||||
|
"vfat"
|
||||||
|
"xfs"
|
||||||
|
"bchachefs"
|
||||||
|
];
|
||||||
|
|
||||||
|
#hardware.raspberry-pi."4".fkms-3d.enable = true;
|
||||||
|
|
||||||
|
jopejoe1 = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
local.enable = true;
|
||||||
|
nix.enable = true;
|
||||||
|
user = {
|
||||||
|
jopejoe1.enable = true;
|
||||||
|
root.enable = true;
|
||||||
|
};
|
||||||
|
ssh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
useDHCP = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh.settings.PermitRootLogin = lib.mkForce "yes";
|
||||||
|
|
||||||
|
powerManagement.cpuFreqGovernor = "ondemand";
|
||||||
|
}
|
49
systems/sukuna-biko-na/default.nix
Normal file
49
systems/sukuna-biko-na/default.nix
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
modulesPath,
|
||||||
|
lib,
|
||||||
|
nixos-hardware,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
nixos-hardware.nixosModules.raspberry-pi-4
|
||||||
|
];
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = [ "xhci_pci" ];
|
||||||
|
};
|
||||||
|
loader = {
|
||||||
|
generic-extlinux-compatible.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.raspberry-pi."4".fkms-3d.enable = true;
|
||||||
|
|
||||||
|
jopejoe1 = {
|
||||||
|
audio.enable = true;
|
||||||
|
bluetooth.enable = true;
|
||||||
|
local.enable = true;
|
||||||
|
nix.enable = true;
|
||||||
|
kodi.enable = true;
|
||||||
|
plasma.enable = true;
|
||||||
|
user = {
|
||||||
|
jopejoe1.enable = true;
|
||||||
|
root.enable = true;
|
||||||
|
};
|
||||||
|
ssh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
useDHCP = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
|
||||||
|
powerManagement.cpuFreqGovernor = "ondemand";
|
||||||
|
}
|
72
users/jopejoe1/default.nix
Normal file
72
users/jopejoe1/default.nix
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
users.users.jopejoe1 = {
|
||||||
|
hashedPassword = "$2b$05$Uk84TY/RHlH8DIigUlFYjeorjTlCMEY9wN2pAcw5BLaPoc7dKiSsC";
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB8oyMpS2hK3gQXyHIIVS6oilgMpemLmfhKKJ6RBMwUh johannes@joens.email"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
home-manager.users.jopejoe1 = {
|
||||||
|
home = {
|
||||||
|
username = config.users.users.jopejoe1.name;
|
||||||
|
homeDirectory = config.users.users.jopejoe1.home;
|
||||||
|
stateVersion = config.system.stateVersion;
|
||||||
|
sessionVariables = {
|
||||||
|
XCOMPOSECACHE = "${config.xdg.cacheHome}/X11/xcompos";
|
||||||
|
XAUTHORITY = "$XDG_RUNTIME_DIR/Xauthority";
|
||||||
|
ANDROID_HOME = "${config.xdg.dataHome}/android";
|
||||||
|
CUDA_CACHE_PATH = "${config.xdg.cacheHome}/nv";
|
||||||
|
GRADLE_USER_HOME = "${config.xdg.dataHome}/gradle";
|
||||||
|
KODI_DATA = "${config.xdg.dataHome}/kodi";
|
||||||
|
_JAVA_OPTIONS = "-Djava.util.prefs.userRoot=${config.xdg.configHome}/java";
|
||||||
|
WINEPREFIX = "${config.xdg.dataHome}/wine";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
lazygit.enable = true;
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.git;
|
||||||
|
extraConfig = {
|
||||||
|
core = {
|
||||||
|
whitespace = [
|
||||||
|
"blank-at-eol"
|
||||||
|
"blank-at-eof"
|
||||||
|
"space-before-tab"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
gpg = {
|
||||||
|
enable = true;
|
||||||
|
homedir = "${config.xdg.dataHome}/gnupg";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xdg = {
|
||||||
|
enable = true;
|
||||||
|
mime.enable = true;
|
||||||
|
cacheHome = "${config.home.homeDirectory}/.cache";
|
||||||
|
configHome = "${config.home.homeDirectory}/.config";
|
||||||
|
dataHome = "${config.home.homeDirectory}/.local/share";
|
||||||
|
stateHome = "${config.home.homeDirectory}/.local/state";
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
desktop = "${config.home.homeDirectory}/Desktop";
|
||||||
|
documents = "${config.home.homeDirectory}/Documents";
|
||||||
|
download = "${config.home.homeDirectory}/Downloads";
|
||||||
|
music = "${config.home.homeDirectory}/Music";
|
||||||
|
pictures = "${config.home.homeDirectory}/Pictures";
|
||||||
|
publicShare = "${config.home.homeDirectory}/Public";
|
||||||
|
templates = "${config.home.homeDirectory}/Templates";
|
||||||
|
videos = "${config.home.homeDirectory}/Videos";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
72
users/root/default.nix
Normal file
72
users/root/default.nix
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
users.users.root = {
|
||||||
|
hashedPassword = "$2b$05$Uk84TY/RHlH8DIigUlFYjeorjTlCMEY9wN2pAcw5BLaPoc7dKiSsC";
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB8oyMpS2hK3gQXyHIIVS6oilgMpemLmfhKKJ6RBMwUh johannes@joens.email"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
home-manager.users.root = {
|
||||||
|
home = {
|
||||||
|
username = config.users.users.root.name;
|
||||||
|
homeDirectory = config.users.users.root.home;
|
||||||
|
stateVersion = config.system.stateVersion;
|
||||||
|
sessionVariables = {
|
||||||
|
XCOMPOSECACHE = "${config.xdg.cacheHome}/X11/xcompos";
|
||||||
|
XAUTHORITY = "$XDG_RUNTIME_DIR/Xauthority";
|
||||||
|
ANDROID_HOME = "${config.xdg.dataHome}/android";
|
||||||
|
CUDA_CACHE_PATH = "${config.xdg.cacheHome}/nv";
|
||||||
|
GRADLE_USER_HOME = "${config.xdg.dataHome}/gradle";
|
||||||
|
KODI_DATA = "${config.xdg.dataHome}/kodi";
|
||||||
|
_JAVA_OPTIONS = "-Djava.util.prefs.userRoot=${config.xdg.configHome}/java";
|
||||||
|
WINEPREFIX = "${config.xdg.dataHome}/wine";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
lazygit.enable = true;
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.git;
|
||||||
|
extraConfig = {
|
||||||
|
core = {
|
||||||
|
whitespace = [
|
||||||
|
"blank-at-eol"
|
||||||
|
"blank-at-eof"
|
||||||
|
"space-before-tab"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
gpg = {
|
||||||
|
enable = true;
|
||||||
|
homedir = "${config.xdg.dataHome}/gnupg";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xdg = {
|
||||||
|
enable = true;
|
||||||
|
mime.enable = true;
|
||||||
|
cacheHome = "${config.home.homeDirectory}/.cache";
|
||||||
|
configHome = "${config.home.homeDirectory}/.config";
|
||||||
|
dataHome = "${config.home.homeDirectory}/.local/share";
|
||||||
|
stateHome = "${config.home.homeDirectory}/.local/state";
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
desktop = "${config.home.homeDirectory}/Desktop";
|
||||||
|
documents = "${config.home.homeDirectory}/Documents";
|
||||||
|
download = "${config.home.homeDirectory}/Downloads";
|
||||||
|
music = "${config.home.homeDirectory}/Music";
|
||||||
|
pictures = "${config.home.homeDirectory}/Pictures";
|
||||||
|
publicShare = "${config.home.homeDirectory}/Public";
|
||||||
|
templates = "${config.home.homeDirectory}/Templates";
|
||||||
|
videos = "${config.home.homeDirectory}/Videos";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue