Add dustbowl nixos configuration
This commit is contained in:
parent
d34338944b
commit
d70f587539
4 changed files with 390 additions and 1 deletions
|
|
@ -15,7 +15,10 @@
|
|||
packages.x86_64-linux.lutris = pkgs.lutris;
|
||||
|
||||
nixosConfigurations = {
|
||||
dustbowl = import ./nixos/dustbowl.nix;
|
||||
dustbowl = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [ ./nixos/dustbowl.nix ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
13
nixos/cachix.nix
Normal file
13
nixos/cachix.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
# WARN: this file will get overwritten by $ cachix use <name>
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
folder = ./cachix;
|
||||
toImport = name: value: folder + ("/" + name);
|
||||
filterCaches = key: value: value == "regular" && lib.hasSuffix ".nix" key;
|
||||
imports = lib.mapAttrsToList toImport (lib.filterAttrs filterCaches (builtins.readDir folder));
|
||||
in {
|
||||
inherit imports;
|
||||
nix.binaryCaches = ["https://cache.nixos.org/"];
|
||||
}
|
||||
11
nixos/cachix/zig-nightly.nix
Normal file
11
nixos/cachix/zig-nightly.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
{
|
||||
nix = {
|
||||
binaryCaches = [
|
||||
"https://zig-nightly.cachix.org"
|
||||
];
|
||||
binaryCachePublicKeys = [
|
||||
"zig-nightly.cachix.org-1:OnBNrwrXNoCtCzjuMEfruWSaZEixGGSvFhc9OBtx1wg="
|
||||
];
|
||||
};
|
||||
}
|
||||
362
nixos/dustbowl.nix
Normal file
362
nixos/dustbowl.nix
Normal file
|
|
@ -0,0 +1,362 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
/etc/nixos/hardware-configuration.nix
|
||||
/etc/nixos/private.nix
|
||||
./cachix.nix
|
||||
];
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nix = {
|
||||
package = pkgs.nixFlakes;
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes ca-references
|
||||
builders-use-substitutes = true
|
||||
'';
|
||||
distributedBuilds = true;
|
||||
};
|
||||
|
||||
# Kernel version
|
||||
boot.kernelPackages = pkgs.linuxPackages_5_14;
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi = {
|
||||
canTouchEfiVariables = true;
|
||||
efiSysMountPoint = "/boot/efi";
|
||||
};
|
||||
boot.loader.grub = {
|
||||
enable = true;
|
||||
version = 2;
|
||||
device = "nodev";
|
||||
efiSupport = true;
|
||||
enableCryptodisk = true;
|
||||
};
|
||||
boot.initrd.luks.devices = {
|
||||
root = {
|
||||
device = "/dev/disk/by-uuid/70c16b36-14b6-4939-9fc9-210774614e72";
|
||||
preLVM = true;
|
||||
};
|
||||
};
|
||||
|
||||
networking.hostName = "dustbowl"; # Define your hostname.
|
||||
networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
networking.wireless.interfaces = [ "wlp2s0" ];
|
||||
# networking.wireless.userControlled.enable = true;
|
||||
|
||||
# The global useDHCP flag is deprecated, therefore explicitly set to false here.
|
||||
# Per-interface useDHCP will be mandatory in the future, so this generated config
|
||||
# replicates the default behaviour.
|
||||
networking.useDHCP = false;
|
||||
networking.interfaces.wlp2s0.useDHCP = true;
|
||||
|
||||
# services.dnscrypt-proxy2 = {
|
||||
# enable = true;
|
||||
# settings = {
|
||||
# require_nolog = true;
|
||||
# require_nofilter = true;
|
||||
# sources.public-resolvers = {
|
||||
# urls = [ "https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md" ];
|
||||
# cache_file = "public-resolvers.md";
|
||||
# minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
|
||||
# refresh_delay = 72;
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
|
||||
# udev rules
|
||||
services.udev.packages = with pkgs; [
|
||||
yubikey-personalization
|
||||
];
|
||||
|
||||
# services.logind.lidSwitch = "ignore";
|
||||
|
||||
# Configure console
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
keyMap = "de";
|
||||
};
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
# Set location (e.g. for redshift)
|
||||
location = {
|
||||
latitude = 1.3766;
|
||||
longitude = 103.8160;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
ntfs3g
|
||||
file
|
||||
usbutils
|
||||
pciutils
|
||||
calc
|
||||
wget
|
||||
unzip
|
||||
zip
|
||||
psmisc
|
||||
htop
|
||||
vim
|
||||
vis
|
||||
git
|
||||
pamix
|
||||
bubblewrap
|
||||
openconnect
|
||||
yubikey-personalization
|
||||
yubico-pam
|
||||
nmap
|
||||
bind.dnsutils
|
||||
|
||||
# X server setup
|
||||
# dwm
|
||||
# st
|
||||
alacritty
|
||||
xsel
|
||||
mons
|
||||
maim
|
||||
|
||||
# Wayland setup
|
||||
grim
|
||||
slurp
|
||||
wl-clipboard
|
||||
mako
|
||||
|
||||
# GUI software
|
||||
emacs
|
||||
firefox
|
||||
thunderbird
|
||||
mpv
|
||||
zathura
|
||||
imv
|
||||
];
|
||||
|
||||
environment.pathsToLink = [ "/libexec" ];
|
||||
|
||||
# Use doas instead of sudo
|
||||
security.sudo.enable = false;
|
||||
security.doas = {
|
||||
enable = true;
|
||||
extraRules = [
|
||||
{
|
||||
groups = ["wheel"];
|
||||
persist = true;
|
||||
keepEnv = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
# Enable gnupg
|
||||
programs.gnupg.agent.enable = true;
|
||||
|
||||
programs.fish.enable = true;
|
||||
|
||||
# Steam
|
||||
programs.steam.enable = true;
|
||||
# hardware.opengl.driSupport32Bit = true;
|
||||
# hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ libva ];
|
||||
# hardware.pulseaudio.support32Bit = true;
|
||||
|
||||
nixpkgs.config.packageOverrides = pkgs: rec {
|
||||
# Override emacs
|
||||
emacs = pkgs.emacs.override {
|
||||
withGTK3 = true;
|
||||
withGTK2 = false;
|
||||
};
|
||||
|
||||
# Override firefox
|
||||
firefox = pkgs.firefox.override {
|
||||
forceWayland = true;
|
||||
};
|
||||
};
|
||||
|
||||
# Configuration for dwm
|
||||
# nixpkgs.config.dwm = {
|
||||
# conf = builtins.fetchurl {
|
||||
# url = "https://gitlab.com/joachimschmidt557/dotfiles/-/raw/master/dwm/config.h";
|
||||
# sha256 = "6fe60337a89b6bdec55351df3fba03b4e9689d786b726073702d0fbf41324882";
|
||||
# };
|
||||
# };
|
||||
|
||||
# Configuration for st
|
||||
# nixpkgs.config.st = {
|
||||
# patches = let
|
||||
# scrollback = builtins.fetchurl {
|
||||
# url = "https://st.suckless.org/patches/scrollback/st-scrollback-20200419-72e3f6c.diff";
|
||||
# sha256 = "042k00iy8fvr3xvq93fmnhmjqpl1kns24x50xsa82npgllbzwh8y";
|
||||
# };
|
||||
# scrollbackMouse = builtins.fetchurl {
|
||||
# url = "https://st.suckless.org/patches/scrollback/st-scrollback-mouse-20191024-a2c479c.diff";
|
||||
# sha256 = "0z961sv4pxa1sxrbhalqzz2ldl7qb26qk9l11zx1hp8rh3cmi51i";
|
||||
# };
|
||||
# newTerm = builtins.fetchurl {
|
||||
# url = "http://st.suckless.org/patches/newterm/st-newterm-0.8.2.diff";
|
||||
# sha256 = "10r7cbdym0zvifdsvaf34adzc1qc9nwywvg6g9bmhaafjrxjqr91";
|
||||
# };
|
||||
# in [ ];
|
||||
# conf = let
|
||||
# path = builtins.fetchurl {
|
||||
# url = "https://gitlab.com/joachimschmidt557/dotfiles/-/raw/master/st/config_scrollback.h";
|
||||
# sha256 = "0fm2j0i72p9s4wyv4szk7ai6jckv33m2z9g17a3xksvi8q77g7zp";
|
||||
# };
|
||||
# in builtins.readFile path;
|
||||
# };
|
||||
|
||||
# Open ports in the firewall.
|
||||
networking.firewall.allowedTCPPorts = [ 8080 ];
|
||||
networking.firewall.allowedUDPPorts = [ 8080 ];
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
services.printing.drivers = [ pkgs.hplipWithPlugin ];
|
||||
hardware.sane.enable = true;
|
||||
hardware.sane.extraBackends = [ pkgs.hplipWithPlugin ];
|
||||
|
||||
# Redshift
|
||||
# services.redshift = {
|
||||
# enable = true;
|
||||
# package = pkgs.redshift-wlr;
|
||||
# temperature.day = 6500;
|
||||
# temperature.night = 2000;
|
||||
# };
|
||||
|
||||
systemd.user.services.wlsunset = {
|
||||
description = "wlsunset colour temperature adjuster";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
partOf = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.wlsunset}/bin/wlsunset \
|
||||
-l 49.5 \
|
||||
-L 8.4 \
|
||||
-t 2000 \
|
||||
'';
|
||||
RestartSec = 3;
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
|
||||
# Hardware
|
||||
# Enable sound.
|
||||
sound.enable = true;
|
||||
# hardware.pulseaudio = {
|
||||
# enable = true;
|
||||
# package = pkgs.pulseaudioFull;
|
||||
# extraModules = [ pkgs.pulseaudio-modules-bt ];
|
||||
# };
|
||||
hardware.bluetooth.enable = true;
|
||||
|
||||
# UPower
|
||||
services.upower.enable = true;
|
||||
|
||||
# RealtimeKit
|
||||
security.rtkit.enable = true;
|
||||
|
||||
# Video acceleration
|
||||
hardware.opengl.extraPackages = [ pkgs.vaapiIntel ];
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
layout = "de";
|
||||
xkbModel = "pc105";
|
||||
xkbVariant = "neo_qwertz";
|
||||
dpi = 150;
|
||||
|
||||
# displayManager.startx.enable = true;
|
||||
desktopManager.xterm.enable = false;
|
||||
};
|
||||
|
||||
# PipeWire
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
# Window manager
|
||||
services.xserver.windowManager.i3 = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
dmenu
|
||||
i3status
|
||||
i3lock
|
||||
];
|
||||
};
|
||||
|
||||
services.xserver.libinput = {
|
||||
enable = true;
|
||||
touchpad = {
|
||||
naturalScrolling = true;
|
||||
scrollMethod = "twofinger";
|
||||
};
|
||||
};
|
||||
|
||||
services.compton = {
|
||||
enable = true;
|
||||
backend = "glx";
|
||||
vSync = true;
|
||||
};
|
||||
systemd.user.services.picom.serviceConfig.Restart = pkgs.lib.mkForce "no";
|
||||
|
||||
# xss-lock
|
||||
programs.xss-lock = {
|
||||
enable = true;
|
||||
lockerCommand = "${pkgs.i3lock}/bin/i3lock";
|
||||
};
|
||||
|
||||
# Sway
|
||||
programs.sway.enable = true;
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
|
||||
};
|
||||
|
||||
# Fonts
|
||||
fonts.fonts = with pkgs; [
|
||||
fira-code
|
||||
noto-fonts noto-fonts-emoji noto-fonts-extra
|
||||
];
|
||||
fonts.fontconfig = {
|
||||
enable = true;
|
||||
defaultFonts = {
|
||||
emoji = [ "Noto Color Emoji" ];
|
||||
monospace = [ "Fira Code" ];
|
||||
sansSerif = [ "Noto Sans" ];
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
|
||||
users.users.joachim = {
|
||||
isNormalUser = true;
|
||||
home = "/home/joachim";
|
||||
shell = pkgs.fish;
|
||||
extraGroups = [ "wheel" "scanner" ];
|
||||
};
|
||||
|
||||
# Yubikey PAM
|
||||
security.pam.yubico = {
|
||||
enable = true;
|
||||
mode = "challenge-response";
|
||||
};
|
||||
|
||||
# This value determines the NixOS release with which your system is to be
|
||||
# compatible, in order to avoid breaking some software such as database
|
||||
# servers. You should change this only after NixOS release notes say you
|
||||
# should.
|
||||
system.stateVersion = "20.03"; # Did you read the comment?
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue