Skip to content

Instantly share code, notes, and snippets.

@john-shaffer
Created March 1, 2022 03:03
Show Gist options
  • Save john-shaffer/e488a657ceb7cefa2bd1be7f22f28912 to your computer and use it in GitHub Desktop.
Save john-shaffer/e488a657ceb7cefa2bd1be7f22f28912 to your computer and use it in GitHub Desktop.
# 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.
./hardware-configuration.nix
./local.nix
./services/create-run-postgresql.nix
];
# Enabled for profiling with clj-async-profiler
#boot.kernel.sysctl = {
# "kernel.kptr_restrict" = 0;
# "perf_event_paranoid" = 1;
#};
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Networking setup
networking.firewall.enable = false;
networking.hostName = "john";
# Enable NetworkManager
networking.networkmanager.enable = true;
nix = {
autoOptimiseStore = true;
extraOptions = ''
keep-derivations = true
keep-outputs = true
'';
};
# Allow unfree proprietary packages such as spotify or vscode
nixpkgs.config.allowUnfree = true;
# System-wide packages
environment.systemPackages = with pkgs; [
jmtpfs
# System utilities
ark
git
usbutils
unzip
vim
wget
# Gnome specifics and utilities
gnome.gnome-tweaks
gnomeExtensions.dash-to-panel
gnomeExtensions.tray-icons-reloaded
];
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryFlavor = "curses";
};
environment.gnome.excludePackages = with pkgs; [
gnome.geary
];
environment.interactiveShellInit = ''
if [ ! -f ~/.config/nixpkgs/config.nix ]
then
mkdir -p ~/.config/nixpkgs/
echo '{ allowUnfree = true; }' > ~/.config/nixpkgs/config.nix
fi
'';
#fileSystems."/mnt/mm" = {
# device = "192.168.10.157:/Multimedia";
# fsType = "nfs";
# options = [
# "x-systemd.automount" "noauto"
# ];
#};
# List services that you want to enable:
services.create-run-postgresql.enable = true;
services.cron = {
enable = true;
};
services.fstrim.enable = true;
services.gvfs.enable = true;
# Limit journal size
services.journald = {
extraConfig = "SystemMaxUse=500M";
};
services.nix-serve = {
enable = true;
secretKeyFile = "/var/nix-serve/secret";
};
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound.
sound.enable = true;
# Enable BT
hardware.bluetooth.enable = true;
# For Epic Game Store
hardware.opengl.driSupport32Bit = true;
# Enable pulseaudio with BT support
hardware.pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
};
services.syncthing = {
enable = true;
overrideDevices = true;
overrideFolders = true;
configDir = "/home/john/.config/syncthing";
dataDir = "/home/john";
group = "users";
user = "john";
devices = {
"desktop-john" = { id = "PNA44M7-KL6MPG7-KSP6B4K-WWQLZGZ-4KEHCKE-P5C4KFQ-D5P5WO5-NYUF2QE"; };
# "laptop-john" = { id = "DEVICE-ID-GOES-HERE"; };
};
folders = {
"Documents" = {
path = "/home/john/Documents";
devices = [
"desktop-john"
#"laptop-john"
];
};
"src" = {
path = "/home/john/src";
devices = [
"desktop-john"
#"laptop-john"
];
};
};
};
services.udev.packages = with pkgs; [ gnome3.gnome-settings-daemon ];
# Enable the X11 windowing system.
services.xserver.enable = true;
services.xserver.layout = "us";
services.xserver.xkbOptions = "grp:win_space_toggle";
services.xserver.xkbVariant = "dvorak";
# Enable touchpad support.
# It is needed to explicitly disable libinput if we want to use synaptics
services.xserver.libinput.enable = false;
# Enable Lenovo/IBM touchpad support
services.xserver.synaptics.enable = true;
# Enable for Gnome Desktop Environment
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
services.xserver.displayManager.autoLogin = {
enable = true;
user = "john";
};
# Set your time zone.
time.timeZone = "America/Chicago";
programs.steam.enable = true;
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.john = {
isNormalUser = true;
uid = 1000;
createHome = true;
home = "/home/john";
extraGroups = [ "wheel" "networkmanager" ];
};
virtualisation = {
podman = {
enable = true;
# Create a `docker` alias for podman, to use it as a drop-in replacement
dockerCompat = true;
};
};
# 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 = "21.11"; # Did you read the comment?
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment