2023-09-23 18:32:41 +01:00
|
|
|
# Edit this configuration file to define what should be installed on
|
|
|
|
# your system. Help is available in the configuration.nix(5) man page
|
2024-09-12 07:15:13 +01:00
|
|
|
# and in the NixOS manual (accessible by running 'nixos-help').
|
2023-09-23 18:32:41 +01:00
|
|
|
|
|
|
|
{ config, pkgs, ... }:
|
|
|
|
|
|
|
|
{
|
|
|
|
imports =
|
|
|
|
[ # Include the results of the hardware scan.
|
|
|
|
./hardware-configuration.nix
|
|
|
|
];
|
|
|
|
|
|
|
|
# Bootloader.
|
2024-09-12 07:15:13 +01:00
|
|
|
boot.loader.systemd-boot.enable = true;
|
|
|
|
boot.loader.efi.canTouchEfiVariables = true;
|
2023-09-23 18:32:41 +01:00
|
|
|
|
2024-09-16 13:30:24 +01:00
|
|
|
# Splash screen
|
|
|
|
boot.plymouth = {
|
|
|
|
enable = true;
|
|
|
|
};
|
|
|
|
|
2024-09-12 07:15:13 +01:00
|
|
|
networking.hostName = "nixos-sparrow-lt";
|
2023-09-23 18:32:41 +01:00
|
|
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
|
|
|
|
|
|
|
# Enable networking
|
|
|
|
networking.networkmanager.enable = true;
|
|
|
|
|
|
|
|
# Set your time zone.
|
|
|
|
time.timeZone = "Europe/London";
|
|
|
|
|
|
|
|
# Select internationalisation properties.
|
|
|
|
i18n.defaultLocale = "en_GB.UTF-8";
|
|
|
|
|
|
|
|
i18n.extraLocaleSettings = {
|
2024-09-12 07:15:13 +01:00
|
|
|
LC_ADDRESS = "en_GB.UTF-8";
|
2023-09-23 18:32:41 +01:00
|
|
|
LC_IDENTIFICATION = "en_GB.UTF-8";
|
2024-09-12 07:15:13 +01:00
|
|
|
LC_MEASUREMENT = "en_GB.UTF-8";
|
|
|
|
LC_MONETARY = "en_GB.UTF-8";
|
|
|
|
LC_NAME = "en_GB.UTF-8";
|
|
|
|
LC_NUMERIC = "en_GB.UTF-8";
|
|
|
|
LC_PAPER = "en_GB.UTF-8";
|
|
|
|
LC_TELEPHONE = "en_GB.UTF-8";
|
|
|
|
LC_TIME = "en_GB.UTF-8";
|
2023-09-23 18:32:41 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
# Configure keymap in X11
|
2024-09-12 07:15:13 +01:00
|
|
|
services.xserver.xkb = {
|
2023-09-23 18:32:41 +01:00
|
|
|
layout = "gb";
|
2024-09-12 07:15:13 +01:00
|
|
|
variant = "";
|
2023-09-23 18:32:41 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
# Configure console keymap
|
|
|
|
console.keyMap = "uk";
|
|
|
|
|
2024-09-14 11:19:19 +01:00
|
|
|
nixpkgs = {
|
|
|
|
config = {
|
|
|
|
allowUnfree = true;
|
|
|
|
packageOverrides = pkgs: {
|
|
|
|
unstable = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz") {};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2023-09-23 18:32:41 +01:00
|
|
|
|
|
|
|
# Enable sound with pipewire.
|
|
|
|
sound.enable = true;
|
|
|
|
hardware.pulseaudio.enable = false;
|
|
|
|
security.rtkit.enable = true;
|
|
|
|
services.pipewire = {
|
|
|
|
enable = true;
|
|
|
|
alsa.enable = true;
|
|
|
|
alsa.support32Bit = true;
|
|
|
|
pulse.enable = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
# List packages installed in system profile. To search, run:
|
|
|
|
# $ nix search wget
|
2024-09-12 07:15:13 +01:00
|
|
|
environment = {
|
|
|
|
systemPackages = with pkgs; [
|
|
|
|
curl
|
|
|
|
gcc
|
|
|
|
git
|
|
|
|
gnumake
|
|
|
|
htop
|
|
|
|
jq
|
|
|
|
lesspipe
|
|
|
|
vim
|
|
|
|
];
|
|
|
|
|
2024-09-14 18:28:21 +01:00
|
|
|
variables = rec {
|
2024-09-12 07:15:13 +01:00
|
|
|
# Tools
|
|
|
|
BROWSER = "firefox";
|
|
|
|
EDITOR = "nvim";
|
|
|
|
MANPAGER = "nvim +Man!";
|
|
|
|
|
|
|
|
# XDG Home Directories
|
|
|
|
XDG_CACHE_HOME = "$HOME/.local/cache";
|
|
|
|
XDG_CONFIG_HOME = "$HOME/.local/config";
|
|
|
|
XDG_DATA_HOME = "$HOME/.local/data";
|
|
|
|
XDG_STATE_HOME = "$HOME/.local/state";
|
2024-09-14 18:28:21 +01:00
|
|
|
|
|
|
|
LOG_HOME = "${XDG_STATE_HOME}/logs";
|
2024-09-12 07:15:13 +01:00
|
|
|
|
|
|
|
# Bash history configuration
|
2024-09-14 18:28:21 +01:00
|
|
|
HISTFILE = "${XDG_STATE_HOME}/bash/history";
|
2024-09-12 07:15:13 +01:00
|
|
|
HISTCONTROL = "ignoreboth";
|
|
|
|
HISTFILESIZE = "10000";
|
|
|
|
HISTSIZE = "1000";
|
|
|
|
HISTTIMEFORMAT = "%d/%m/%y %T: ";
|
|
|
|
|
|
|
|
# Less history configuration
|
2024-09-14 18:28:21 +01:00
|
|
|
LESSHISTFILE = "${XDG_STATE_HOME}/less/history";
|
2024-09-12 07:15:13 +01:00
|
|
|
|
|
|
|
# GNUPG Configuration
|
2024-09-14 18:28:21 +01:00
|
|
|
GNUPGHOME = "${XDG_DATA_HOME}/gnupg";
|
2024-09-12 07:15:13 +01:00
|
|
|
|
|
|
|
# Go configuration
|
2024-09-14 18:28:21 +01:00
|
|
|
GOPATH = "${XDG_DATA_HOME}/go";
|
2024-09-12 07:15:13 +01:00
|
|
|
GOROOT = "$HOME/.local/opt/go";
|
|
|
|
GOBIN = "$HOME/.local/goblin";
|
|
|
|
GOOS = "linux";
|
|
|
|
GOARCH = "amd64";
|
|
|
|
CGO_ENABLED = "0";
|
|
|
|
|
|
|
|
# Magefile configuration
|
2024-09-14 18:28:21 +01:00
|
|
|
MAGEFILE_CACHE = "${XDG_CACHE_HOME}/magefile";
|
2024-09-12 07:15:13 +01:00
|
|
|
MAGEFILE_ENABLE_COLOR = "true";
|
|
|
|
|
|
|
|
# Docker environment variables
|
2024-09-14 18:28:21 +01:00
|
|
|
DOCKER_CONFIG = "${XDG_CONFIG_HOME}/docker";
|
2024-09-12 07:15:13 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
localBinInPath = true;
|
|
|
|
|
|
|
|
shellAliases = {
|
|
|
|
ls = "ls --color=auto";
|
|
|
|
ll = "ls -laF";
|
|
|
|
la = "ls -A";
|
|
|
|
l = "ls -CF";
|
|
|
|
|
|
|
|
rm = "rm -i";
|
|
|
|
mv = "mv -i";
|
|
|
|
cp = "cp -i";
|
|
|
|
|
|
|
|
grep = "grep --color=auto";
|
|
|
|
fgrep = "fgrep --color=auto";
|
|
|
|
egrep = "egrep --color=auto";
|
|
|
|
|
|
|
|
systemctl = "sudo systemctl";
|
|
|
|
journalctl = "sudo journalctl";
|
|
|
|
|
|
|
|
vim = "nvim";
|
|
|
|
view = "nvim -R";
|
|
|
|
vimdiff = "nvim -d";
|
|
|
|
|
|
|
|
pwgen = "pwgen -s -c -n";
|
|
|
|
g = "git";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
# Font configuration
|
|
|
|
fonts = {
|
|
|
|
enableDefaultPackages = true;
|
|
|
|
packages = with pkgs; [
|
|
|
|
noto-fonts
|
|
|
|
(nerdfonts.override { fonts = [ "SourceCodePro" ]; })
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
|
|
|
# Define a user account. Don't forget to set a password with 'passwd'.
|
2023-09-23 18:32:41 +01:00
|
|
|
users.users.dananglin = {
|
|
|
|
isNormalUser = true;
|
2024-09-12 07:15:13 +01:00
|
|
|
description = "Dan Anglin";
|
|
|
|
extraGroups = [ "networkmanager" "wheel" "docker"];
|
2023-09-23 18:32:41 +01:00
|
|
|
packages = with pkgs; [
|
2024-09-16 08:26:49 +01:00
|
|
|
deno
|
|
|
|
distrobox
|
|
|
|
firefox
|
2024-09-16 13:30:24 +01:00
|
|
|
gopass
|
2023-09-23 18:32:41 +01:00
|
|
|
lf
|
2024-09-16 08:26:49 +01:00
|
|
|
luajitPackages.luarocks
|
|
|
|
mage
|
|
|
|
pwgen
|
|
|
|
shellcheck
|
|
|
|
tmux
|
2024-09-14 11:19:19 +01:00
|
|
|
unstable.neovim
|
2024-09-16 08:26:49 +01:00
|
|
|
xdg-user-dirs
|
2024-09-16 13:30:24 +01:00
|
|
|
yambar
|
2023-09-23 18:32:41 +01:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2024-09-12 07:15:13 +01:00
|
|
|
nix = {
|
|
|
|
gc = {
|
|
|
|
automatic = true;
|
|
|
|
dates = "weekly";
|
|
|
|
options = "--delete-older-than 30d";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
programs = {
|
2024-09-13 09:54:20 +01:00
|
|
|
appimage = {
|
|
|
|
enable = true;
|
|
|
|
binfmt = true;
|
|
|
|
};
|
|
|
|
|
2024-09-12 07:15:13 +01:00
|
|
|
gnupg.agent = {
|
|
|
|
enable = true;
|
|
|
|
pinentryPackage = pkgs.pinentry-curses;
|
|
|
|
};
|
|
|
|
|
|
|
|
nano = {
|
|
|
|
enable = false;
|
|
|
|
};
|
|
|
|
|
|
|
|
river = {
|
|
|
|
enable = true;
|
|
|
|
extraPackages = with pkgs; [
|
|
|
|
foot
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
virtualisation = {
|
|
|
|
docker = {
|
|
|
|
enable = true;
|
|
|
|
enableOnBoot = true;
|
|
|
|
};
|
2023-09-23 18:32:41 +01:00
|
|
|
};
|
|
|
|
|
2024-09-14 14:17:46 +01:00
|
|
|
services.greetd = {
|
|
|
|
enable = true;
|
|
|
|
settings = {
|
|
|
|
default_session = {
|
|
|
|
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --time-format '%A, %d %B %Y - %H:%M' --remember --asterisks --cmd river";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2023-09-23 18:32:41 +01:00
|
|
|
# Some programs need SUID wrappers, can be configured further or are
|
|
|
|
# started in user sessions.
|
|
|
|
# programs.mtr.enable = true;
|
|
|
|
|
|
|
|
# This value determines the NixOS release from which the default
|
|
|
|
# settings for stateful data, like file locations and database versions
|
2024-09-12 07:15:13 +01:00
|
|
|
# on your system were taken. It's perfectly fine and recommended to leave
|
2023-09-23 18:32:41 +01:00
|
|
|
# this value at the release version of the first install of this system.
|
|
|
|
# Before changing this value read the documentation for this option
|
|
|
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
2024-09-12 07:15:13 +01:00
|
|
|
system.stateVersion = "24.05"; # Did you read the comment?
|
2023-09-23 18:32:41 +01:00
|
|
|
|
|
|
|
}
|