added shared server config file and modules
This commit is contained in:
parent
2f9f07b3e0
commit
d1facb3be7
18
flake.nix
18
flake.nix
|
@ -21,12 +21,20 @@
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
nixServer = nixpkgs.lib.nixosSystem {
|
luci = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = { inherit inputs; };
|
specialArgs = {
|
||||||
|
inherit inputs outputs timeZone system;
|
||||||
|
};
|
||||||
modules = [
|
modules = [
|
||||||
# nixpkgs.overlays = [ nur.overlay ];
|
inputs.home-manager.nixosModules.home-manager {
|
||||||
./nixos/server_configuration.nix
|
home-manager.useGlobalPkgs = true;
|
||||||
inputs.home-manager.nixosModules.default
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.users.luci = import ./luci/modules/home-manager/home.nix;
|
||||||
|
home-manager.extraSpecialArgs = {
|
||||||
|
inherit inputs outputs;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
./luci/default.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
nate = nixpkgs.lib.nixosSystem {
|
nate = nixpkgs.lib.nixosSystem {
|
||||||
|
|
31
luci/default.nix
Normal file
31
luci/default.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ ... }:
|
||||||
|
let
|
||||||
|
userName = "luci";
|
||||||
|
email = "luci@fosscat.com";
|
||||||
|
hostName = "luci";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./nixos/hardware-configuration.nix
|
||||||
|
../shared/nix-gc.nix
|
||||||
|
../shared/server-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
srvConfig = {
|
||||||
|
userName = userName;
|
||||||
|
hostName = hostName;
|
||||||
|
hostId = "09e1d908";
|
||||||
|
email = email;
|
||||||
|
sshEnable = true;
|
||||||
|
nfsEnable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# deskCfg = {
|
||||||
|
# userName = userName;
|
||||||
|
# hostName = hostName;
|
||||||
|
# de = desktop;
|
||||||
|
# installGaming = gaming;
|
||||||
|
# };
|
||||||
|
|
||||||
|
nixGc.enable = true;
|
||||||
|
}
|
0
luci/modules/home-manager/home.nix
Normal file
0
luci/modules/home-manager/home.nix
Normal file
|
@ -38,6 +38,12 @@
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Bind mount for nfs export
|
||||||
|
fileSystems."/nfs_export" = {
|
||||||
|
device = "zdata/zdata/nfs";
|
||||||
|
options = [ "bind" ];
|
||||||
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
@ -36,7 +36,8 @@
|
||||||
#
|
#
|
||||||
dbeaver
|
dbeaver
|
||||||
cargo
|
cargo
|
||||||
kakoune
|
helix
|
||||||
|
# kakoune
|
||||||
# flutter316
|
# flutter316
|
||||||
docker
|
docker
|
||||||
docker-compose
|
docker-compose
|
||||||
|
@ -45,8 +46,7 @@
|
||||||
nodejs_21
|
nodejs_21
|
||||||
zig
|
zig
|
||||||
### LSP's
|
### LSP's
|
||||||
kak-lsp
|
nil # Nix LSP
|
||||||
rnix-lsp # Nix LSP
|
|
||||||
openscad-lsp
|
openscad-lsp
|
||||||
nodePackages.typescript-language-server
|
nodePackages.typescript-language-server
|
||||||
vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
|
vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
|
||||||
|
@ -146,7 +146,7 @@
|
||||||
# /etc/profiles/per-user/nate/etc/profile.d/hm-session-vars.sh
|
# /etc/profiles/per-user/nate/etc/profile.d/hm-session-vars.sh
|
||||||
#
|
#
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
EDITOR = "kak";
|
EDITOR = "hx";
|
||||||
XDG_CURRENT_DESKTOP="sway";
|
XDG_CURRENT_DESKTOP="sway";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -190,13 +190,14 @@
|
||||||
`
|
`
|
||||||
cd $DIR
|
cd $DIR
|
||||||
}
|
}
|
||||||
alias p="fzf_projects source/"
|
alias p="fzf_projects ~/source/"
|
||||||
|
|
||||||
alias ls="lsd"
|
alias ls="lsd"
|
||||||
alias l="lsd --almost-all --long"
|
alias l="lsd --almost-all --long"
|
||||||
alias llm="lsd --timesort --long"
|
alias llm="lsd --timesort --long"
|
||||||
alias lS="lsd --oneline --classic"
|
alias lS="lsd --oneline --classic"
|
||||||
alias lt="lsd --tree --depth=2"
|
alias lt="lsd --tree --depth=2"
|
||||||
|
alias grep="rg"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,12 @@
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems."/home/nate/nfs" = {
|
||||||
|
device = "192.168.1.169:/nfs_export";
|
||||||
|
fsType = "nfs";
|
||||||
|
options = [ "nfsvers=4.2" "x-systemd.automount" "noauto" "x-systemd.idle-timeout=600" ]; # lazy mounting and auto disconnect after 600 seconds
|
||||||
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
|
80
shared/modules/apps/firefox/firefox.nix
Normal file
80
shared/modules/apps/firefox/firefox.nix
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
{lib, config, pkgs, inputs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.firefoxApp;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# imports = [
|
||||||
|
# inputs.nur.hmModules.nur
|
||||||
|
# ];
|
||||||
|
|
||||||
|
options.firefoxApp = {
|
||||||
|
enable = lib.mkEnableOption "enable firefox browser";
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.firefox = {
|
||||||
|
# Add pipewire support
|
||||||
|
package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {});
|
||||||
|
enable = true;
|
||||||
|
profiles = {
|
||||||
|
default = {
|
||||||
|
id = 0;
|
||||||
|
name = "default";
|
||||||
|
isDefault = true;
|
||||||
|
extensions = with pkgs; [
|
||||||
|
nur.repos.rycee.firefox-addons.darkreader
|
||||||
|
nur.repos.rycee.firefox-addons.keepassxc-browser
|
||||||
|
nur.repos.crazazy.firefox-addons.ublock-origin
|
||||||
|
];
|
||||||
|
search = {
|
||||||
|
# Replace default firefox search engine config with this one
|
||||||
|
force = true;
|
||||||
|
default = "Startpage";
|
||||||
|
engines = {
|
||||||
|
"Startpage" = {
|
||||||
|
urls = [{
|
||||||
|
template = "https://www.startpage.com/sp/search?query={searchTerms}";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
"Nix Packages" = {
|
||||||
|
urls = [{
|
||||||
|
template = "https://search.nixos.org/packages";
|
||||||
|
params = [
|
||||||
|
{ name = "type"; value = "packages"; }
|
||||||
|
{ name = "query"; value = "{searchTerms}"; }
|
||||||
|
];
|
||||||
|
}];
|
||||||
|
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
|
definedAliases = [ "@np" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
"browser.startup.blankWindow" = true;
|
||||||
|
"browser.startup.homepage" = "https://www.startpage.com/do/mypage.pl?prfe=11898a1adf7b7dfb587580692f358773a11ca25e993b8e077476641cec033319e15f2449c345f5be919fd0a082015c3e4ed23143bd4337512466c04c2999831a54abca2eaeb42963c63ff064";
|
||||||
|
"browser.newtabpage.enabled" = false;
|
||||||
|
"browser.search.region" = "US";
|
||||||
|
"browser.search.isUS" = true;
|
||||||
|
"distribution.searchplugins.defaultLocale" = "en-US";
|
||||||
|
"general.useragent.locale" = "en-US";
|
||||||
|
"extensions.activeThemeID" = "{831b8843-7251-4306-9521-e688f18b4aeb}";
|
||||||
|
"privacy.trackingprotection.enable" = true;
|
||||||
|
"privacy.trackingprotection.emailtracking.enable" = true;
|
||||||
|
"privacy.trackingprotection.socialtracking.enable" = true;
|
||||||
|
"privacy.clearOnShutdown.cookies" = true;
|
||||||
|
"browser.safebrowsing.passwords.enabled" = false;
|
||||||
|
"browser.migrate.interactions.passwords" = false;
|
||||||
|
"pref.privacy.disable_button.view_passwords" = false;
|
||||||
|
"signon.rememberSignon" = false;
|
||||||
|
"extensions.formautofill.creditCards.enabled" = false;
|
||||||
|
"extensions.formautofill.addresses.enabled" = false;
|
||||||
|
"browser.toolbars.bookmarks.visibility" = "always";
|
||||||
|
# "browser.newtabpage.pinned" = [{
|
||||||
|
# title = "NixOS";
|
||||||
|
# url = "https://nixos.org";
|
||||||
|
# }];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
53
shared/modules/user/main_user.nix
Normal file
53
shared/modules/user/main_user.nix
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.main_user;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.main_user = {
|
||||||
|
enable = lib.mkEnableOption "enable user module";
|
||||||
|
|
||||||
|
isDesktopUser = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
description = "Add additional user groups for desktop users";
|
||||||
|
};
|
||||||
|
|
||||||
|
userName = lib.mkOption {
|
||||||
|
default = "mainuser";
|
||||||
|
description = "username";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
users.users.${cfg.userName} = lib.mkMerge [
|
||||||
|
{
|
||||||
|
isNormalUser = true;
|
||||||
|
initialPassword = "password";
|
||||||
|
|
||||||
|
description = "main user";
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
}
|
||||||
|
|
||||||
|
(lib.mkIf (!cfg.isDesktopUser) {
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"networkmanager"
|
||||||
|
cfg.userName
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(lib.mkIf cfg.isDesktopUser {
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"networkmanager"
|
||||||
|
"corectrl"
|
||||||
|
cfg.userName
|
||||||
|
"video"
|
||||||
|
"audio"
|
||||||
|
# For android
|
||||||
|
"adbusers"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
28
shared/nix-gc.nix
Normal file
28
shared/nix-gc.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{lib, pkgs, config, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixGc;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nixGc = {
|
||||||
|
enable = lib.mkEnableOption "enable nix gc default settings";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# Limit the number of generations to keep
|
||||||
|
boot.loader.systemd-boot.configurationLimit = 5;
|
||||||
|
|
||||||
|
# Perform garbage collection weekly to maintain low disk usage
|
||||||
|
nix.gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 1w";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Optimize storage
|
||||||
|
# You can also manually optimize the store via:
|
||||||
|
# nix-store --optimise
|
||||||
|
# Refer to the following link for more details:
|
||||||
|
# https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store
|
||||||
|
nix.settings.auto-optimise-store = true;
|
||||||
|
};
|
||||||
|
}
|
77
shared/server-configuration.nix
Normal file
77
shared/server-configuration.nix
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
{ config, lib, pkgs, timeZone, ... }:
|
||||||
|
let
|
||||||
|
srvConfig = config.serverConfig;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.srvConfig = {
|
||||||
|
userName = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Main username for system";
|
||||||
|
};
|
||||||
|
hostName = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Hostname for system";
|
||||||
|
};
|
||||||
|
hostId = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Host ID";
|
||||||
|
};
|
||||||
|
email = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Email for server box";
|
||||||
|
};
|
||||||
|
sshEnable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Whether to enable ssh server";
|
||||||
|
};
|
||||||
|
nfsEnable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./modules/user/main_user.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable flakes feature
|
||||||
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command" "flakes"
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostId = srvConfig.hostId;
|
||||||
|
hostName = srvConfig.hostName; # Define your hostname.
|
||||||
|
# Pick only one of the below networking options.
|
||||||
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
|
networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = timeZone;
|
||||||
|
|
||||||
|
main_user = {
|
||||||
|
enable = true;
|
||||||
|
userName = srvConfig.userName;
|
||||||
|
isDesktopUser = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh = lib.mkIf srvConfig.sshEnable {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nfs.server = lib.mkIf srvConfig.nfsEnable {
|
||||||
|
enable = true;
|
||||||
|
exports = ''
|
||||||
|
/nfs_export 1192.168.1.149(rw,fsid=0,no_subtree_check)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 2049 ];
|
||||||
|
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
|
||||||
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user