nom-nom-nix-gc/machines/thinkpad.nix

228 lines
5.6 KiB
Nix
Raw Normal View History

2018-05-21 19:48:20 +02:00
{ config, lib, pkgs, ... }:
let
myusers = import ../users.nix { inherit pkgs; };
mypkgs = import ../packages.nix { inherit pkgs; };
i3 = import ../modules/software-config/i3.nix { inherit pkgs; };
vimInit = import ../modules/software-config/neovim.nix { inherit pkgs; };
2021-05-13 10:21:03 +02:00
sources = import ../nix/sources.nix { };
keys = import ../keys.nix {};
2020-06-23 14:11:59 +02:00
nixos-hardware = (import ../nix/sources.nix { }).nixos-hardware;
in {
2018-04-14 17:59:44 +02:00
imports =
2019-02-10 19:31:34 +01:00
[
../modules/core.nix
../modules/core-graphical-computers.nix
2018-04-14 17:59:44 +02:00
./thinkpad-hardware-configuration.nix
2020-06-23 14:11:59 +02:00
"${nixos-hardware}/lenovo/thinkpad/x250"
2018-04-14 17:59:44 +02:00
];
2021-02-01 20:26:53 +01:00
nixpkgs = {
overlays = [ (import ../custom-pkgs/default.nix) ];
config = {
allowUnfree = true;
packageOverrides = super: {
mumble_git = super.mumble_git.override {
pulseSupport = true;
libpulseaudio = pkgs.libpulseaudio;
};
};
};
};
2018-04-14 17:59:44 +02:00
# Use the GRUB 2 boot loader.
2018-05-21 19:48:20 +02:00
boot = {
loader.grub = {
enable = true;
enableCryptodisk = true;
version = 2;
device = "/dev/sda";
};
2018-04-14 17:59:44 +02:00
};
2019-08-26 00:36:03 +02:00
services.prometheus = {
2020-10-07 22:07:33 +02:00
enable = false;
2019-08-26 00:36:03 +02:00
scrapeConfigs = [ {
job_name = "prometheus";
scrape_interval = "5s";
static_configs = [{
targets = ["localhost:9090"];
}];
}];
};
2018-04-14 17:59:44 +02:00
2020-10-07 22:07:33 +02:00
services.emacs = {
enable = true;
defaultEditor = true;
package = pkgs.ninjatrappeur-pkgs.configured-emacs;
};
services.printing = {
enable = true;
2021-02-01 20:13:13 +01:00
drivers = [ pkgs.splix pkgs.ninjatrappeur-pkgs.hll2350dw-cups ];
2020-10-07 22:07:33 +02:00
};
2019-08-26 00:36:03 +02:00
# systemd.network = {
# enable = true;
# networks = {
# "98-nope" = {
# matchConfig = { Name = "enp* wlp*"; };
# linkConfig.Unmanaged = true;
# };
# "80-wlan" = {
# enable = true;
# matchConfig = { Name = "wlp3s0"; };
# address = [ "192.168.1.1/24" ];
# dhcpServerConfig = { EmitDNS = true; DNS = [ "80.67.169.12" "80.67.169.40" ]; PoolOffset = 10; EmitRouter = true; };
# networkConfig = { IPForward = "yes"; IPMasquerade = "yes"; DHCPServer = true; };
# };
# };
# };
2021-05-13 10:21:03 +02:00
2023-04-20 10:20:39 +02:00
services.openssh = {
2021-05-13 10:21:03 +02:00
enable = true;
2023-04-20 10:20:39 +02:00
settings = {
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
PermitRootLogin = "no";
};
2021-05-13 10:21:03 +02:00
};
2019-08-26 00:36:03 +02:00
networking = {
hostName = "thinkpad-nix";
firewall = {
allowedUDPPorts = [
# Patchwork discovery
8008
];
allowedTCPPorts = [
# HTTP
8000
# Patchwork
8008
];
};
networkmanager.enable = true;
};
2018-04-14 17:59:44 +02:00
2022-11-08 15:38:31 +01:00
networking.wireguard.interfaces."wg-extended-lan" = {
privateKey = builtins.readFile /home/ninjatrappeur/.vpn/extended-lan.key;
ips = ["192.168.166.2"];
peers = [{
endpoint = "seldon.alternativebit.fr:51822";
publicKey = "ZdeqXN3Q8ZBPCWVW6pFzIBF3iS8zlVMGAj8bcePj3zk=";
allowedIPs = ["192.168.166.1/32" "192.168.11.0/24"];
persistentKeepalive = 25;
}];
};
2018-05-21 19:48:20 +02:00
2019-05-03 21:51:46 +02:00
users = {
extraUsers.ninjatrappeur= {
2018-04-14 17:59:44 +02:00
isNormalUser = true;
home = myusers.ninjatrappeur.home;
extraGroups = myusers.ninjatrappeur.extraGroups;
shell = myusers.ninjatrappeur.shell;
2021-05-13 10:21:03 +02:00
openssh.authorizedKeys.keys = pkgs.lib.attrsets.attrValues keys.ninjatrappeur;
2019-05-03 21:51:46 +02:00
};
extraGroups.vboxusers.members = [ "user-with-access-to-virtualbox" ];
2018-05-21 19:48:20 +02:00
};
2018-04-14 17:59:44 +02:00
2018-05-23 22:01:45 +02:00
services.syncthing = {
user = myusers.ninjatrappeur.name;
dataDir = "${myusers.ninjatrappeur.home}/.config/syncthing";
2018-05-23 22:01:45 +02:00
};
2022-10-07 07:29:52 +02:00
programs.bcc.enable = true;
2021-02-01 20:26:53 +01:00
home-manager.users.ninjatrappeur = {
2022-10-07 07:33:24 +02:00
home.stateVersion = "18.09";
2023-04-20 10:20:39 +02:00
services.mako = {
2018-04-14 22:42:26 +02:00
enable = true;
2021-02-01 20:26:53 +01:00
anchor = "top-center";
2018-04-14 22:42:26 +02:00
};
2021-02-01 20:26:53 +01:00
home.file = {
2021-08-18 21:28:12 +02:00
".notmuch-config".source = ../raw-conf-files/email/notmuch-config;
".config/msmtp/config".source = ../raw-conf-files/email/msmtp;
2018-04-14 17:59:44 +02:00
};
};
2019-05-03 21:51:46 +02:00
2022-03-18 22:48:03 +01:00
services.xserver= {
xkbOptions = "caps:swapescape";
2022-10-07 07:29:52 +02:00
displayManager.defaultSession = "xfce+i3";
2022-03-18 22:48:03 +01:00
libinput = {
enable = true;
touchpad = {
disableWhileTyping = true;
scrollMethod = "twofinger";
tapping = true;
};
};
2021-02-01 20:26:53 +01:00
2022-04-09 09:38:32 +02:00
desktopManager = {
xterm.enable = false;
2022-11-08 15:38:31 +01:00
gnome.enable = true;
2022-04-09 09:38:32 +02:00
xfce = {
enable = true;
noDesktop = true;
enableXfwm = false;
};
};
2022-03-18 22:48:03 +01:00
windowManager.i3 = {
enable = true;
configFile = builtins.toPath (pkgs.writeText "thinkpad-i3-config" i3.thinkpad-config);
};
};
2021-02-01 20:26:53 +01:00
2019-05-03 21:51:46 +02:00
virtualisation = {
2020-10-07 22:07:33 +02:00
#virtualbox.host.enable = true;
#docker.enable = true;
2019-05-03 21:51:46 +02:00
};
nix = {
2022-03-01 16:50:54 +01:00
settings = {
trusted-users = [ "root" "${myusers.ninjatrappeur.name}" ];
sandbox = true;
};
extraOptions = ''
builders-use-substitutes = true
2022-03-18 22:48:03 +01:00
experimental-features = nix-command flakes
'';
nixPath = [
2021-05-13 10:21:03 +02:00
"nixpkgs=${sources.nixpkgs}"
"nixos-config=/etc/nixos/configuration.nix"
];
};
2018-04-14 17:59:44 +02:00
2019-02-10 19:31:34 +01:00
environment.systemPackages =
2022-03-25 16:01:08 +01:00
mypkgs.common ++ mypkgs.dev ++ mypkgs.media ++ mypkgs.graphic-apps
++ mypkgs.laptop ++ [
pkgs.brightnessctl
2022-10-07 07:33:24 +02:00
pkgs.gnome.nautilus
pkgs.gnome.eog
pkgs.gnome.gvfs
2022-03-25 16:01:08 +01:00
pkgs.evince
2022-10-07 07:29:52 +02:00
pkgs.languagetool
2022-11-08 15:38:31 +01:00
pkgs.remmina
2023-11-01 17:37:19 +01:00
pkgs.carla
2022-10-07 07:29:52 +02:00
(pkgs.hunspellWithDicts [
pkgs.hunspellDicts.en-gb-ise
pkgs.hunspellDicts.en-gb-ize
pkgs.hunspellDicts.en-us
pkgs.hunspellDicts.fr-any
pkgs.hunspellDicts.fr-moderne
])
2022-03-25 16:01:08 +01:00
];
2019-02-10 18:48:00 +01:00
system = {
stateVersion = "18.09";
2019-02-10 19:31:34 +01:00
userActivationScripts = {
vimConfigSetup = {
2019-02-10 18:48:00 +01:00
text = ''
2019-02-10 19:31:34 +01:00
ln -fs "${vimInit.neovim-config}" "${myusers.ninjatrappeur.home}/.config/nvim/init.vim"
2019-02-10 18:48:00 +01:00
'';
2019-02-10 19:31:34 +01:00
deps = [];
};
2019-02-10 18:48:00 +01:00
};
};
2018-04-14 17:59:44 +02:00
}