flake/configs/common.nix

223 lines
4.7 KiB
Nix
Raw Permalink Normal View History

2023-11-14 18:29:14 +01:00
{
2023-11-15 01:00:35 +01:00
lib,
2023-11-14 18:29:14 +01:00
pkgs,
2024-01-10 17:48:50 +01:00
config,
2024-07-29 10:58:43 +02:00
_utils,
2024-08-29 01:10:47 +02:00
camasca,
2023-11-14 18:29:14 +01:00
nixpkgs,
2024-01-18 17:55:21 +01:00
agenix,
2024-06-26 19:30:41 +02:00
home-manager,
2023-11-14 18:29:14 +01:00
...
2024-02-14 15:59:20 +01:00
}: let
username = "leo";
2024-09-09 18:21:42 +02:00
stateVersion = "24.11";
2024-07-29 10:58:43 +02:00
rootPassword = _utils.setupSingleSecret config "rootPassword" {};
2024-07-29 23:47:05 +02:00
secrets = _utils.setupSharedSecrets config {
secrets = ["userPassword" "tailscaleKey"];
};
2024-02-14 15:59:20 +01:00
in {
imports = [
2024-06-26 19:30:41 +02:00
agenix.nixosModules.default
home-manager.nixosModules.home-manager
2024-02-14 15:59:20 +01:00
(lib.mkAliasOptionModule ["hm"] ["home-manager" "users" username])
2024-07-29 10:58:43 +02:00
rootPassword.generate
2024-07-29 23:47:05 +02:00
secrets.generate
2024-07-29 10:58:43 +02:00
2024-02-14 15:59:20 +01:00
../programs/fish.nix
../programs/git.nix
2024-06-06 11:51:03 +02:00
../programs/rust.nix
2024-02-14 15:59:20 +01:00
../programs/starship
];
age = {
ageBin = lib.getExe pkgs.rage;
identityPaths = ["/etc/age/key"];
};
2024-01-18 15:45:42 +01:00
2024-01-18 15:36:37 +01:00
boot = {
2024-05-26 10:20:02 +02:00
kernelPackages = pkgs.linuxPackages; # use lts
2024-01-18 15:36:37 +01:00
kernelParams = ["quiet" "loglevel=3"];
# faster tcp !!!
kernel.sysctl = {
"net.core.default_qdisc" = "fq";
"net.ipv4.tcp_congestion_control" = "bbr";
};
tmp.cleanOnBoot = true;
2024-01-18 15:36:37 +01:00
};
2024-01-18 15:45:42 +01:00
console.keyMap = "fr";
2023-11-25 16:28:23 +01:00
environment = {
2024-06-12 01:04:41 +02:00
systemPackages = with pkgs; [
2023-11-25 16:28:23 +01:00
neovim
git
curl
2024-02-14 12:06:23 +01:00
wget
2024-04-13 12:47:07 +02:00
htop
2024-05-24 11:26:42 +02:00
ripgrep
2023-11-25 16:28:23 +01:00
];
variables = {
EDITOR = lib.getExe pkgs.neovim;
};
};
2023-11-14 18:29:14 +01:00
2024-07-26 12:58:05 +02:00
hm = {
home = {inherit stateVersion;};
programs.ssh = {
enable = true;
addKeysToAgent = "yes";
forwardAgent = true;
};
services.ssh-agent.enable = true;
};
2024-02-14 15:59:20 +01:00
2024-01-18 15:45:42 +01:00
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
};
2024-01-18 15:36:37 +01:00
i18n.defaultLocale = "en_US.UTF-8";
2024-08-17 18:33:34 +02:00
networking = {
useNetworkd = lib.mkDefault true;
nameservers = ["1.1.1.1" "1.0.0.1"];
2024-02-14 19:04:02 +01:00
};
2024-01-18 15:36:37 +01:00
2024-01-18 15:45:42 +01:00
nix = {
2024-08-17 16:07:41 +02:00
package = pkgs.lix;
2024-09-01 15:36:04 +02:00
channel.enable = false;
2024-05-21 15:05:35 +02:00
2024-01-18 15:45:42 +01:00
gc = {
automatic = true;
dates = "weekly";
options = "-d";
};
2024-01-18 15:36:37 +01:00
2024-08-29 01:10:47 +02:00
registry = {
2024-08-11 10:47:43 +02:00
n.flake = nixpkgs;
2024-08-29 01:10:47 +02:00
nixpkgs.flake = nixpkgs;
u.flake = camasca;
2024-01-18 15:36:37 +01:00
};
2024-01-18 15:45:42 +01:00
2024-09-01 15:36:04 +02:00
# give nix daemon lower priority
daemonCPUSchedPolicy = "batch";
daemonIOSchedClass = "idle";
2024-01-18 15:45:42 +01:00
settings = {
auto-optimise-store = true;
experimental-features = ["nix-command" "flakes"];
2024-07-22 15:22:42 +02:00
trusted-users = ["root" "@wheel"];
2024-09-01 15:36:04 +02:00
connect-timeout = 5; # fail fast if substituters are not available
builders-use-substitutes = true;
log-lines = 25;
min-free = 512 * 1024 * 1024; # if free space drops under min, gc
2024-06-26 19:04:44 +02:00
2024-07-26 23:08:44 +02:00
substituters = [
2024-07-06 23:55:31 +02:00
"https://uku3lig.cachix.org"
"https://ghostty.cachix.org"
];
2024-07-26 23:08:44 +02:00
2024-07-06 23:55:31 +02:00
trusted-public-keys = [
"uku3lig.cachix.org-1:C1/9DNUadh2pueAo+LUkVNUKyIVjF/CREd9RS9E+F2A="
"ghostty.cachix.org-1:QB389yTa6gTyneehvqG58y0WnHjQOqgnA+wBnpWWxns="
];
2024-01-18 15:45:42 +01:00
};
};
nixpkgs = {
config.allowUnfree = true;
overlays = [(import ../exprs/overlay.nix)];
2024-01-10 17:48:50 +01:00
};
2023-11-14 18:29:14 +01:00
programs = {
direnv.enable = true;
command-not-found.enable = false;
nix-index = {
enable = true;
enableFishIntegration = true;
};
};
2024-01-18 15:45:42 +01:00
security = {
rtkit.enable = true;
polkit.enable = true;
sudo = {
execWheelOnly = true;
extraConfig = ''
Defaults lecture = never
'';
};
2024-01-18 15:36:37 +01:00
};
2023-11-22 14:31:25 +01:00
services = {
2024-03-24 14:02:03 +01:00
openssh = {
enable = true;
openFirewall = lib.mkDefault false;
};
2024-02-14 19:04:02 +01:00
resolved = {
2024-08-17 18:33:34 +02:00
enable = true;
2024-02-14 19:04:02 +01:00
dnssec = "allow-downgrade";
dnsovertls = "true";
2024-02-14 19:04:02 +01:00
};
2024-01-10 17:48:50 +01:00
tailscale = {
enable = true;
useRoutingFeatures = "both";
2024-05-24 11:16:28 +02:00
extraUpFlags = ["--ssh" "--stateful-filtering"];
2024-07-29 23:47:05 +02:00
authKeyFile = secrets.get "tailscaleKey";
2024-01-10 17:48:50 +01:00
};
2023-11-22 14:31:25 +01:00
};
system.switch = {
enable = false;
enableNg = true;
};
2024-09-05 11:30:57 +02:00
systemd = {
services.NetworkManager-wait-online.enable = lib.mkForce false;
# NixOS/nixpkgs#267101
tmpfiles.rules = [
"L /usr/lib/locale/locale-archive - - - - /run/current-system/sw/lib/locale/locale-archive"
];
};
2024-01-18 15:45:42 +01:00
time.timeZone = "Europe/Paris";
2023-11-14 18:29:14 +01:00
2024-02-14 15:59:20 +01:00
users.users = {
"${username}" = {
isNormalUser = true;
shell = pkgs.fish;
extraGroups = ["networkmanager" "wheel" "video" "libvirtd"];
2024-07-29 23:47:05 +02:00
hashedPasswordFile = secrets.get "userPassword";
2024-02-14 15:59:20 +01:00
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN+7+KfdOrhcnHayxvOENUeMx8rE4XEIV/AxMHiaNUP8"
];
};
2024-04-13 01:24:03 +02:00
root = {
shell = pkgs.fish;
2024-07-29 10:58:43 +02:00
hashedPasswordFile = rootPassword.path;
2024-04-13 01:24:03 +02:00
};
2024-02-14 15:59:20 +01:00
};
2024-01-18 16:11:18 +01:00
2023-11-14 18:29:14 +01:00
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
2024-02-14 15:59:20 +01:00
system.stateVersion = lib.mkDefault stateVersion; # Did you read the comment?
2023-11-14 18:29:14 +01:00
}