14 Commits

Author SHA1 Message Date
450118d234 remove dead code with deadnix 2023-02-20 20:45:56 -05:00
cc84f1d37a move nixos and darwin back into modules dir 2023-02-20 20:37:37 -05:00
ded498f4c9 switch from uuid to label disks 2023-02-20 20:30:45 -05:00
0d0ee1fc5a improve readme clarity 2023-02-20 20:26:14 -05:00
251dce68bb remove mitm ssl instructions 2023-02-20 20:13:52 -05:00
448c97665b move public-keys to root directory 2023-02-20 20:02:21 -05:00
86aa02aae4 rename patches directory to overlays 2023-02-20 20:00:54 -05:00
6cd22bc7ce remove bypass-paywalls-clean
no longer available from mozilla extensions
2023-02-20 17:49:19 -05:00
048de4772c rename 1password module with underscore 2023-02-20 17:49:00 -05:00
700e59e6c8 update outdated readme 2023-02-20 17:48:11 -05:00
07e0afa1e9 fix: iso generating 2023-02-20 17:32:14 -05:00
6577b9e49b initial setup for swan and staff 2023-02-18 10:24:54 -05:00
58a0e6166d allow reading windows ntfs drives 2023-02-17 18:15:23 -05:00
e8c5a10df7 attempt to set default apps for xdg-open 2023-02-17 18:14:57 -05:00
179 changed files with 196 additions and 117 deletions

View File

@ -1,3 +1,5 @@
# System Configurations
This repository contains configuration files for my NixOS, macOS, and WSL
hosts.
@ -6,31 +8,31 @@ configuration may be difficult to translate to a non-Nix system.
However, some of the configurations are easier to lift directly:
- [Neovim](https://github.com/nmasur/dotfiles/tree/master/modules/neovim/config)
- [Fish functions](https://github.com/nmasur/dotfiles/tree/master/modules/shell/fish/functions)
- [More fish aliases](https://github.com/nmasur/dotfiles/blob/master/modules/shell/fish/default.nix)
- [Git aliases](https://github.com/nmasur/dotfiles/blob/master/modules/shell/git.nix)
- [Neovim](https://github.com/nmasur/dotfiles/tree/master/modules/common/neovim/config)
- [Fish functions](https://github.com/nmasur/dotfiles/tree/master/modules/common/shell/fish/functions)
- [More fish aliases](https://github.com/nmasur/dotfiles/blob/master/modules/common/shell/fish/default.nix)
- [Git aliases](https://github.com/nmasur/dotfiles/blob/master/modules/common/shell/git.nix)
- [Hammerspoon](https://github.com/nmasur/dotfiles/tree/master/modules/darwin/hammerspoon)
Try out my Neovim config:
Try out my Neovim config (requires [nix](https://nixos.org/download.html)):
```bash
nix run github:nmasur/dotfiles#neovim
```
Or build it as a package:
Or build it as a package (requires [nix](https://nixos.org/download.html)):
```bash
nix build github:nmasur/dotfiles#neovim
```
If you already have a Neovim configuration, you may need to move it out of
`~/.config/nvim` or set `XDG_CONFIG_HOME` to another value; otherwise, both
`~/.config/nvim` or set `XDG_CONFIG_HOME` to another value; otherwise both
configs might conflict with each other.
---
# Installation
# Full Installation
## NixOS - From Live Disk
@ -42,7 +44,7 @@ installer disk:
```bash
lsblk # Choose the disk you want to wipe
nix-shell -p nixVersions.stable
nix run github:nmasur/dotfiles#installer -- nvme0n1 desktop
nix run github:nmasur/dotfiles#installer -- nvme0n1 tempest
```
## NixOS - From Existing System
@ -52,7 +54,7 @@ following command:
```bash
nix-shell -p nixVersions.stable
sudo nixos-rebuild switch --flake github:nmasur/dotfiles#desktop
sudo nixos-rebuild switch --flake github:nmasur/dotfiles#tempest
```
## Windows - From NixOS WSL
@ -63,7 +65,7 @@ the WSL configuration:
```
nix-shell -p nixVersions.stable
sudo nixos-rebuild switch --flake github:nmasur/dotfiles#wsl
sudo nixos-rebuild switch --flake github:nmasur/dotfiles#hydra
```
You should also download the
@ -90,17 +92,7 @@ nix-build https://github.com/LnL7/nix-darwin/archive/master.tar.gz -A installer
Then switch to the macOS configuration:
```bash
darwin-rebuild switch --flake github:nmasur/dotfiles#macbook
```
### Dealing with corporate MITM SSL certificates:
```bash
# Get the certificates
openssl s_client -showcerts -verify 5 -connect cache.nixos.org:443 < /dev/null
# Paste them in here
sudo nvim $NIX_SSL_CERT_FILE
darwin-rebuild switch --flake github:nmasur/dotfiles#lookingglass
```
---

View File

@ -57,7 +57,7 @@
neovim = {
type = "app";
program = "${
(import ../modules/neovim/package {
(import ../modules/common/neovim/package {
inherit pkgs;
colors =
import ../colorscheme/gruvbox/neovim-gruvbox.nix { inherit pkgs; };

View File

@ -11,7 +11,7 @@
tmpfile=$(mktemp)
echo "''${secret}" > ''${tmpfile}
${pkgs.age}/bin/age --encrypt --armor --recipients-file ${
builtins.toString ../hosts/public-keys
builtins.toString ../public-keys
} $tmpfile
rm $tmpfile
'');

View File

@ -17,7 +17,7 @@
--identity ~/.ssh/id_ed25519 $encryptedfile > $tmpfile
echo "Encrypting ''${encryptedfile}..."
${pkgs.age}/bin/age --encrypt --armor --recipients-file ${
builtins.toString ../hosts/public-keys
builtins.toString ../public-keys
} $tmpfile > $encryptedfile
rm $tmpfile
done

View File

@ -94,7 +94,7 @@
};
outputs = { self, nixpkgs, ... }@inputs:
outputs = { nixpkgs, ... }@inputs:
let
@ -112,7 +112,8 @@
overlays = [
inputs.nur.overlay
inputs.nix2vim.overlay
(import ./modules/neovim/plugins-overlay.nix inputs)
(import ./overlays/neovim-plugins.nix inputs)
(import ./overlays/calibre-web.nix)
];
# System types to support.
@ -128,6 +129,7 @@
tempest = import ./hosts/tempest { inherit inputs globals overlays; };
hydra = import ./hosts/hydra { inherit inputs globals overlays; };
flame = import ./hosts/flame { inherit inputs globals overlays; };
swan = import ./hosts/swan { inherit inputs globals overlays; };
};
darwinConfigurations = {
@ -149,11 +151,17 @@
aws = {
"${system}" =
import ./hosts/aws { inherit inputs globals system overlays; };
import ./generators/aws { inherit inputs globals system overlays; };
};
staff = {
"${system}" = import ./generators/staff {
inherit inputs globals system overlays;
};
};
neovim = let pkgs = import nixpkgs { inherit system overlays; };
in import ./modules/neovim/package {
in import ./modules/common/neovim/package {
inherit pkgs;
colors =
import ./colorscheme/gruvbox/neovim-gruvbox.nix { inherit pkgs; };

View File

@ -15,16 +15,16 @@ nixos-generators.nixosGenerate {
gitEmail = globals.gitEmail;
networking.hostName = "sheep";
gui.enable = false;
colorscheme = (import ../modules/colorscheme/gruvbox);
colorscheme = (import ../colorscheme/gruvbox);
passwordHash = null;
publicKey =
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s";
# AWS settings require this
permitRootLogin = "prohibit-password";
}
../../hosts/common.nix
../../modules/common
../../modules/nixos
../../modules/services/sshd.nix
../../modules/common/services/sshd.nix
] ++ [
# Required to fix diskSize errors during build
({ ... }: { amazonImage.sizeMB = 16 * 1024; })

View File

@ -0,0 +1,17 @@
# The Staff
# ISO configuration for my USB drive
{ inputs, system, ... }:
with inputs;
nixos-generators.nixosGenerate {
inherit system;
format = "install-iso";
modules = [{
networking.hostName = "staff";
users.extraUsers.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s"
];
}];
}

View File

@ -13,8 +13,8 @@ nixpkgs.lib.nixosSystem {
specialArgs = { };
modules = [
./hardware-configuration.nix
../../modules
../../nixos
../../modules/common
../../modules/nixos
(removeAttrs globals [ "mail.server" ])
wsl.nixosModules.wsl
home-manager.nixosModules.home-manager

View File

@ -1,7 +1,7 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ lib, modulesPath, ... }:
{
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];

View File

@ -9,8 +9,8 @@ nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { };
modules = [
../../modules
../../nixos
../../modules/common
../../modules/nixos
globals
wsl.nixosModules.wsl
home-manager.nixosModules.home-manager

View File

@ -9,8 +9,8 @@ darwin.lib.darwinSystem {
system = "x86_64-darwin";
specialArgs = { };
modules = [
../../modules
../../darwin
../../modules/common
../../modules/darwin
(globals // {
user = "Noah.Masur";
gitName = "Noah-Masur_1701";

48
hosts/swan/default.nix Normal file
View File

@ -0,0 +1,48 @@
# The Swan
# System configuration for my home NAS server
{ inputs, globals, overlays, ... }:
with inputs;
nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { };
modules = [
./hardware-configuration.nix
../../modules/common
../../modules/nixos
(removeAttrs globals [ "mail.server" ])
wsl.nixosModules.wsl
home-manager.nixosModules.home-manager
{
server = true;
gui.enable = false;
theme = { colors = (import ../../colorscheme/gruvbox).dark; };
nixpkgs.overlays = overlays;
wsl.enable = false;
caddy.enable = true;
networking.hostName = "swan";
# Disable passwords, only use SSH key
publicKey =
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s";
# Clone dotfiles
dotfiles.enable = true;
neovim.enable = true;
boot.zfs.enabled = true;
boot.kernelPackages =
config.boot.zfs.package.latestCompatibleLinuxPackages;
boot.zfs.extraPools = [ "mypool" ];
services.zfs.autoScrub.enable = true;
services.zfs.autoScrub.interval = "daily";
services.nfs.server.enable = true;
}
];
}

View File

@ -10,8 +10,8 @@ nixpkgs.lib.nixosSystem {
specialArgs = { };
modules = [
./hardware-configuration.nix
../../modules
../../nixos
../../modules/common
../../modules/nixos
globals
wsl.nixosModules.wsl
home-manager.nixosModules.home-manager
@ -37,7 +37,7 @@ nixpkgs.lib.nixosSystem {
media.enable = true;
firefox.enable = true;
kitty.enable = true;
"1password".enable = true;
_1password.enable = true;
discord.enable = true;
nautilus.enable = true;
obsidian.enable = true;

View File

@ -1,7 +1,7 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ config, lib, modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
@ -15,12 +15,12 @@
services.xserver.videoDrivers = [ "amdgpu" ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/f0313f58-971a-46e3-9191-909fe5eb7f7e";
device = "/dev/disk/by-label/nixos";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/FB26-799C";
device = "/dev/disk/by-label/boot";
fsType = "vfat";
};
@ -34,7 +34,7 @@
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true;
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
hardware.cpu.amd.updateMicrocode =
lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -1,21 +0,0 @@
{ config, pkgs, lib, ... }: {
options = {
media = {
enable = lib.mkEnableOption {
description = "Enable media programs.";
default = false;
};
};
};
config = lib.mkIf (config.gui.enable && config.media.enable) {
home-manager.users.${config.user}.home.packages = with pkgs; [
mpv # Video viewer
sxiv # Image viewer
mupdf # PDF viewer
zathura # PDF viewer
];
};
}

View File

@ -1,7 +1,7 @@
{ config, pkgs, lib, ... }: {
options = {
"1password" = {
_1password = {
enable = lib.mkEnableOption {
description = "Enable 1Password.";
default = false;
@ -10,7 +10,7 @@
};
config = lib.mkIf
(config.gui.enable && config."1password".enable && pkgs.stdenv.isLinux) {
(config.gui.enable && config._1password.enable && pkgs.stdenv.isLinux) {
unfreePackages = [ "1password" "_1password-gui" ];
home-manager.users.${config.user} = {
home.packages = with pkgs; [ _1password-gui ];

View File

@ -14,7 +14,7 @@
config = lib.mkIf (config.gui.enable && config.firefox.enable) {
unfreePackages = [
(lib.mkIf config."1password".enable "onepassword-password-manager")
(lib.mkIf config._1password.enable "onepassword-password-manager")
"okta-browser-plugin"
];
@ -34,12 +34,11 @@
multi-account-containers
facebook-container
temporary-containers
(lib.mkIf config."1password".enable onepassword-password-manager)
(lib.mkIf config._1password.enable onepassword-password-manager)
okta-browser-plugin
sponsorblock
reddit-enhancement-suite
return-youtube-dislikes
bypass-paywalls-clean
markdownload
darkreader
snowflake

View File

@ -0,0 +1,30 @@
{ config, pkgs, lib, ... }: {
options = {
media = {
enable = lib.mkEnableOption {
description = "Enable media programs.";
default = false;
};
};
};
config = lib.mkIf (config.gui.enable && config.media.enable) {
home-manager.users.${config.user} = {
home.packages = with pkgs; [
mpv # Video viewer
sxiv # Image viewer
mupdf # PDF viewer
zathura # PDF viewer
];
# Set default for opening PDFs
xdg.mimeApps.defaultApplications."application/pdf" =
[ "zathura.desktop" ];
xdg.mimeApps.defaultApplications."image/*" = [ "sxiv.desktop" ];
};
};
}

View File

@ -17,6 +17,10 @@
gnome.sushi # Quick preview with spacebar
];
# Set default for opening directories
xdg.mimeApps.defaultApplications."inode/directory" =
[ "nautilus.desktop" ];
programs.fish.functions = {
qr = {
body =

View File

@ -1,7 +1,7 @@
{ pkgs, ... }: {
plugins = [
(pkgs.vimPlugins.nvim-treesitter.withPlugins (plugins:
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_plugins:
with pkgs.tree-sitter-grammars; [
tree-sitter-hcl
tree-sitter-python

View File

@ -13,16 +13,16 @@
# in pkgs.neovimBuilder {
# package = pkgs.neovim-unwrapped;
# imports = [
# ./modules/neovim/plugins/bufferline.nix
# ./modules/neovim/plugins/completion.nix
# ./modules/neovim/plugins/gitsigns.nix
# ./modules/neovim/plugins/lsp.nix
# ./modules/neovim/plugins/misc.nix
# ./modules/neovim/plugins/statusline.nix
# ./modules/neovim/plugins/syntax.nix
# ./modules/neovim/plugins/telescope.nix
# ./modules/neovim/plugins/toggleterm.nix
# ./modules/neovim/plugins/tree.nix
# ./modules/common/neovim/plugins/bufferline.nix
# ./modules/common/neovim/plugins/completion.nix
# ./modules/common/neovim/plugins/gitsigns.nix
# ./modules/common/neovim/plugins/lsp.nix
# ./modules/common/neovim/plugins/misc.nix
# ./modules/common/neovim/plugins/statusline.nix
# ./modules/common/neovim/plugins/syntax.nix
# ./modules/common/neovim/plugins/telescope.nix
# ./modules/common/neovim/plugins/toggleterm.nix
# ./modules/common/neovim/plugins/tree.nix
# ] ++ extraConfig;
# }

View File

@ -1,4 +1,4 @@
{ config, pkgs, lib, ... }: {
{ ... }: {
imports = [
./haskell.nix

View File

@ -1,4 +1,4 @@
{ config, pkgs, lib, ... }: {
{ config, lib, ... }: {
options.haskell.enable = lib.mkEnableOption "Haskell programming language.";

View File

@ -1,4 +1,4 @@
{ config, pkgs, lib, ... }: {
{ config, pkgs, ... }: {
users.users.${config.user}.shell = pkgs.fish;
programs.fish.enable =

View File

@ -1,4 +1,4 @@
{ config, pkgs, lib, ... }: {
{ config, pkgs, ... }: {
home-manager.users.${config.user} = {
programs.fish = {

View File

@ -19,8 +19,8 @@ in {
# Fix: age won't build
nixpkgs.overlays = [
(final: prev: {
age = prev.age.overrideAttrs (old: {
(_final: prev: {
age = prev.age.overrideAttrs (_old: {
src = prev.fetchFromGitHub {
owner = "FiloSottile";
repo = "age";

View File

@ -1,4 +1,4 @@
{ config, ... }: {
{ ... }: {
imports = [
./alacritty.nix

Some files were not shown because too many files have changed in this diff Show More