# 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 ]; # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; # Splash screen boot.plymouth = { enable = true; }; networking.hostName = "nixos-sparrow-lt"; # 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 = { LC_ADDRESS = "en_GB.UTF-8"; LC_IDENTIFICATION = "en_GB.UTF-8"; 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"; }; # Configure keymap in X11 services.xserver.xkb = { layout = "gb"; variant = ""; }; # Configure console keymap console.keyMap = "uk"; nixpkgs = { config = { allowUnfree = true; packageOverrides = pkgs: { unstable = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz") {}; }; }; }; # 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 environment = { systemPackages = with pkgs; [ curl gcc git gnumake htop jq lesspipe vim ]; variables = rec { # 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"; LOG_HOME = "${XDG_STATE_HOME}/logs"; # Bash history configuration HISTFILE = "${XDG_STATE_HOME}/bash/history"; HISTCONTROL = "ignoreboth"; HISTFILESIZE = "10000"; HISTSIZE = "1000"; HISTTIMEFORMAT = "%d/%m/%y %T: "; # Less history configuration LESSHISTFILE = "${XDG_STATE_HOME}/less/history"; # GNUPG Configuration GNUPGHOME = "${XDG_DATA_HOME}/gnupg"; # Go configuration GOPATH = "${XDG_DATA_HOME}/go"; GOROOT = "$HOME/.local/opt/go"; GOBIN = "$HOME/.local/goblin"; GOOS = "linux"; GOARCH = "amd64"; CGO_ENABLED = "0"; # Magefile configuration MAGEFILE_CACHE = "${XDG_CACHE_HOME}/magefile"; MAGEFILE_ENABLE_COLOR = "true"; # Docker environment variables DOCKER_CONFIG = "${XDG_CONFIG_HOME}/docker"; }; 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'. users.users.dananglin = { isNormalUser = true; description = "Dan Anglin"; extraGroups = [ "networkmanager" "wheel" "docker"]; packages = with pkgs; [ deno distrobox firefox gopass lf luajitPackages.luarocks mage pwgen shellcheck tmux unstable.neovim xdg-user-dirs yambar ]; }; nix = { gc = { automatic = true; dates = "weekly"; options = "--delete-older-than 30d"; }; }; programs = { appimage = { enable = true; binfmt = true; }; gnupg.agent = { enable = true; pinentryPackage = pkgs.pinentry-curses; }; nano = { enable = false; }; river = { enable = true; extraPackages = with pkgs; [ foot ]; }; }; virtualisation = { docker = { enable = true; enableOnBoot = true; }; }; 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"; }; }; }; # 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 # on your system were taken. It's perfectly fine and recommended to leave # 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). system.stateVersion = "24.05"; # Did you read the comment? }