diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..205df23 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "git.enabled": false +} \ No newline at end of file diff --git a/hosts/cobalt/boot.nix b/hosts/cobalt/boot.nix new file mode 100644 index 0000000..e1f16ff --- /dev/null +++ b/hosts/cobalt/boot.nix @@ -0,0 +1,6 @@ +{}: +{ + # Default to systemd-boot + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; +} \ No newline at end of file diff --git a/hosts/cobalt/default.nix b/hosts/cobalt/default.nix index 61dcaa5..d60b1f2 100644 --- a/hosts/cobalt/default.nix +++ b/hosts/cobalt/default.nix @@ -1,6 +1,7 @@ { inputs, ... }: { imports = [ + ./boot.nix ../../modules/nixos/base.nix ../../modules/nixos/audio.nix #../../modules/nixos/desktop.nix diff --git a/hosts/lithium/boot.nix b/hosts/lithium/boot.nix new file mode 100644 index 0000000..e1f16ff --- /dev/null +++ b/hosts/lithium/boot.nix @@ -0,0 +1,6 @@ +{}: +{ + # Default to systemd-boot + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; +} \ No newline at end of file diff --git a/hosts/lithium/default.nix b/hosts/lithium/default.nix index 61582b1..30fbf84 100644 --- a/hosts/lithium/default.nix +++ b/hosts/lithium/default.nix @@ -1,6 +1,7 @@ { inputs, ... }: { imports = [ + ./boot.nix ../../modules/nixos/base.nix inputs.sops-nix.nixosModules.sops ./hardware.nix diff --git a/hosts/neon/boot.nix b/hosts/neon/boot.nix new file mode 100644 index 0000000..e1f16ff --- /dev/null +++ b/hosts/neon/boot.nix @@ -0,0 +1,6 @@ +{}: +{ + # Default to systemd-boot + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; +} \ No newline at end of file diff --git a/hosts/neon/default.nix b/hosts/neon/default.nix index bfe9f0c..231f6da 100644 --- a/hosts/neon/default.nix +++ b/hosts/neon/default.nix @@ -1,6 +1,7 @@ { inputs, ... }: { imports = [ + ./boot.nix ../../modules/nixos/base.nix ../../modules/nixos/audio.nix ../../modules/nixos/desktop diff --git a/modules/nixos/base.nix b/modules/nixos/base.nix index 036a5c9..d273887 100644 --- a/modules/nixos/base.nix +++ b/modules/nixos/base.nix @@ -1,18 +1,23 @@ { config, pkgs, lib, ... }: { nixpkgs.config.allowUnfree = true; + # TODO: Consider adding a randomized delay. + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; nix.settings = { + auto-optimise-store = true; experimental-features = [ "nix-command" "flakes" ]; }; - # Default to systemd-boot - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - # https://datatracker.ietf.org/doc/html/rfc8375 - networking.domain = "home.arpa"; + networking.domain = lib.mkDefault "home.arpa"; - time.timeZone = "America/Chicago"; + # TODO: Consider enabling automatic-timezoned on laptops that move between TZs + time.timeZone = lib.mkDefault "America/Chicago"; + services.automatic-timezoned.enable = lib.mkDefault false; i18n.defaultLocale = "en_US.UTF-8"; i18n.extraLocaleSettings = { @@ -73,38 +78,39 @@ ]; # Render colors # TODO: Figure out how to represent those termcap sequences properly. - #LESS_TERMCAP_mb=$'\E[1;31m' # begin bold - #LESS_TERMCAP_md=$'\E[1;36m' # begin blink - #LESS_TERMCAP_me=$'\E[0m' # reset bold/blink - #LESS_TERMCAP_so=$'\E[01;44;33m' # begin reverse video - #LESS_TERMCAP_se=$'\E[0m' # reset reverse video - #LESS_TERMCAP_us=$'\E[1;32m' # begin underline - #LESS_TERMCAP_ue=$'\E[0m' # reset underline + LESS_TERMCAP_mb="\E[1;31m"; # begin bold + LESS_TERMCAP_md="\E[1;36m"; # begin blink + LESS_TERMCAP_me="\E[0m"; # reset bold/blink + LESS_TERMCAP_so="\E[01;44;33m"; # begin reverse video + LESS_TERMCAP_se="\E[0m"; # reset reverse video + LESS_TERMCAP_us="\E[1;32m"; # begin underline + LESS_TERMCAP_ue="\E[0m"; # reset underline }; }; git.enable = true; htop.enable = true; - command-not-found.enable = false; bat.enable = true; bandwhich.enable = true; + command-not-found.enable = false; + #nix-index.enable = true; + nano.enable = false; neovim = { enable = true; defaultEditor = true; - viAlias = true; vimAlias = true; - - withRuby = true; - withPython3 = true; - withNodeJs = true; - - #configure = {}; }; }; - # Services running on all machines - services.avahi.enable = true; # zeroconf/mDNS(.local) + services.openssh.enable = lib.mkDefault false; + # services.openssh = { + # enable = true; + # settings = { + # PasswordAuthentication = false; + # PermitRootLogin = "no"; + # }; + # }; } diff --git a/modules/nixos/desktop/default.nix b/modules/nixos/desktop/default.nix index ff03a1c..6c76134 100644 --- a/modules/nixos/desktop/default.nix +++ b/modules/nixos/desktop/default.nix @@ -2,12 +2,14 @@ { imports = [ ./calibre.nix - ./fonts.nix + ../fonts.nix ]; # TODO: Add options for enabling/switching between different Desktop Environments. - options = {}; + # options = {}; + # NOTE: Calibre is enabled this way because it also needs udisks2 for e-readers + # Ideally I move it somewhere else anyway. zw.calibre.enable = true; environment.systemPackages = with pkgs; [ @@ -41,4 +43,5 @@ }; # screen sharing /w hyp services.dbus.enable = true; + services.avahi.enable = true; # zeroconf/mDNS(.local) } diff --git a/modules/nixos/fonts.nix b/modules/nixos/fonts.nix index e39de7a..7d3eca8 100644 --- a/modules/nixos/fonts.nix +++ b/modules/nixos/fonts.nix @@ -1,4 +1,4 @@ -{pkgs}: +{ pkgs, ... }: { fonts.packages = with pkgs; [ nerd-fonts.fira-code diff --git a/users/jml/home.nix b/users/jml/home.nix index f056c62..e2fa5eb 100644 --- a/users/jml/home.nix +++ b/users/jml/home.nix @@ -73,6 +73,11 @@ helix.enable = true; zoxide.enable = true; fd.enable = true; + + difftastic.enable = true; + difftastic.git.enable = true; + difftastic.git.diffToolMode = true; + mergiraf.enable = true; }; programs.starship = { @@ -522,9 +527,9 @@ programs.vscode = { enable = true; mutableExtensionsDir = true; # mutually exclusive to programs.vscode.profiles - profiles.default.userSettings = { - "[nix]"."editor.tabSize" = 2; - }; + # profiles.default.userSettings = { + # "[nix]"."editor.tabSize" = 2; + # }; }; # services.podman.enable = true; }