194 lines
5.4 KiB
Nix
194 lines
5.4 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
let
|
|
inherit (import ../lib.nix {
|
|
inherit lib;
|
|
inherit pkgs;
|
|
})
|
|
nLib;
|
|
in {
|
|
imports = [
|
|
../options.nix
|
|
../common/programs/utils.nix
|
|
./user.nix
|
|
./fonts.nix
|
|
./settings.nix
|
|
./media.nix
|
|
./creative.nix
|
|
./games.nix
|
|
];
|
|
|
|
options = with lib;
|
|
with nLib; {
|
|
nathan = {
|
|
config = {
|
|
# Install fonts
|
|
# On by default if the system is a desktop
|
|
fonts = mkDefaultOption "fonts" config.nathan.config.isDesktop;
|
|
# Macos settings
|
|
settings = mkDefaultOption "settings" config.nathan.config.isDesktop;
|
|
};
|
|
programs = {
|
|
# Firefox, enabled by default on linux desktop
|
|
firefox = mkDefaultOption "Firefox" config.nathan.config.isDesktop;
|
|
syncthing =
|
|
mkDefaultOption "syncthing" config.nathan.config.isDesktop;
|
|
# Communications applications
|
|
communications = {
|
|
# Enable by default if we are on a linux desktop
|
|
enable = mkDefaultOption "Communication applications"
|
|
config.nathan.config.isDesktop;
|
|
};
|
|
games = {
|
|
# Enable by default if we are on a linux desktop
|
|
enable = mkDefaultOption "games" config.nathan.config.isDesktop;
|
|
};
|
|
media = {
|
|
# Enable by default if we are on a linux desktop
|
|
enable = mkDefaultOption "Media applications"
|
|
config.nathan.config.isDesktop;
|
|
};
|
|
creative = {
|
|
# Enable by default if we are on a linux desktop
|
|
enable = mkDefaultOption "Creativity applications"
|
|
config.nathan.config.isDesktop;
|
|
};
|
|
# Virtualization
|
|
virtualization =
|
|
mkDefaultOption "Virtualization" config.nathan.config.isDesktop;
|
|
# development tools
|
|
devel = {
|
|
python =
|
|
mkDefaultOption "Virtualization" config.nathan.config.isDesktop;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
config = {
|
|
# Link applications in spotlight/launchpad
|
|
system.activationScripts.applications.text = pkgs.lib.mkForce (''
|
|
echo "setting up ~/Applications..." >&2
|
|
rm -rf ~/Applications/Nix\ Apps
|
|
mkdir -p ~/Applications/Nix\ Apps
|
|
for app in $(find ${config.system.build.applications}/Applications -maxdepth 1 -type l); do
|
|
src="$(/usr/bin/stat -f%Y "$app")"
|
|
cp -r "$src" ~/Applications/Nix\ Apps
|
|
done
|
|
'');
|
|
# Set system state version
|
|
system.stateVersion = 4;
|
|
# Enable flakes
|
|
# Enable nix flakes
|
|
nix.package = pkgs.nixFlakes;
|
|
nix.extraOptions = ''
|
|
experimental-features = nix-command flakes
|
|
'';
|
|
services.nix-daemon.enable = true;
|
|
# Replace some macos packages
|
|
environment.systemPackages = with pkgs; [ coreutils-full openssh ];
|
|
programs.zsh.enable = true;
|
|
programs.fish.enable = true;
|
|
# Make nix managed fonts work
|
|
fonts.fontDir.enable = true;
|
|
# Configure nix to be a lil smarter with the store
|
|
nix.settings.auto-optimise-store = true;
|
|
# Make nix assume control of homebrew
|
|
homebrew = {
|
|
enable = true;
|
|
onActivation = {
|
|
autoUpdate = true;
|
|
upgrade = true;
|
|
cleanup = "zap";
|
|
};
|
|
taps = [ "homebrew/cask-versions" "homebrew/services" ];
|
|
casks = lib.mkMerge [
|
|
(lib.mkIf config.nathan.programs.firefox [{
|
|
name = "firefox";
|
|
greedy = true;
|
|
}])
|
|
(lib.mkIf config.nathan.programs.virtualization [{
|
|
name = "utm";
|
|
greedy = true;
|
|
}])
|
|
(lib.mkIf config.nathan.programs.devel.python [{
|
|
name = "miniconda";
|
|
greedy = true;
|
|
}])
|
|
(lib.mkIf config.nathan.programs.communications.enable [
|
|
{
|
|
name = "discord";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "betterdiscord-installer";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "signal";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "orangedrangon-android-messages";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "messenger";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "whalebird";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "slack";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "zulip";
|
|
greedy = true;
|
|
}
|
|
])
|
|
# Unconditionally install core utilites
|
|
[
|
|
{
|
|
name = "keepingyouawake";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "flux";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "iterm2";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "gpg-suite";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "amethyst";
|
|
greedy = true;
|
|
}
|
|
{
|
|
name = "podman-desktop";
|
|
greedy = true;
|
|
}
|
|
# Original is unmaintaned, wait for this fork
|
|
# https://github.com/UeharaYou/HiddenBar
|
|
# { name = "hiddenbar"; }
|
|
]
|
|
];
|
|
brews = lib.mkMerge [
|
|
(lib.mkIf config.nathan.programs.syncthing [{
|
|
name = "syncthing";
|
|
restart_service = true;
|
|
start_service = true;
|
|
}])
|
|
# Unconditionally install core utilities
|
|
[{ name = "podman"; }]
|
|
];
|
|
};
|
|
};
|
|
}
|