mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-30 22:57:55 +00:00
4085fce69c
One of the bigger changes is to make the setup hardware-independent which is nice for easier (re-)installations. Finally about time it happens. Another big thing is the update of the README, now with some self-reminding pitch why choose NixOS (or something similar like GuixSD) which could be nice for other people too, provided they've come across my NixOS config. I made the module docstrings a bit more consistent (though still useless, to be honest). I've also updated config for Visual Studio Code.
84 lines
2.5 KiB
Nix
Executable File
84 lines
2.5 KiB
Nix
Executable File
# Author: Henrik Lissner <henrik@lissner.net>
|
|
# Modified by: Gabriel Arazas <foo.dogsquared@gmail.com>
|
|
# URL: https://github.com/foo-dogsquared/nixos-config
|
|
# License: MIT
|
|
#
|
|
# This is ground zero, where the absolute essentials go, to be present on all systems I use nixos on.
|
|
# Contains cluser-wide configurations shared between all of the systems (located in `hosts/`).
|
|
|
|
device: username:
|
|
{ pkgs, options, lib, config, ... }:
|
|
|
|
{
|
|
networking.hostName = lib.mkDefault device;
|
|
my.username = username;
|
|
|
|
imports = [
|
|
./modules
|
|
"${./hosts}/${device}"
|
|
] ++ (if builtins.pathExists(/etc/nixos/cachix.nix) then [
|
|
/etc/nixos/cachix.nix
|
|
] else []) ++ (if builtins.pathExists(/etc/nixos/hardware-configuration.nix) then [
|
|
/etc/nixos/hardware-configuration.nix
|
|
] else []) ++ (if builtins.pathExists(/mnt/etc/nixos/hardware-configuration.nix) then [
|
|
/mnt/etc/nixos/hardware-configuration.nix
|
|
] else []);
|
|
|
|
# GARBAGE DAY!
|
|
nix.gc = {
|
|
automatic = true;
|
|
dates = "daily";
|
|
options = "--delete-older-than 3d";
|
|
};
|
|
nix.autoOptimiseStore = true;
|
|
nix.nixPath = options.nix.nixPath.default ++ [
|
|
# So we can use absolute import paths
|
|
"bin=/etc/dotfiles/config/bin"
|
|
"config=/etc/dotfiles/config"
|
|
];
|
|
|
|
# Add custom packages & unstable channel, so they can be accessed via pkgs.*
|
|
nixpkgs.overlays = import ./packages;
|
|
nixpkgs.config.allowUnfree = true; # forgive me Stallman senpai
|
|
|
|
# These are the things I want installed on all my systems.
|
|
environment.systemPackages = with pkgs; [
|
|
# Just the bear necessities~
|
|
coreutils
|
|
exfat
|
|
git
|
|
hfsprogs
|
|
killall
|
|
ntfs3g
|
|
sshfs
|
|
udiskie
|
|
unzip
|
|
vim
|
|
wget
|
|
|
|
gnumake # for our own makefile
|
|
cachix # less time buildin' mo time nixin'
|
|
|
|
# nix-shell with the modified Nix path.
|
|
(writeScriptBin "nix-shell" ''
|
|
#!${stdenv.shell}
|
|
NIX_PATH="nixpkgs-overlays=/etc/dotfiles/packages/default.nix:$NIX_PATH" ${nix}/bin/nix-shell "$@"
|
|
'')
|
|
];
|
|
|
|
# Default settings for primary user account.
|
|
# `my` is defined in 'modules/default.nix'.
|
|
my.user = {
|
|
isNormalUser = true;
|
|
uid = 1000;
|
|
extraGroups = [ "wheel" "video" "libvirtd" ];
|
|
shell = pkgs.zsh;
|
|
};
|
|
|
|
# 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?
|
|
}
|