nix #11
|
@ -1,123 +1,9 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
{
|
let
|
||||||
boot.loader.grub.enable = true;
|
recursiveMerge = import ./recursiveMerge.nix;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
getModule = name: import (./modules + "/${name}.nix") { inherit config pkgs; };
|
||||||
|
in
|
||||||
networking.hostName = "nixos";
|
recursiveMerge [
|
||||||
networking.wireless.enable = true; # Enable wireless support via wpa_supplicant
|
(getModule "common")
|
||||||
|
(getModule "x11")
|
||||||
time.timeZone = "Europe/Amsterdam";
|
]
|
||||||
|
|
||||||
# TODO qwerty-fr for console
|
|
||||||
|
|
||||||
# Enable the X11 windowing system
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
# FIXME qwerty-fr for X11
|
|
||||||
|
|
||||||
# Enable CUPS to print documents
|
|
||||||
services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable sound
|
|
||||||
sound.enable = true;
|
|
||||||
hardware.pulseaudio.enable = true;
|
|
||||||
|
|
||||||
services.xserver.displayManager.startx.enable = true;
|
|
||||||
services.xserver.windowManager.i3.enable = true;
|
|
||||||
|
|
||||||
# Enable passwordless sudo
|
|
||||||
security.sudo.extraRules = [
|
|
||||||
{ groups = ["wheel"]; commands = [ { command = "ALL"; options = ["NOPASSWD"]; } ]; }
|
|
||||||
];
|
|
||||||
|
|
||||||
# Users
|
|
||||||
users.users.geoffrey = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
|
||||||
packages = with pkgs; [
|
|
||||||
# dotfiles dependencies
|
|
||||||
coreutils
|
|
||||||
bash
|
|
||||||
gnugrep
|
|
||||||
gnused
|
|
||||||
gnutar
|
|
||||||
openssl
|
|
||||||
git
|
|
||||||
wget
|
|
||||||
curl
|
|
||||||
python3Packages.pip
|
|
||||||
ansible # TODO Reevaluate
|
|
||||||
|
|
||||||
# shell
|
|
||||||
zsh-completions
|
|
||||||
nix-zsh-completions
|
|
||||||
zsh-history-substring-search
|
|
||||||
antigen # TODO Reevaluate
|
|
||||||
powerline-go
|
|
||||||
|
|
||||||
# terminal essentials
|
|
||||||
moreutils
|
|
||||||
man
|
|
||||||
visidata
|
|
||||||
nodePackages.insect
|
|
||||||
translate-shell
|
|
||||||
unzip
|
|
||||||
unrar
|
|
||||||
p7zip
|
|
||||||
|
|
||||||
# remote
|
|
||||||
openssh
|
|
||||||
rsync
|
|
||||||
tigervnc # FIXME Only with display server
|
|
||||||
|
|
||||||
# DEBUG
|
|
||||||
firefox
|
|
||||||
tree
|
|
||||||
lolcat
|
|
||||||
];
|
|
||||||
initialPassword = "cartable"; # DEBUG
|
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPE41gxrO8oZ5n3saapSwZDViOQphm6RzqgsBUyA88pU geoffrey@frogeye.fr"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
neovim
|
|
||||||
wget
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enable compilation cache
|
|
||||||
programs = {
|
|
||||||
ccache.enable = true;
|
|
||||||
# TODO Not enough, see https://nixos.wiki/wiki/CCache.
|
|
||||||
# Might want to see if it's worth using on NixOS
|
|
||||||
gnupg.agent.enable = true;
|
|
||||||
|
|
||||||
# TODO Below should be user config
|
|
||||||
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
autosuggestions.enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
};
|
|
||||||
neovim = {
|
|
||||||
enable = true;
|
|
||||||
defaultEditor = true;
|
|
||||||
vimAlias = true;
|
|
||||||
viAlias = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
# Enable the OpenSSH daemon
|
|
||||||
openssh.enable = true;
|
|
||||||
getty.autologinUser = "geoffrey"; # DEBUG
|
|
||||||
};
|
|
||||||
|
|
||||||
# TEST
|
|
||||||
system.copySystemConfiguration = true;
|
|
||||||
|
|
||||||
# Use defaults from
|
|
||||||
system.stateVersion = "23.05";
|
|
||||||
}
|
|
||||||
|
|
112
config/nix/modules/common.nix
Normal file
112
config/nix/modules/common.nix
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
boot.loader.grub.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking.hostName = "nixos";
|
||||||
|
networking.wireless.enable = true; # Enable wireless support via wpa_supplicant
|
||||||
|
|
||||||
|
time.timeZone = "Europe/Amsterdam";
|
||||||
|
|
||||||
|
# TODO qwerty-fr for console
|
||||||
|
|
||||||
|
# Enable CUPS to print documents
|
||||||
|
services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable passwordless sudo
|
||||||
|
security.sudo.extraRules = [{
|
||||||
|
groups = [ "wheel" ];
|
||||||
|
commands = [{
|
||||||
|
command = "ALL";
|
||||||
|
options = [ "NOPASSWD" ];
|
||||||
|
}];
|
||||||
|
}];
|
||||||
|
|
||||||
|
# Users
|
||||||
|
users.users.geoffrey = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
||||||
|
packages = with pkgs; [
|
||||||
|
# dotfiles dependencies
|
||||||
|
coreutils
|
||||||
|
bash
|
||||||
|
gnugrep
|
||||||
|
gnused
|
||||||
|
gnutar
|
||||||
|
openssl
|
||||||
|
git
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
python3Packages.pip
|
||||||
|
ansible # TODO Reevaluate
|
||||||
|
|
||||||
|
# shell
|
||||||
|
zsh-completions
|
||||||
|
nix-zsh-completions
|
||||||
|
zsh-history-substring-search
|
||||||
|
antigen # TODO Reevaluate
|
||||||
|
powerline-go
|
||||||
|
|
||||||
|
# terminal essentials
|
||||||
|
moreutils
|
||||||
|
man
|
||||||
|
visidata
|
||||||
|
nodePackages.insect
|
||||||
|
translate-shell
|
||||||
|
unzip
|
||||||
|
unrar
|
||||||
|
p7zip
|
||||||
|
|
||||||
|
# remote
|
||||||
|
openssh
|
||||||
|
rsync
|
||||||
|
|
||||||
|
# DEBUG
|
||||||
|
tree
|
||||||
|
lolcat
|
||||||
|
|
||||||
|
];
|
||||||
|
initialPassword = "cartable"; # DEBUG
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPE41gxrO8oZ5n3saapSwZDViOQphm6RzqgsBUyA88pU geoffrey@frogeye.fr"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [ neovim wget ];
|
||||||
|
|
||||||
|
# Enable compilation cache
|
||||||
|
programs = {
|
||||||
|
ccache.enable = true;
|
||||||
|
# TODO Not enough, see https://nixos.wiki/wiki/CCache.
|
||||||
|
# Might want to see if it's worth using on NixOS
|
||||||
|
gnupg.agent.enable = true;
|
||||||
|
|
||||||
|
# TODO Below should be user config
|
||||||
|
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
autosuggestions.enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
};
|
||||||
|
neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
vimAlias = true;
|
||||||
|
viAlias = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
# Enable the OpenSSH daemon
|
||||||
|
openssh.enable = true;
|
||||||
|
getty.autologinUser = "geoffrey"; # DEBUG
|
||||||
|
};
|
||||||
|
|
||||||
|
# TEST
|
||||||
|
system.copySystemConfiguration = true;
|
||||||
|
|
||||||
|
# Use defaults from
|
||||||
|
system.stateVersion = "23.05";
|
||||||
|
|
||||||
|
}
|
22
config/nix/modules/x11.nix
Normal file
22
config/nix/modules/x11.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
# Enable the X11 windowing system
|
||||||
|
services.xserver.enable = true;
|
||||||
|
|
||||||
|
# FIXME qwerty-fr for X11
|
||||||
|
|
||||||
|
# Enable sound
|
||||||
|
sound.enable = true;
|
||||||
|
hardware.pulseaudio.enable = true;
|
||||||
|
|
||||||
|
services.xserver.displayManager.startx.enable = true;
|
||||||
|
services.xserver.windowManager.i3.enable = true;
|
||||||
|
|
||||||
|
users.users.geoffrey. packages = with pkgs; [
|
||||||
|
# remote
|
||||||
|
tigervnc
|
||||||
|
|
||||||
|
# remote
|
||||||
|
firefox
|
||||||
|
];
|
||||||
|
}
|
23
config/nix/recursiveMerge.nix
Normal file
23
config/nix/recursiveMerge.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
let
|
||||||
|
|
||||||
|
pkgs = import <nixpkgs> { };
|
||||||
|
# Somehow, if fed the pkgs from a nix-build, it creates an infinite recursion, hence the search path
|
||||||
|
lib = pkgs.lib;
|
||||||
|
|
||||||
|
recursiveMerge = with lib; attrList:
|
||||||
|
let f = attrPath:
|
||||||
|
zipAttrsWith (n: values:
|
||||||
|
if tail values == [ ]
|
||||||
|
then head values
|
||||||
|
else if all isList values
|
||||||
|
then unique (concatLists values)
|
||||||
|
else if all isAttrs values
|
||||||
|
then f (attrPath ++ [ n ]) values
|
||||||
|
else last values
|
||||||
|
);
|
||||||
|
in f [ ] attrList;
|
||||||
|
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
recursiveMerge
|
Loading…
Reference in a new issue