mirror of
https://github.com/Stunkymonkey/nixos.git
synced 2025-05-24 09:54:40 +02:00
initial commit
This commit is contained in:
commit
7517f318dc
55 changed files with 1401 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
configuration.nix
|
||||
vars-uuids.nix
|
||||
vars-backup.nix
|
27
README.md
Normal file
27
README.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
# My personal NixOS-configuration
|
||||
work in progress...
|
||||
|
||||
get internet
|
||||
`wpa_passphrase "<SSID>" > /etc/wpa_supplicant.conf`
|
||||
`systemctl restart wpa_supplicant`
|
||||
|
||||
install git
|
||||
`nix-env -iA nixos.git`
|
||||
|
||||
get this repo
|
||||
`git clone https://github.com/Stunkymonkey/nixos.git`
|
||||
`cd nixos`
|
||||
|
||||
link to correct host
|
||||
`ln -s <host>.nix configuration.nix`
|
||||
|
||||
set password for luks
|
||||
`vim /tmp/password`
|
||||
enter password
|
||||
`head -c <#char> /tmp/password > /tmp/passwd`
|
||||
|
||||
install
|
||||
`bash install-<hostname>.sh`
|
||||
|
||||
wait + enter password
|
||||
`reboot`
|
82
backup.nix
Normal file
82
backup.nix
Normal file
|
@ -0,0 +1,82 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
cfg = import ./vars-backup.nix;
|
||||
borgbackupMonitor = { config, pkgs, lib, ... }: with lib; {
|
||||
key = "borgbackupMonitor";
|
||||
_file = "borgbackupMonitor";
|
||||
config.systemd.services = {
|
||||
"notify-problems@" = {
|
||||
enable = true;
|
||||
serviceConfig.User = "felix";
|
||||
environment.SERVICE = "%i";
|
||||
script = ''
|
||||
export $(cat /proc/$(${pkgs.procps}/bin/pgrep -x "sway" -u "$USER")/environ |grep -z '^DBUS_SESSION_BUS_ADDRESS=')
|
||||
${pkgs.libnotify}/bin/notify-send -u critical "$SERVICE FAILED!" "Run journalctl -u $SERVICE for details"
|
||||
'';
|
||||
};
|
||||
} // flip mapAttrs' config.services.borgbackup.jobs (name: value:
|
||||
nameValuePair "borgbackup-job-${name}" {
|
||||
unitConfig.OnFailure = "notify-problems@%i.service";
|
||||
preStart = lib.mkBefore ''
|
||||
# waiting for internet after resume-from-suspend
|
||||
until /run/wrappers/bin/ping google.com -c1 -q >/dev/null; do :; done
|
||||
'';
|
||||
}
|
||||
);
|
||||
|
||||
# forces backup after boot in case server was powered off during scheduled event
|
||||
config.systemd.timers = flip mapAttrs' config.services.borgbackup.jobs (name: value:
|
||||
nameValuePair "borgbackup-job-${name}" {
|
||||
timerConfig.Persistent = true;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
# notification
|
||||
imports = [
|
||||
borgbackupMonitor
|
||||
];
|
||||
|
||||
services.borgbackup.jobs.thinkman = {
|
||||
paths = [
|
||||
"/"
|
||||
"/etc/nixos/"
|
||||
"/home/"
|
||||
];
|
||||
exclude = [
|
||||
"/nix"
|
||||
"/root/.cache/"
|
||||
"**/.Trash"
|
||||
"/tmp/*"
|
||||
"/var/lock/*"
|
||||
"/var/run/*"
|
||||
"/var/tmp/*"
|
||||
"/home/*/tmp"
|
||||
"/home/*/todo"
|
||||
"/home/*/.cache"
|
||||
"/home/*/.gvfs"
|
||||
"/home/*/.thumbnails"
|
||||
"/home/*/.local/share/Trash"
|
||||
];
|
||||
extraCreateArgs = "--one-file-system --exclude-caches --keep-exclude-tags --stats";
|
||||
encryption = {
|
||||
mode = "repokey-blake2";
|
||||
passCommand = "cat /root/.borg_password";
|
||||
};
|
||||
environment.BORG_RSH = "ssh -o 'StrictHostKeyChecking=no' -i /root/.ssh/backup_ed25519 -p 23";
|
||||
repo = "${cfg.borg.user}@${cfg.borg.host}:${cfg.borg.dir}";
|
||||
compression = "auto,zstd";
|
||||
doInit = false;
|
||||
startAt = "daily";
|
||||
prune.keep = {
|
||||
last = 1;
|
||||
within = "3d";
|
||||
daily = 7;
|
||||
weekly = 4;
|
||||
monthly = 6;
|
||||
yearly = 2;
|
||||
};
|
||||
};
|
||||
}
|
45
core.nix
Normal file
45
core.nix
Normal file
|
@ -0,0 +1,45 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
# Packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
bandwhich
|
||||
bind # dig
|
||||
borgbackup
|
||||
cryptsetup
|
||||
docker-compose
|
||||
file
|
||||
fzf
|
||||
gettext
|
||||
git
|
||||
gitAndTools.delta
|
||||
gnufdisk
|
||||
gptfdisk
|
||||
htop
|
||||
inetutils
|
||||
jq
|
||||
killall
|
||||
lsof
|
||||
mosh
|
||||
multipath-tools #-> kpartx
|
||||
mtr
|
||||
nix-index
|
||||
nmap
|
||||
nmon
|
||||
pciutils
|
||||
pv
|
||||
reptyr
|
||||
rsync
|
||||
screen
|
||||
stress-ng
|
||||
usbutils
|
||||
tmux
|
||||
vim
|
||||
wget
|
||||
whois
|
||||
zip
|
||||
unzip
|
||||
];
|
||||
|
||||
time.timeZone = "Europe/Berlin";
|
||||
services.timesyncd.enable = true;
|
||||
}
|
9
default.nix
Normal file
9
default.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./modules.nix
|
||||
./network.nix
|
||||
./users.nix
|
||||
];
|
||||
}
|
12
disks-home.nix
Normal file
12
disks-home.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
#FIXME: komplett anpassen
|
||||
let
|
||||
uuids = import ./vars-uuids.nix;
|
||||
in
|
||||
{
|
||||
fileSystems."/home" = {
|
||||
device = "/dev/disk/by-uuid/${uuids.fs.home}";
|
||||
fsType = "ext4";
|
||||
};
|
||||
}
|
12
disks-srv.nix
Normal file
12
disks-srv.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
uuids = import ./vars-uuids.nix;
|
||||
in
|
||||
{
|
||||
# FS
|
||||
fileSystems."/srv" = {
|
||||
device = "/dev/disk/by-uuid/${uuids.fs.srv}";
|
||||
fsType = "ext4";
|
||||
};
|
||||
}
|
32
disks.nix
Normal file
32
disks.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
#FIXME: komplett anpassen
|
||||
let
|
||||
uuids = import ./vars-uuids.nix;
|
||||
in
|
||||
{
|
||||
boot.initrd.luks.devices."luks-drive" = {
|
||||
name = "luks-drive";
|
||||
device = "/dev/disk/by-partuuid/${uuids.luks.root}";
|
||||
preLVM = true;
|
||||
allowDiscards = true;
|
||||
};
|
||||
|
||||
# FS
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/${uuids.fs.root}";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/${uuids.fs.boot}";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
# Swap
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/dev/disk/by-uuid/${uuids.fs.swap}";
|
||||
}
|
||||
];
|
||||
}
|
8
extra/3d-printing.nix
Normal file
8
extra/3d-printing.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
meshlab
|
||||
cura
|
||||
openscad
|
||||
];
|
||||
}
|
7
extra/android.nix
Normal file
7
extra/android.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
programs.adb.enable = true;
|
||||
environment.systemPackages = with pkgs; [
|
||||
scrcpy
|
||||
];
|
||||
}
|
7
extra/arch-linux.nix
Normal file
7
extra/arch-linux.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
pacman
|
||||
];
|
||||
environment.etc."makepkg.conf".source = "${pkgs.pacman}/etc/makepkg.conf";
|
||||
}
|
13
extra/avahi.nix
Normal file
13
extra/avahi.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
nssmdns = true;
|
||||
publish = {
|
||||
enable = true;
|
||||
addresses = true;
|
||||
workstation = true;
|
||||
userServices = true;
|
||||
};
|
||||
};
|
||||
}
|
19
extra/bluetooth-audio.nix
Normal file
19
extra/bluetooth-audio.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
package = pkgs.bluezFull;
|
||||
config = {
|
||||
General = {
|
||||
Enable = "Source,Sink,Media,Socket";
|
||||
};
|
||||
};
|
||||
};
|
||||
hardware.pulseaudio = {
|
||||
enable = true;
|
||||
extraModules = [ pkgs.pulseaudio-modules-bt ];
|
||||
package = pkgs.pulseaudioFull;
|
||||
};
|
||||
services.blueman.enable = true;
|
||||
}
|
10
extra/clean.nix
Normal file
10
extra/clean.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
baobab
|
||||
#dupeguru
|
||||
jdupes
|
||||
kondo
|
||||
];
|
||||
}
|
119
extra/default.nix
Normal file
119
extra/default.nix
Normal file
|
@ -0,0 +1,119 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
|
||||
in
|
||||
{
|
||||
|
||||
imports = [
|
||||
./fonts.nix
|
||||
];
|
||||
|
||||
programs.gnome-disks.enable = true;
|
||||
services.udisks2.enable = true;
|
||||
|
||||
# test if working
|
||||
#xdg.mime.enable = true;
|
||||
|
||||
# make gnome settings persistent
|
||||
|
||||
programs.dconf.enable = true;
|
||||
|
||||
# gnome services
|
||||
services.dbus.packages = [ pkgs.gnome3.dconf ];
|
||||
services.udev.packages = [ pkgs.gnome3.gnome-settings-daemon ];
|
||||
services.gnome3.gnome-keyring.enable = true;
|
||||
services.gnome3.glib-networking.enable = true;
|
||||
# enable trash & network-mount in nautilus
|
||||
services.gvfs.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
#mime-types
|
||||
xdg_utils
|
||||
adwaita-qt
|
||||
arc-icon-theme
|
||||
arc-kde-theme
|
||||
arc-theme
|
||||
evince
|
||||
firefox-wayland
|
||||
#geary
|
||||
ghostwriter
|
||||
(gimp-with-plugins.override { plugins = with gimpPlugins; [ resynthesizer ]; })
|
||||
glib
|
||||
gnome3.adwaita-icon-theme
|
||||
gnome3.eog
|
||||
gnome3.file-roller
|
||||
gnome3.gnome-calendar
|
||||
gnome3.gnome-system-monitor
|
||||
gnome3.nautilus
|
||||
gnome3.nautilus-python
|
||||
gnome3.simple-scan
|
||||
keepassxc
|
||||
keychain
|
||||
konsole
|
||||
libnotify
|
||||
libreoffice
|
||||
lollypop
|
||||
unstable.newsflash
|
||||
numix-cursor-theme
|
||||
numix-icon-theme
|
||||
numix-icon-theme-circle
|
||||
polkit_gnome
|
||||
qgnomeplatform
|
||||
rhythmbox
|
||||
simple-scan
|
||||
#spotify
|
||||
socat
|
||||
tdesktop
|
||||
thunderbird
|
||||
typora
|
||||
virtmanager
|
||||
vlc
|
||||
mpv-with-scripts
|
||||
wayvnc
|
||||
zathura
|
||||
zeal
|
||||
|
||||
# TODO sort them in different files
|
||||
pdfgrep
|
||||
physlock
|
||||
#symlinks
|
||||
];
|
||||
|
||||
# Enable firmware update daemon
|
||||
services.fwupd.enable = true;
|
||||
|
||||
programs.wireshark.enable = true;
|
||||
programs.wireshark.package = pkgs.wireshark;
|
||||
|
||||
services.accounts-daemon.enable = true;
|
||||
|
||||
environment.interactiveShellInit = ''
|
||||
if test `tty` = /dev/tty1; then
|
||||
exec sway
|
||||
fi
|
||||
'';
|
||||
|
||||
# services.xserver = {
|
||||
# enable = true;
|
||||
# layout = "us";
|
||||
# xkbOptions = "eurosign:e";
|
||||
# libinput.enable = true;
|
||||
# libinput.naturalScrolling = true;
|
||||
#
|
||||
# startDbusSession = true;
|
||||
# updateDbusEnvironment = true;
|
||||
#
|
||||
# desktopManager = {
|
||||
# xterm.enable = false;
|
||||
# gnome3.enable = false;
|
||||
# };
|
||||
#
|
||||
# displayManager = {
|
||||
# sessionData.sessionNames = [ "sway" "none+i3" ];
|
||||
# defaultSession = "sway";
|
||||
# gdm.enable = true;
|
||||
# gdm.wayland = true;
|
||||
# lightdm.enable = false;
|
||||
# };
|
||||
# };
|
||||
}
|
14
extra/desktop-development.nix
Normal file
14
extra/desktop-development.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
arduino
|
||||
bless # hex editor
|
||||
chromium
|
||||
dbeaver
|
||||
filezilla
|
||||
fritzing
|
||||
insomnia
|
||||
#jetbrains.idea-community
|
||||
sublime3
|
||||
];
|
||||
}
|
52
extra/development.nix
Normal file
52
extra/development.nix
Normal file
|
@ -0,0 +1,52 @@
|
|||
{ config, pkgs, ... }:
|
||||
let
|
||||
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
|
||||
in
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
# rust
|
||||
unstable.cargo
|
||||
unstable.clippy # lint
|
||||
cargo-flamegraph
|
||||
cargo-outdated
|
||||
# general
|
||||
clang
|
||||
cmake
|
||||
cvs
|
||||
dfeet
|
||||
direnv
|
||||
entr
|
||||
git
|
||||
gnumake
|
||||
go
|
||||
hugo
|
||||
meson
|
||||
ninja
|
||||
patchelf
|
||||
pkg-config
|
||||
(python3.withPackages (ps: with ps; [
|
||||
nltk # language-toolkit
|
||||
tqdm # progressbar in pandas
|
||||
jupyter # notebooks
|
||||
Keras # machine learning
|
||||
tensorflow-build_2 # machine learning
|
||||
transformers # machine learning
|
||||
numpy
|
||||
pandas
|
||||
matplotlib
|
||||
scipy
|
||||
scikitlearn
|
||||
pillow
|
||||
]))
|
||||
ripgrep
|
||||
rustfmt
|
||||
unstable.rustc
|
||||
shellcheck
|
||||
sloccount
|
||||
topgrade
|
||||
valgrind
|
||||
vimPlugins.YouCompleteMe
|
||||
ycmd
|
||||
woeusb
|
||||
];
|
||||
}
|
8
extra/docker.nix
Normal file
8
extra/docker.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
virtualisation.docker.enable = true;
|
||||
environment.systemPackages = with pkgs; [
|
||||
docker_compose
|
||||
];
|
||||
}
|
12
extra/filesystem.nix
Normal file
12
extra/filesystem.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
davfs2
|
||||
fuse3
|
||||
hfsprogs
|
||||
mtpfs
|
||||
nfs-utils
|
||||
ntfs3g
|
||||
sshfs
|
||||
];
|
||||
}
|
29
extra/fonts.nix
Normal file
29
extra/fonts.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
fonts = {
|
||||
fontconfig.defaultFonts = {
|
||||
monospace = [ "Ubuntu Mono" ];
|
||||
sansSerif = [ "Ubuntu" ];
|
||||
serif = [ "DejaVu Serif" ];
|
||||
};
|
||||
|
||||
fonts = with pkgs; [
|
||||
cantarell-fonts # gnome default
|
||||
dina-font
|
||||
fira
|
||||
fira-mono
|
||||
fira-code
|
||||
fira-code-symbols
|
||||
font-awesome
|
||||
liberation_ttf
|
||||
#mplus-outline-fonts
|
||||
noto-fonts
|
||||
noto-fonts-cjk
|
||||
noto-fonts-emoji
|
||||
proggyfonts
|
||||
ubuntu_font_family
|
||||
joypixels
|
||||
#unifont # unicode
|
||||
];
|
||||
};
|
||||
}
|
22
extra/gaming.nix
Normal file
22
extra/gaming.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
blobby
|
||||
discord
|
||||
minecraft
|
||||
minetest
|
||||
openttd
|
||||
superTuxKart
|
||||
steam
|
||||
SDL
|
||||
SDL2
|
||||
wine
|
||||
winetricks
|
||||
];
|
||||
|
||||
programs.steam.enable = true;
|
||||
|
||||
hardware.opengl.driSupport32Bit = true;
|
||||
hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ libva ];
|
||||
hardware.pulseaudio.support32Bit = true;
|
||||
}
|
14
extra/hardware-base.nix
Normal file
14
extra/hardware-base.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
services.smartd.enable = true;
|
||||
environment.systemPackages = with pkgs; [
|
||||
dmidecode
|
||||
f3
|
||||
hdparm
|
||||
lm_sensors
|
||||
pciutils
|
||||
smartmontools
|
||||
testdisk
|
||||
];
|
||||
}
|
15
extra/intel-video.nix
Normal file
15
extra/intel-video.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
nixpkgs.config.packageOverrides = pkgs: {
|
||||
vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
|
||||
};
|
||||
hardware.opengl = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
intel-media-driver # LIBVA_DRIVER_NAME=iHD
|
||||
vaapiIntel # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
|
||||
vaapiVdpau
|
||||
libvdpau-va-gl
|
||||
];
|
||||
};
|
||||
}
|
5
extra/intel.nix
Normal file
5
extra/intel.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
}
|
9
extra/kvm.nix
Normal file
9
extra/kvm.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
boot.kernelModules = [
|
||||
"kvm-amd"
|
||||
"kvm-intel"
|
||||
];
|
||||
virtualisation.libvirtd.enable = true;
|
||||
}
|
24
extra/location.nix
Normal file
24
extra/location.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
location.provider = "geoclue2";
|
||||
|
||||
services.geoclue2.enable = true;
|
||||
services.geoclue2.enableDemoAgent = true;
|
||||
services.geoclue2.appConfig."gammastep" = {
|
||||
desktopID = "gammastep";
|
||||
isAllowed = true;
|
||||
isSystem = false;
|
||||
# Empty list allows all users
|
||||
users = [ ];
|
||||
};
|
||||
|
||||
services.geoclue2.appConfig."gammastep-indicator" = {
|
||||
desktopID = "gammastep-indicator";
|
||||
isAllowed = true;
|
||||
isSystem = false;
|
||||
# Empty list allows all users
|
||||
users = [ ];
|
||||
};
|
||||
|
||||
}
|
26
extra/media.nix
Normal file
26
extra/media.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
|
||||
in
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
audacity
|
||||
chromaprint # music-brainz fingerprint
|
||||
ffmpeg
|
||||
gallery-dl
|
||||
graphviz
|
||||
handbrake
|
||||
imagemagick
|
||||
image_optim
|
||||
inkscape
|
||||
unstable.puddletag # audio tagging
|
||||
mp3val
|
||||
#mediaelch
|
||||
unstable.mediaelch
|
||||
picard
|
||||
projectm
|
||||
shotwell
|
||||
soundkonverter
|
||||
youtube-dl
|
||||
];
|
||||
}
|
15
extra/meeting.nix
Normal file
15
extra/meeting.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
|
||||
in
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
element-desktop
|
||||
mumble
|
||||
unstable.nheko
|
||||
pidgin
|
||||
skypeforlinux
|
||||
signal-desktop
|
||||
teamspeak_client
|
||||
];
|
||||
}
|
22
extra/networkdecrypt.nix
Normal file
22
extra/networkdecrypt.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
boot.initrd.network = {
|
||||
enable = true;
|
||||
|
||||
ssh = {
|
||||
enable = true;
|
||||
port = 2222;
|
||||
hostKeys = [
|
||||
/etc/secrets/initrd/ssh_host_ed25519_key
|
||||
];
|
||||
authorizedKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOFx6OLwL9MbkD3mnMsv+xrzZHN/rwCTgVs758SCLG0h felix@thinkman"
|
||||
];
|
||||
};
|
||||
|
||||
postCommands = ''
|
||||
echo 'cryptsetup-askpass' >> /root/.profile
|
||||
'';
|
||||
};
|
||||
}
|
7
extra/nix.nix
Normal file
7
extra/nix.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
nixpkgs-fmt
|
||||
nix-prefetch-git
|
||||
];
|
||||
}
|
19
extra/power.nix
Normal file
19
extra/power.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = [
|
||||
config.boot.kernelPackages.cpupower
|
||||
pkgs.powertop
|
||||
pkgs.s-tui
|
||||
];
|
||||
|
||||
powerManagement = {
|
||||
cpuFreqGovernor = lib.mkDefault "powersave";
|
||||
powertop.enable = true;
|
||||
};
|
||||
|
||||
services = {
|
||||
thermald.enable = true;
|
||||
upower.enable = true;
|
||||
};
|
||||
}
|
6
extra/presentation.nix
Normal file
6
extra/presentation.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
pdfpc
|
||||
];
|
||||
}
|
10
extra/printer.nix
Normal file
10
extra/printer.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
services.printing.enable = true;
|
||||
services.printing.drivers = with pkgs; [
|
||||
gutenprint
|
||||
hplip
|
||||
];
|
||||
programs.system-config-printer.enable = true;
|
||||
}
|
25
extra/screen-sharing.nix
Normal file
25
extra/screen-sharing.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
remmina
|
||||
teamviewer
|
||||
];
|
||||
|
||||
services.pipewire.enable = true;
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-wlr
|
||||
];
|
||||
gtkUsePortal = true;
|
||||
};
|
||||
|
||||
# for firefox
|
||||
environment.sessionVariables = {
|
||||
MOZ_ENABLE_WAYLAND = "1";
|
||||
XDG_CURRENT_DESKTOP = "sway";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
};
|
||||
}
|
7
extra/security.nix
Normal file
7
extra/security.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
aircrack-ng
|
||||
lynis
|
||||
];
|
||||
}
|
11
extra/sound.nix
Normal file
11
extra/sound.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
sound.enable = true;
|
||||
hardware.pulseaudio.enable = true;
|
||||
environment.systemPackages = with pkgs; [
|
||||
noisetorch
|
||||
pavucontrol
|
||||
playerctl
|
||||
];
|
||||
}
|
9
extra/ssh.nix
Normal file
9
extra/ssh.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
services.openssh.enable = true;
|
||||
|
||||
# WARNING: if you remove this, then you need to assign a password to your user, otherwise
|
||||
# `sudo` won't work. You can do that either by using `passwd` after the first rebuild or
|
||||
# by setting an hashed password in the `users.users.felix` block as `initialHashedPassword`.
|
||||
security.sudo.wheelNeedsPassword = false;
|
||||
}
|
12
extra/sync.nix
Normal file
12
extra/sync.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ config, pkgs, ... }:
|
||||
let
|
||||
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
|
||||
in
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
nextcloud-client
|
||||
unstable.syncthing
|
||||
magic-wormhole
|
||||
vdirsyncer
|
||||
];
|
||||
}
|
6
extra/systemd-user.nix
Normal file
6
extra/systemd-user.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
systemd.user.extraConfig = ''
|
||||
DefaultEnvironment="PATH=/run/current-system/sw/bin"
|
||||
'';
|
||||
}
|
15
extra/systemduefi.nix
Normal file
15
extra/systemduefi.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
boot = {
|
||||
loader = {
|
||||
timeout = 1;
|
||||
systemd-boot = {
|
||||
enable = true;
|
||||
configurationLimit = 10;
|
||||
consoleMode = "keep";
|
||||
editor = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
12
extra/tex.nix
Normal file
12
extra/tex.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ config, pkgs, ... }:
|
||||
let
|
||||
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
|
||||
in
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
unstable.jabref
|
||||
biber
|
||||
texlive.combined.scheme-full
|
||||
texstudio
|
||||
];
|
||||
}
|
10
extra/theme.nix
Normal file
10
extra/theme.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
gtk-engine-murrine
|
||||
gtk_engines
|
||||
gsettings-desktop-schemas
|
||||
lxappearance
|
||||
];
|
||||
programs.qt5ct.enable = true;
|
||||
}
|
10
extra/thunderbolt.nix
Normal file
10
extra/thunderbolt.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ config, pkgs, ... }:
|
||||
let
|
||||
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
|
||||
in
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
thunderbolt
|
||||
];
|
||||
services.hardware.bolt.enable = true;
|
||||
}
|
8
extra/webcam.nix
Normal file
8
extra/webcam.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
fswebcam
|
||||
gnome3.cheese
|
||||
];
|
||||
}
|
26
hardware/raspberrypi4.nix
Normal file
26
hardware/raspberrypi4.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
# Boot
|
||||
boot.loader.grub.enable = false;
|
||||
boot.loader.raspberryPi.enable = true;
|
||||
boot.loader.raspberryPi.version = 4;
|
||||
boot.loader.raspberryPi.firmwareConfig = "
|
||||
# Disable the ACT LED.
|
||||
dtparam=act_led_trigger=none
|
||||
dtparam=act_led_activelow=off
|
||||
# Disable the PWR LED.
|
||||
dtparam=pwr_led_trigger=none
|
||||
dtparam=pwr_led_activelow=off
|
||||
|
||||
# Disable SD-Card pools
|
||||
dtparam=sd_pool_once=on";
|
||||
|
||||
# Kernel configuration
|
||||
boot.kernelPackages = pkgs.linuxPackages_rpi4;
|
||||
boot.kernelParams = [ "cma=64M" "console=tty0" ];
|
||||
|
||||
# Enable additional firmware (such as Wi-Fi drivers).
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
#swapDevices = [{ device = "/swapfile"; size = 1024; }];
|
||||
}
|
20
hardware/t14.nix
Normal file
20
hardware/t14.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ config, lib, ... }:
|
||||
{
|
||||
boot = {
|
||||
# acpi_call makes tlp work for newer thinkpads
|
||||
kernelModules = [ "acpi_call" ];
|
||||
extraModulePackages = with config.boot.kernelPackages; [ acpi_call ];
|
||||
|
||||
# Force use of the thinkpad_acpi driver for backlight control.
|
||||
# This allows the backlight save/load systemd service to work.
|
||||
kernelParams = [ "acpi_backlight=native" ];
|
||||
|
||||
# video driver
|
||||
initrd.kernelModules = [ "i915" ];
|
||||
};
|
||||
|
||||
services.fstrim.enable = lib.mkDefault true;
|
||||
|
||||
# Special power management settings for ThinkPads
|
||||
services.tlp.enable = true;
|
||||
}
|
136
helpers.sh
Normal file
136
helpers.sh
Normal file
|
@ -0,0 +1,136 @@
|
|||
#!/bin/sh
|
||||
|
||||
ask_if_sure(){
|
||||
while true; do
|
||||
read -p "reinstall & ERASE ALL DATA? [y/n] " yn
|
||||
case $yn in
|
||||
[Yy]* ) break;;
|
||||
[Nn]* ) exit 1;;
|
||||
* ) echo "Please answer yes or no.";;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
blk_wait(){
|
||||
local dev="${1?}"
|
||||
|
||||
while ! [ -b "${dev}" ]; do
|
||||
sleep 0.1
|
||||
done
|
||||
}
|
||||
|
||||
blk_info_partuuid(){
|
||||
local dev="${1?}"
|
||||
|
||||
printf '/dev/disk/by-partuuid/%s' "$(blkid -o value -s PARTUUID "${dev}")"
|
||||
}
|
||||
|
||||
blk_info_uuid(){
|
||||
local dev="${1?}"
|
||||
|
||||
printf '/dev/disk/by-uuid/%s' "$(blkid -o value -s UUID "${dev}")"
|
||||
}
|
||||
|
||||
# Write into /tmp/password your password (without a trailing newline!)
|
||||
# So you won't get asked for a password during installation
|
||||
#
|
||||
# If you want to get asked for every password, just remove this function
|
||||
cryptsetup(){
|
||||
command cryptsetup $* --key-file /tmp/passwd -q
|
||||
}
|
||||
|
||||
install_os(){
|
||||
local folder="${1?}"
|
||||
nixos-install --cores 0 --max-jobs auto --root "${folder}"
|
||||
}
|
||||
|
||||
luks_close(){
|
||||
local drive="${1?}"
|
||||
|
||||
if cryptsetup status "${drive}" &>/dev/null; then
|
||||
cryptsetup close "${drive}"
|
||||
fi
|
||||
}
|
||||
|
||||
lvm_remove_lv(){
|
||||
local lv="${1?}"
|
||||
|
||||
if lvs "${lv}"; then
|
||||
lvremove -f "${lv}"
|
||||
fi
|
||||
}
|
||||
|
||||
lvm_remove_vg(){
|
||||
local vg="${1?}"
|
||||
|
||||
if vgs "${vg}"; then
|
||||
vgremove "${vg}"
|
||||
fi
|
||||
}
|
||||
|
||||
lvm_remove_pv(){
|
||||
local pv="${1?}"
|
||||
|
||||
if pvs "${pv}"; then
|
||||
pvremove "${pv}"
|
||||
fi
|
||||
}
|
||||
|
||||
macro_replace(){
|
||||
local macro="${1?}"
|
||||
local value="${2?}"
|
||||
local file="${3?}"
|
||||
|
||||
sed -i "s%${macro}%${value}%g" "${file}"
|
||||
}
|
||||
|
||||
mp_mount(){
|
||||
local src="${1?}"
|
||||
local dst="${2?}"
|
||||
local fstype="${3:-}"
|
||||
|
||||
mkdir -p "${CHROOT_BASE?}${dst}"
|
||||
mount ${fstype:+-t} ${fstype:+"${fstype}"} "${src}" "${CHROOT_BASE?}${dst}"
|
||||
}
|
||||
|
||||
mp_umount(){
|
||||
local mountpoint="${1?}"
|
||||
|
||||
if mountpoint "${CHROOT_BASE}${mountpoint}" &>/dev/null; then
|
||||
umount -R "${CHROOT_BASE}${mountpoint}"
|
||||
fi
|
||||
|
||||
if [ -d "${CHROOT_BASE}${mountpoint}" ]; then
|
||||
rmdir "${CHROOT_BASE}${mountpoint}"
|
||||
fi
|
||||
! [ -e "${CHROOT_BASE}${mountpoint}" ]
|
||||
}
|
||||
|
||||
parttable_clear(){
|
||||
local drive="${1?}"
|
||||
|
||||
while ! sgdisk -Z "${drive}" &>/dev/null; do
|
||||
sleep 0.1
|
||||
done
|
||||
}
|
||||
|
||||
zero_blockdev(){
|
||||
local dev="${1?}"
|
||||
|
||||
blkdiscard "${dev}"
|
||||
}
|
||||
|
||||
zero_overwrite(){
|
||||
local fsdev="${1?}"
|
||||
local MBs="${2:-10}"
|
||||
|
||||
dd if=/dev/zero of="${fsdev}" bs=1M count="${MBs}" conv=sync
|
||||
}
|
||||
|
||||
# Helper.sh
|
||||
zfs_pool_destroy(){
|
||||
local pool="${1?}"
|
||||
if zpool status "${pool}" &>/dev/null; then
|
||||
zpool destroy "${pool}"
|
||||
fi
|
||||
}
|
88
install-serverle.sh
Normal file
88
install-serverle.sh
Normal file
|
@ -0,0 +1,88 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eux -o pipefail
|
||||
|
||||
BASE="$(dirname "$(readlink -f "$0")")"
|
||||
. "${BASE}/helpers.sh"
|
||||
|
||||
export HOST=serverle
|
||||
export DRIVE_ROOT=/dev/disk/by-id/usb-Seagate_Expansion_2HC015KJ-0\:0
|
||||
|
||||
export NIXOS_FILES="${NIXOS_FILES:-$PWD}"
|
||||
export CHROOT_BASE="/mnt/newroot-${HOST}"
|
||||
|
||||
export DRIVE_ROOT_LUKS=/dev/mapper/luks-root
|
||||
PARTSEP="-part"
|
||||
|
||||
ask_if_sure
|
||||
|
||||
mp_umount /
|
||||
|
||||
################################################################################################
|
||||
echo "Starting Root SSD"
|
||||
|
||||
lvm_remove_lv /dev/vg_root/lv_root
|
||||
lvm_remove_lv /dev/vg_root/lv_srv
|
||||
lvm_remove_vg vg_root
|
||||
lvm_remove_pv "${DRIVE_ROOT_LUKS}"
|
||||
|
||||
luks_close "$(basename "${DRIVE_ROOT_LUKS}")"
|
||||
#zero_blockdev "${DRIVE_ROOT}" # trim support is not available on external drives
|
||||
|
||||
parttable_clear "${DRIVE_ROOT}"
|
||||
|
||||
# ROOT SSD SETUP
|
||||
sgdisk \
|
||||
-o "${DRIVE_ROOT}" \
|
||||
-n 1:2048:4095 -c 1:"BIOS Boot Partition" -t 1:ef02 \
|
||||
-n 2:4096:823295 -c 2:"EFI System Partition" -t 2:ef00 \
|
||||
--largest-new=3 -c 3:"Crypt" -t 3:8309 \
|
||||
-p
|
||||
|
||||
cryptsetup luksFormat "${DRIVE_ROOT}${PARTSEP}3"
|
||||
cryptsetup luksOpen --allow-discards "${DRIVE_ROOT}${PARTSEP}3" "$(basename "${DRIVE_ROOT_LUKS}")"
|
||||
|
||||
pvcreate "${DRIVE_ROOT_LUKS}"
|
||||
vgcreate vg_root "${DRIVE_ROOT_LUKS}"
|
||||
|
||||
lvcreate -L 50GiB -n lv_root vg_root
|
||||
mkfs.ext4 -L "${HOST}-root" /dev/vg_root/lv_root
|
||||
|
||||
lvcreate -L 250GiB -n lv_srv vg_root
|
||||
mkfs.ext4 -L "${HOST}-srv" /dev/vg_root/lv_srv
|
||||
|
||||
lvcreate -L 4GiB -n lv_swap vg_root
|
||||
mkswap -L "${HOST}-swap" /dev/vg_root/lv_swap
|
||||
|
||||
zero_overwrite "${DRIVE_ROOT}${PARTSEP}2"
|
||||
mkfs.vfat -n "${HOST}-boot" "${DRIVE_ROOT}${PARTSEP}2"
|
||||
|
||||
mp_mount /dev/vg_root/lv_root /
|
||||
mp_mount /dev/vg_root/lv_srv /srv
|
||||
mp_mount "${DRIVE_ROOT}${PARTSEP}2" /boot
|
||||
|
||||
mkdir -p /etc/secrets/initrd
|
||||
ssh-keygen -t ed25519 -N "" -f "/etc/secrets/initrd/ssh_host_ed25519_key"
|
||||
|
||||
mkdir -p "${CHROOT_BASE}/etc/nixos/"
|
||||
rsync -avH "${NIXOS_FILES}/" "${CHROOT_BASE}/etc/nixos/"
|
||||
|
||||
mkdir -p "${CHROOT_BASE}/etc/secrets/initrd"
|
||||
rsync -avH "/etc/secrets/" "${CHROOT_BASE}/etc/secrets/"
|
||||
|
||||
cat >> "${CHROOT_BASE}/etc/nixos/vars-uuids.nix" <<END
|
||||
{
|
||||
fs = {
|
||||
root = "$(blkid -o value -s UUID "/dev/vg_root/lv_root")";
|
||||
boot = "$(blkid -o value -s UUID "${DRIVE_ROOT}${PARTSEP}2")";
|
||||
srv = "$(blkid -o value -s UUID "/dev/vg_root/lv_srv")";
|
||||
swap = "$(blkid -o value -s UUID "/dev/vg_root/lv_swap")";
|
||||
};
|
||||
|
||||
luks = {
|
||||
root = "$(blkid -o value -s PARTUUID "${DRIVE_ROOT}${PARTSEP}3")";
|
||||
};
|
||||
}
|
||||
END
|
||||
|
||||
install_os "${CHROOT_BASE}"
|
86
install-thinkman.sh
Normal file
86
install-thinkman.sh
Normal file
|
@ -0,0 +1,86 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eux -o pipefail
|
||||
|
||||
BASE="$(dirname "$(readlink -f "$0")")"
|
||||
. "${BASE}/helpers.sh"
|
||||
|
||||
export HOST=thinkman
|
||||
export DRIVE_ROOT=/dev/disk/by-id/nvme-Samsung_SSD_970_EVO_1TB_S5H9NS0NB16097P
|
||||
|
||||
export NIXOS_FILES="${NIXOS_FILES?}"
|
||||
export CHROOT_BASE="/mnt/newroot-${HOST}"
|
||||
|
||||
export DRIVE_ROOT_LUKS=/dev/mapper/luks-root
|
||||
PARTSEP="-part"
|
||||
|
||||
ask_if_sure
|
||||
|
||||
mp_umount /
|
||||
|
||||
################################################################################################
|
||||
echo "Starting Root SSD"
|
||||
|
||||
lvm_remove_lv /dev/vg_root/lv_root
|
||||
lvm_remove_lv /dev/vg_root/lv_home
|
||||
lvm_remove_vg vg_root
|
||||
lvm_remove_pv "${DRIVE_ROOT_LUKS}"
|
||||
|
||||
luks_close "$(basename "${DRIVE_ROOT_LUKS}")"
|
||||
zero_blockdev "${DRIVE_ROOT}"
|
||||
|
||||
parttable_clear "${DRIVE_ROOT}"
|
||||
|
||||
# ROOT SSD SETUP
|
||||
sgdisk \
|
||||
-o "${DRIVE_ROOT}" \
|
||||
-n 1:2048:4095 -c 1:"BIOS Boot Partition" -t 1:ef02 \
|
||||
-n 2:4096:823295 -c 2:"EFI System Partition" -t 2:ef00 \
|
||||
--largest-new=3 -c 3:"Crypt" -t 3:8309 \
|
||||
-p
|
||||
|
||||
cryptsetup luksFormat "${DRIVE_ROOT}${PARTSEP}3"
|
||||
cryptsetup luksOpen --allow-discards "${DRIVE_ROOT}${PARTSEP}3" "$(basename "${DRIVE_ROOT_LUKS}")"
|
||||
|
||||
pvcreate "${DRIVE_ROOT_LUKS}"
|
||||
vgcreate vg_root "${DRIVE_ROOT_LUKS}"
|
||||
|
||||
lvcreate -L 50GiB -n lv_root vg_root
|
||||
mkfs.ext4 -L "${HOST}-root" /dev/vg_root/lv_root
|
||||
|
||||
lvcreate -L 100GiB -n lv_home vg_root
|
||||
mkfs.ext4 -L "${HOST}-home" /dev/vg_root/lv_home
|
||||
|
||||
lvcreate -L 10GiB -n lv_swap vg_root
|
||||
mkswap -L "${HOST}-swap" /dev/vg_root/lv_swap
|
||||
|
||||
zero_overwrite "${DRIVE_ROOT}${PARTSEP}2"
|
||||
mkfs.vfat -n "${HOST}-boot" "${DRIVE_ROOT}${PARTSEP}2"
|
||||
|
||||
mp_mount /dev/vg_root/lv_root /
|
||||
mp_mount /dev/vg_root/lv_home /home
|
||||
mp_mount "${DRIVE_ROOT}${PARTSEP}2" /boot
|
||||
|
||||
mkdir -p ${CHROOT_BASE}/etc/secrets/initrd
|
||||
ssh-keygen -t ed25519 -N "" -f "${CHROOT_BASE}/etc/secrets/initrd/ssh_host_ed25519_key"
|
||||
ssh-keygen -t rsa -N "" -f "${CHROOT_BASE}/etc/secrets/initrd/ssh_host_rsa_key"
|
||||
|
||||
mkdir -p "${CHROOT_BASE}/etc/nixos/"
|
||||
rsync -avH "${NIXOS_FILES}/" "${CHROOT_BASE}/etc/nixos/"
|
||||
|
||||
cat >> "${CHROOT_BASE}/etc/nixos/vars-uuids.nix" <<END
|
||||
{
|
||||
fs = {
|
||||
root = "$(blkid -o value -s UUID "/dev/vg_root/lv_root")";
|
||||
boot = "$(blkid -o value -s UUID "${DRIVE_ROOT}${PARTSEP}2")";
|
||||
home = "$(blkid -o value -s UUID "/dev/vg_root/lv_home")";
|
||||
swap = "$(blkid -o value -s UUID "/dev/vg_root/lv_swap")";
|
||||
};
|
||||
|
||||
luks = {
|
||||
root = "$(blkid -o value -s PARTUUID "${DRIVE_ROOT}${PARTSEP}3")";
|
||||
};
|
||||
}
|
||||
END
|
||||
|
||||
install_os "${CHROOT_BASE}"
|
31
modules.nix
Normal file
31
modules.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Enable all firmware modules, so that bluetooth and wifi modules can load
|
||||
# https://github.com/NixOS/nixpkgs/issues/85377#issuecomment-616424682
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
hardware.enableAllFirmware = true;
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
boot.initrd = {
|
||||
availableKernelModules = [
|
||||
"ahci"
|
||||
"e1000e"
|
||||
"ehci_pci"
|
||||
"nvme"
|
||||
"sd_mod"
|
||||
"uas"
|
||||
"usbhid"
|
||||
"usb_storage"
|
||||
"xhci_pci"
|
||||
];
|
||||
|
||||
kernelModules = [
|
||||
"dm-snapshot"
|
||||
"e1000e"
|
||||
"nvme"
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
}
|
15
network.nix
Normal file
15
network.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
networking.networkmanager = {
|
||||
enable = true;
|
||||
|
||||
unmanaged = [
|
||||
"interface-name:br-*" # Ignore docker compose network bridges
|
||||
"interface-name:docker?" # Ignore docker default bridge
|
||||
"interface-name:veth*" # Ignore docker compose network devices
|
||||
"interface-name:virbr?" # Ignore libvirt default bridge
|
||||
];
|
||||
};
|
||||
|
||||
}
|
25
serverle.nix
Normal file
25
serverle.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
imports = [
|
||||
./default.nix
|
||||
./core.nix
|
||||
./disks.nix
|
||||
./disks-srv.nix
|
||||
./users.nix
|
||||
./extra/networkdecrypt.nix
|
||||
./extra/ssh.nix
|
||||
./extra/avahi.nix
|
||||
./hardware/raspberrypi4.nix
|
||||
];
|
||||
networking.hostName = "serverle";
|
||||
|
||||
#environment.noXlibs = true;
|
||||
|
||||
# Nix
|
||||
nix.gc.automatic = true;
|
||||
nix.gc.options = "--delete-older-than 30d";
|
||||
|
||||
system.stateVersion = "20.09";
|
||||
system.autoUpgrade.enable = true;
|
||||
system.autoUpgrade.channel = https://nixos.org/channels/nixos-20.09;
|
||||
}
|
55
sway.nix
Normal file
55
sway.nix
Normal file
|
@ -0,0 +1,55 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
|
||||
in
|
||||
{
|
||||
programs.light.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
polkit_gnome
|
||||
];
|
||||
environment.pathsToLink = [ "/libexec" ];
|
||||
#programs.wshowkeys.enable = true;
|
||||
|
||||
programs.sway = {
|
||||
enable = true;
|
||||
wrapperFeatures = {
|
||||
gtk = true;
|
||||
base = true;
|
||||
};
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
alacritty
|
||||
brightnessctl
|
||||
dmenu
|
||||
gammastep
|
||||
grim
|
||||
unstable.i3status-rust
|
||||
mako
|
||||
slurp
|
||||
swayidle
|
||||
swaylock
|
||||
wdisplays
|
||||
wf-recorder
|
||||
wl-clipboard
|
||||
wofi
|
||||
xwayland
|
||||
unstable.wshowkeys
|
||||
];
|
||||
|
||||
|
||||
extraSessionCommands =
|
||||
''
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
export XDG_CURRENT_DESKTOP=sway
|
||||
export SDL_VIDEODRIVER=wayland
|
||||
export QT_QPA_PLATFORM=wayland
|
||||
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
export CLUTTER_BACKEND=wayland
|
||||
export SAL_USE_VCLPLUGIN=gtk3
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
export MOZ_USE_XINPUT2=1
|
||||
'';
|
||||
};
|
||||
}
|
57
thinkman.nix
Normal file
57
thinkman.nix
Normal file
|
@ -0,0 +1,57 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
imports = [
|
||||
./backup.nix
|
||||
./core.nix
|
||||
./default.nix
|
||||
./disks.nix
|
||||
./disks-home.nix
|
||||
./sway.nix
|
||||
./extra/3d-printing.nix
|
||||
./extra/android.nix
|
||||
./extra/arch-linux.nix
|
||||
./extra/avahi.nix
|
||||
./extra/bluetooth-audio.nix
|
||||
./extra/clean.nix
|
||||
./extra/default.nix
|
||||
./extra/desktop-development.nix
|
||||
./extra/development.nix
|
||||
./extra/docker.nix
|
||||
./extra/filesystem.nix
|
||||
./extra/gaming.nix
|
||||
./extra/hardware-base.nix
|
||||
./extra/intel-video.nix
|
||||
./extra/intel.nix
|
||||
./extra/kvm.nix
|
||||
./extra/location.nix
|
||||
./extra/media.nix
|
||||
./extra/meeting.nix
|
||||
./extra/nix.nix
|
||||
./extra/power.nix
|
||||
./extra/presentation.nix
|
||||
./extra/printer.nix
|
||||
./extra/screen-sharing.nix
|
||||
./extra/sound.nix
|
||||
./extra/sync.nix
|
||||
./extra/systemd-user.nix
|
||||
./extra/systemduefi.nix
|
||||
./extra/tex.nix
|
||||
./extra/theme.nix
|
||||
./extra/thunderbolt.nix
|
||||
./extra/webcam.nix
|
||||
./hardware/t14.nix
|
||||
];
|
||||
|
||||
networking.hostName = "thinkman";
|
||||
|
||||
# Use latest kernel
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
|
||||
# Nix
|
||||
nix.gc.automatic = true;
|
||||
nix.gc.options = "--delete-older-than 30d";
|
||||
|
||||
system.stateVersion = "20.09";
|
||||
system.autoUpgrade.enable = true;
|
||||
system.autoUpgrade.channel = https://nixos.org/channels/nixos-20.09;
|
||||
}
|
23
users.nix
Normal file
23
users.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
users.users.felix = {
|
||||
isNormalUser = true;
|
||||
home = "/home/felix";
|
||||
group = "felix";
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"adbusers"
|
||||
"audio"
|
||||
"docker"
|
||||
"input"
|
||||
"libvirtd"
|
||||
"networkmanager"
|
||||
"video"
|
||||
];
|
||||
openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOFx6OLwL9MbkD3mnMsv+xrzZHN/rwCTgVs758SCLG0h felix@thinkman" ];
|
||||
};
|
||||
|
||||
users.groups.felix = {
|
||||
gid = 1000;
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue