Include NixOS into configuration #2
65
README.md
65
README.md
@ -1,3 +1,68 @@
|
||||
# Wyatt's Nix configuration
|
||||
|
||||
Designed and developed by Wyatt J. Miller, 2024
|
||||
|
||||
Licensed by the Mozilla Public License v2
|
||||
|
||||
## What is this??
|
||||
|
||||
This repository is my multi-machine Nix configuration, written in a Nix flake!
|
||||
|
||||
## How do I get this?
|
||||
|
||||
Make sure the following is installed:
|
||||
|
||||
- `git` (most operating systems come with git already installed)
|
||||
- `nix` (if you are on macOS or a non-NixOS system)
|
||||
|
||||
If you don't have `git` installed and are running macOS, run the following command:
|
||||
|
||||
```bash
|
||||
sudo xcode-select --install
|
||||
```
|
||||
|
||||
If you don't have `nix` installed and are running Linux, use the Determinate Nix Installer!
|
||||
|
||||
```bash
|
||||
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
|
||||
```
|
||||
|
||||
If you don't have `nix` installed and are running macOS, use the Determinate Nix Installer!
|
||||
|
||||
```bash
|
||||
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
|
||||
```
|
||||
|
||||
There's a separate installer Determinate Systems releases (and feel free to try it) but that's not on the install list here.
|
||||
|
||||
Once you got everything required, it's clonin' time!
|
||||
|
||||
```bash
|
||||
git clone https://scm.wyattjmiller.com/wymiller/nix-config-v2
|
||||
```
|
||||
|
||||
Once that's done, head to the next section.
|
||||
|
||||
## How do I run this?
|
||||
|
||||
For NixOS systems:
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#<hostname>
|
||||
```
|
||||
|
||||
For macOS systems:
|
||||
|
||||
```bash
|
||||
nix run nix-darwin --extra-experimental-features nix-command --extra-experimental-features flakes -- switch --flake .#<hostname>
|
||||
```
|
||||
|
||||
_or_
|
||||
|
||||
```bash
|
||||
darwin-rebuild switch --flake .#<hostname>
|
||||
```
|
||||
|
||||
where `<hostname>` is the particular configuration you would like to run.
|
||||
|
||||
Non-NixOS Linux systems should be coming soon!
|
||||
|
64
flake.lock
64
flake.lock
@ -3,19 +3,20 @@
|
||||
"darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs-darwin"
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1722082646,
|
||||
"narHash": "sha256-od8dBWVP/ngg0cuoyEl/w9D+TCNDj6Kh4tr151Aax7w=",
|
||||
"lastModified": 1730448474,
|
||||
"narHash": "sha256-qE/cYKBhzxHMtKtLK3hlSR3uzO1pWPGLrBuQK7r0CHc=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "0413754b3cdb879ba14f6e96915e5fdf06c6aab6",
|
||||
"rev": "683d0c4cd1102dcccfa3f835565378c7f3cbe05e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lnl7",
|
||||
"ref": "master",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
@ -27,16 +28,15 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1720042825,
|
||||
"narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=",
|
||||
"lastModified": 1730490306,
|
||||
"narHash": "sha256-AvCVDswOUM9D368HxYD25RsSKp+5o0L0/JHADjLoD38=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073",
|
||||
"rev": "1743615b61c7285976f85b303a36cdf88a556503",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-24.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
@ -57,34 +57,52 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"nix-ld": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1725407940,
|
||||
"narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3",
|
||||
"lastModified": 1728031945,
|
||||
"narHash": "sha256-NRkLjdMtVfC6dD1gEbYZWFEtbmC2xfD6ft1IP7l76Vw=",
|
||||
"owner": "Mic92",
|
||||
"repo": "nix-ld",
|
||||
"rev": "4524c512e8729ccb5a1b9239d01e1474cbf074a2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.05",
|
||||
"owner": "Mic92",
|
||||
"repo": "nix-ld",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1727634051,
|
||||
"narHash": "sha256-S5kVU7U82LfpEukbn/ihcyNt2+EvG7Z5unsKW9H/yFA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "06cf0e1da4208d3766d898b7fdab6513366d45b9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-darwin": {
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1725498621,
|
||||
"narHash": "sha256-m12se55InZz03onhRji85deKJp4i0jrw980aDdxT0IM=",
|
||||
"lastModified": 1726243404,
|
||||
"narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0409a1b650bb50c225485f2ca21c325eb33f45c7",
|
||||
"rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-24.05-darwin",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
@ -94,8 +112,8 @@
|
||||
"darwin": "darwin",
|
||||
"home-manager": "home-manager",
|
||||
"nix-flatpak": "nix-flatpak",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-darwin": "nixpkgs-darwin"
|
||||
"nix-ld": "nix-ld",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
83
flake.nix
83
flake.nix
@ -1,16 +1,16 @@
|
||||
{
|
||||
description = "Wyatt's nix configuration suite";
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1";
|
||||
nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-24.05-darwin";
|
||||
nix-ld.url = "github:Mic92/nix-ld";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-24.05";
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
darwin = {
|
||||
url = "github:lnl7/nix-darwin";
|
||||
inputs.nixpkgs.follows = "nixpkgs-darwin";
|
||||
url = "github:lnl7/nix-darwin/master";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
self,
|
||||
nixpkgs,
|
||||
nix-flatpak,
|
||||
nix-ld,
|
||||
darwin,
|
||||
home-manager,
|
||||
...
|
||||
@ -36,10 +37,10 @@
|
||||
hostname = "sephiroth";
|
||||
};
|
||||
modules = [
|
||||
./modules/nix-core.nix
|
||||
./modules/darwin/configuration.nix
|
||||
./modules/darwin/apps.nix
|
||||
./modules/host-users.nix
|
||||
./modules/common/core.nix
|
||||
./modules/common/users.nix
|
||||
./modules/machine/sephiroth/configuration.nix
|
||||
./modules/machine/sephiroth/apps.nix
|
||||
|
||||
home-manager.darwinModules.home-manager
|
||||
{
|
||||
@ -52,17 +53,19 @@
|
||||
};
|
||||
|
||||
# Primary desktop computer
|
||||
nixosConfiguration."cloud" = nixpkgs.lib.nixosSystem {
|
||||
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit userName userEmail;
|
||||
hostname = "cloud";
|
||||
};
|
||||
modules = [
|
||||
/etc/nixos/configuration.nix
|
||||
./modules/nix-core.nix
|
||||
./modules/nixos/configuration.nix
|
||||
./modules/host-users.nix
|
||||
nix-flatpak.nixosModules.nix-flatpak
|
||||
nix-ld.nixosModules.nix-ld
|
||||
./modules/common/core.nix
|
||||
./modules/common/users.nix
|
||||
./modules/machine/cloud/hardware-configuration.nix
|
||||
./modules/machine/cloud/configuration.nix
|
||||
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
@ -70,11 +73,61 @@
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.extraSpecialArgs = extraSpecialArgs;
|
||||
home-manager.users.${userName}.imports = [
|
||||
nix-flatpak.homeManagerModules.nix-flatpak
|
||||
./home
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
# Apartment appliance server
|
||||
nixosConfigurations."valefor" = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit userName userEmail;
|
||||
hostname = "valefor";
|
||||
};
|
||||
# modules = [
|
||||
# nix-ld.nixosModules.nix-ld
|
||||
# ./modules/nix-core.nix
|
||||
# ./modules/host-users.nix
|
||||
#
|
||||
# home-manager.nixosModules.home-manager
|
||||
# {
|
||||
# home-manager.useGlobalPkgs = true;
|
||||
# home-manager.useUserPackages = true;
|
||||
# home-manager.extraSpecialArgs = extraSpecialArgs;
|
||||
# home-manager.users.${userName}.imports = [
|
||||
# ./home
|
||||
# ];
|
||||
# }
|
||||
# ];
|
||||
};
|
||||
|
||||
# Storage, status, game, and media server
|
||||
nixosConfigurations."ixion" = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit userName userEmail;
|
||||
hostname = "ixion";
|
||||
};
|
||||
# modules = [
|
||||
# nix-flatpak.nixosModules.nix-flatpak
|
||||
# nix-ld.nixosModules.nix-ld
|
||||
# ./modules/nixos/hardware-configuration.nix
|
||||
# ./modules/nix-core.nix
|
||||
# ./modules/nixos/configuration.nix
|
||||
# ./modules/host-users.nix
|
||||
#
|
||||
# home-manager.nixosModules.home-manager
|
||||
# {
|
||||
# home-manager.useGlobalPkgs = true;
|
||||
# home-manager.useUserPackages = true;
|
||||
# home-manager.extraSpecialArgs = extraSpecialArgs;
|
||||
# home-manager.users.${userName}.imports = [
|
||||
# ./home
|
||||
# ];
|
||||
# }
|
||||
# ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ in {
|
||||
imports = map (module: import module {inherit lib pkgs dirs userName userEmail;}) [
|
||||
./atuin.nix
|
||||
./shell.nix
|
||||
./core.nix
|
||||
./packages
|
||||
./git.nix
|
||||
./starship.nix
|
||||
./eza.nix
|
||||
@ -33,9 +33,23 @@ in {
|
||||
if pkgs.stdenv.isDarwin
|
||||
then "/Users/${userName}"
|
||||
else "/home/${userName}";
|
||||
|
||||
sessionVariables = {
|
||||
XDG_CURRENT_DESKTOP = "sway";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
XDG_CONFIG_HOME = "$HOME/.config";
|
||||
XDG_CACHE_HOME = "$HOME/.cache";
|
||||
XDG_DATA_HOME = "$HOME/.local/share";
|
||||
XDG_STATE_HOME = "$HOME/.local/state";
|
||||
};
|
||||
|
||||
pointerCursor = lib.mkIf pkgs.stdenv.isLinux {
|
||||
gtk.enable = true;
|
||||
package = pkgs.catppuccin-cursors.mochaDark;
|
||||
name = "catppuccin-mocha-dark-cursors";
|
||||
size = 22;
|
||||
};
|
||||
|
||||
stateVersion = "24.05";
|
||||
};
|
||||
|
||||
|
@ -1,12 +1,6 @@
|
||||
{...}: {
|
||||
services.flatpak = {
|
||||
remotes = [
|
||||
{
|
||||
name = "flathub";
|
||||
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
||||
}
|
||||
];
|
||||
|
||||
enable = true;
|
||||
packages = [
|
||||
"com.github.tchx84.Flatseal"
|
||||
"com.slack.Slack"
|
||||
|
@ -32,7 +32,8 @@
|
||||
# common aliases
|
||||
br = "branch";
|
||||
co = "checkout";
|
||||
st = "status";
|
||||
st = "status -sb";
|
||||
status = "status -sb";
|
||||
ls = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate";
|
||||
ll = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --numstat";
|
||||
cm = "commit -m";
|
||||
|
@ -21,6 +21,9 @@
|
||||
fh
|
||||
aria2
|
||||
yt-dlp
|
||||
obsidian
|
||||
vscode
|
||||
weechat
|
||||
|
||||
# misc
|
||||
cowsay
|
||||
@ -43,17 +46,5 @@
|
||||
deadnix
|
||||
alejandra
|
||||
statix
|
||||
|
||||
# productivity
|
||||
iterm2
|
||||
discord
|
||||
obsidian
|
||||
vscode
|
||||
weechat
|
||||
# iamb
|
||||
ollama
|
||||
|
||||
# games?
|
||||
# prismlauncher
|
||||
];
|
||||
}
|
10
home/packages/darwin.nix
Normal file
10
home/packages/darwin.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
home.packages = lib.mkIf pkgs.stdenv.isDarwin (with pkgs; [
|
||||
discord
|
||||
ollama
|
||||
]);
|
||||
}
|
11
home/packages/default.nix
Normal file
11
home/packages/default.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./common.nix
|
||||
./darwin.nix
|
||||
./linux.nix
|
||||
];
|
||||
}
|
12
home/packages/linux.nix
Normal file
12
home/packages/linux.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
home.packages = lib.mkIf pkgs.stdenv.isLinux (with pkgs; [
|
||||
imv
|
||||
betterdiscordctl
|
||||
vesktop
|
||||
xdg-utils
|
||||
]);
|
||||
}
|
@ -69,4 +69,19 @@
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
initExtra = ''
|
||||
if [[ -z "$BASH_EXECUTION_STRING" ]]; then
|
||||
if [[ -n "$ZSH_VERSION" ]]; then
|
||||
LOGIN_OPTION="--login"
|
||||
else
|
||||
LOGIN_OPTION=""
|
||||
fi
|
||||
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||
fi
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
@ -1,6 +1,10 @@
|
||||
{pkgs, ...}: let
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
dirs = {
|
||||
defaults = ./defaults;
|
||||
defaults = ../defaults;
|
||||
};
|
||||
in {
|
||||
wayland.windowManager.sway = {
|
||||
@ -14,87 +18,14 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
programs.wofi.enable = pkgs.stdenv.isLinux;
|
||||
programs.mako.enable = pkgs.stdenv.isLinux;
|
||||
xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
|
||||
xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
|
||||
xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
|
||||
programs.rofi.enable = pkgs.stdenv.isLinux;
|
||||
services.mako.enable = pkgs.stdenv.isLinux;
|
||||
# programs.cliphist.enable = pkgs.stdenv.isLinux;
|
||||
programs.waybar = {
|
||||
enable = pkgs.stdenv.isLinux;
|
||||
systemd.enable = true;
|
||||
style = ''
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-family: "Monaspace Krypton";
|
||||
font-size: 13px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: #1f2335;
|
||||
border-bottom: 1px solid #24283b;
|
||||
color: #c0caf5;
|
||||
opacity: 0.808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 5px;
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
background: transparent;
|
||||
color: #c0caf5;
|
||||
border-bottom: 1px solid transparent;
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
background: #c0caf5;
|
||||
color: #1d2021;
|
||||
border-bottom: 1px solid #c0caf5;
|
||||
}
|
||||
|
||||
#cpu,
|
||||
#memory,
|
||||
#pulseaudio,
|
||||
#network,
|
||||
#battery,
|
||||
#clock,
|
||||
#custom-playerctl {
|
||||
padding: 0 10px;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
#battery.charging {
|
||||
color: #9ece6a;
|
||||
}
|
||||
|
||||
#battery.warning:not(.charging) {
|
||||
color: #ff9e64;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #1d2021;
|
||||
color: #ebdbb2;
|
||||
}
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
background: #f7768e;
|
||||
color: #ebdbb2;
|
||||
border-bottom: 1px solid #ebdbb2;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
color: #cc241d;
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
color: #cc241d;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
9
modules/common/README.md
Normal file
9
modules/common/README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Shared configurations
|
||||
|
||||
Developed and designed by Wyatt J. Miller, 2024
|
||||
|
||||
Licensed by the Mozilla Public License v2
|
||||
|
||||
## Synopsis
|
||||
|
||||
This is the directory that holds shared configuration files amongst computers that I own. They are called by the root `flake.nix` file.
|
@ -1,19 +1,14 @@
|
||||
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
# enable flakes globally
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# Auto upgrade nix package and the daemon service.
|
||||
services.nix-daemon.enable = true;
|
||||
# Use this instead of services.nix-daemon.enable if you
|
||||
# don't wan't the daemon service to be managed for you.
|
||||
# nix.useDaemon = true;
|
||||
|
||||
nix.package = pkgs.nix;
|
||||
|
||||
# do garbage collection weekly to keep disk usage low
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
userName,
|
||||
hostname,
|
||||
@ -6,22 +7,31 @@
|
||||
} @ args: {
|
||||
# Set up networking configuration
|
||||
networking.hostName = hostname;
|
||||
networking.computerName = hostname;
|
||||
# networking.computerName = hostname;
|
||||
# networking.firewall.enable = true; # VERY important, do not touch
|
||||
# networking.firewall.allowedTCPPorts = [];
|
||||
# networking.firewall.allowedUDPPorts = [];
|
||||
# networking.networkmanager.enable = pkgs.stdenv.isLinux; # Linux tool for managing network connections
|
||||
system.defaults.smb.NetBIOSName = hostname;
|
||||
# system.defaults.smb.NetBIOSName = hostname;
|
||||
|
||||
# Set up user accounts
|
||||
# Don't forget to set a password with ‘passwd’!
|
||||
users.users."${userName}" = {
|
||||
users.users."${userName}" = lib.mkMerge [
|
||||
{
|
||||
home =
|
||||
if pkgs.stdenv.isDarwin
|
||||
then "/Users/${userName}"
|
||||
else "/home/${userName}";
|
||||
description = userName;
|
||||
};
|
||||
}
|
||||
|
||||
(lib.mkIf (pkgs.stdenv.isLinux) {
|
||||
group = "${userName}";
|
||||
isNormalUser = true;
|
||||
})
|
||||
];
|
||||
|
||||
users.groups.wyatt = {};
|
||||
|
||||
nix.settings.trusted-users = [userName];
|
||||
}
|
15
modules/machine/README.md
Normal file
15
modules/machine/README.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Machine specific configuration directories
|
||||
|
||||
These are where the machine specific configurations live.
|
||||
|
||||
I like Final Fantasy, alright? Isn't everyone supposed to have a hobby?
|
||||
|
||||
## Naming schemes
|
||||
|
||||
### Desktops, Laptops, and Workstations
|
||||
|
||||
These are named after Final Fantasy VII characters.
|
||||
|
||||
### Servers/Network Infrastructure
|
||||
|
||||
These are named after Final Fantasy summons.
|
9
modules/machine/cloud/README.md
Normal file
9
modules/machine/cloud/README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Machine specific configuration - cloud
|
||||
|
||||
Designed and developed by Wyatt J. Miller, 2024
|
||||
|
||||
Licensed by the Mozilla Public License v2
|
||||
|
||||
## Synopsis
|
||||
|
||||
This directory is where the machine-specific configuration files for hostname `cloud` live, my primary desktop. These files get called by the root `flake.nix` file.
|
@ -1,16 +1,8 @@
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
userName,
|
||||
...
|
||||
}: {
|
||||
# Bring in the hardware configuration
|
||||
imports = [
|
||||
/etc/nixos/hardware-configuration.nix
|
||||
];
|
||||
|
||||
# Enable flakes for NixOS
|
||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||
|
||||
@ -20,9 +12,9 @@
|
||||
|
||||
# Install and enable common graphics drivers
|
||||
hardware.opengl = {
|
||||
driSupport = true;
|
||||
# driSupport = true;
|
||||
extraPackages = with pkgs; [
|
||||
mesa_drivers
|
||||
mesa
|
||||
libvdpau-va-gl
|
||||
libva
|
||||
libva-utils
|
||||
@ -34,17 +26,17 @@
|
||||
|
||||
# For systems with AMD graphics, this enables Vulkan on 32-bit applications
|
||||
# For 64-bit application, however, Vulkan is enabled by default
|
||||
hardware.graphics.driSupport32Bit = true;
|
||||
# hardware.graphics.driSupport32Bit = true;
|
||||
|
||||
# For systems with AMD graphics, enable AMDVLK
|
||||
hardware.hardware = {
|
||||
extraPackages = with pkgs; [
|
||||
amdvlk
|
||||
];
|
||||
extraPackages32 = with pkgs; [
|
||||
driversi686Linux
|
||||
];
|
||||
};
|
||||
#hardware.graphics = {
|
||||
# extraPackages = with pkgs; [
|
||||
# amdvlk
|
||||
# ];
|
||||
# extraPackages32 = with pkgs; [
|
||||
# driversi686Linux
|
||||
# ];
|
||||
#};
|
||||
|
||||
# Enable Bluetooth if present
|
||||
hardware.bluetooth.enable = true;
|
||||
@ -68,14 +60,21 @@
|
||||
git
|
||||
wireguard-tools
|
||||
podman
|
||||
buildah
|
||||
podman-tui
|
||||
podman-compose
|
||||
podman-desktop
|
||||
toolbox
|
||||
grim
|
||||
slurp
|
||||
playerctl
|
||||
light
|
||||
brightnessctl
|
||||
firefox
|
||||
wttrbar
|
||||
cliphist
|
||||
xivlauncher
|
||||
patchelf
|
||||
];
|
||||
|
||||
# Install system-wide fonts
|
||||
@ -120,16 +119,31 @@
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true;
|
||||
localNetworkGameTransfers = true;
|
||||
localNetworkGameTransfers.openFirewall = true;
|
||||
};
|
||||
|
||||
# Enable gamemode (gamemode, gamemoded, gamemoderun) when needed
|
||||
programs.gamemode.enable = true;
|
||||
|
||||
# Enable gamescope (compositor) when needed
|
||||
programs.gamescope.enable = true;
|
||||
|
||||
# Add username to groups "wheel" and "video" - more may be added here later
|
||||
users.users.${userName}.extraGroups = ["wheel" "video"];
|
||||
users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"];
|
||||
|
||||
# XDG stuff
|
||||
xdg = {
|
||||
portal = {
|
||||
enable = true;
|
||||
wlr.enable = true;
|
||||
config = {
|
||||
common = {
|
||||
default = [
|
||||
"wlr"
|
||||
];
|
||||
};
|
||||
};
|
||||
xdgOpenUsePortal = true;
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-wlr
|
||||
xdg-desktop-portal-gtk
|
||||
@ -139,10 +153,55 @@
|
||||
|
||||
# Firewall stuff not allowed in common user and network creation
|
||||
networking.firewall.enable = true; # VERY important, do not touch
|
||||
# networking.firewall.allowedTCPPorts = [];
|
||||
# networking.firewall.allowedUDPPorts = [];
|
||||
networking.firewall.allowedTCPPorts = [];
|
||||
networking.firewall.allowedUDPPorts = [];
|
||||
networking.networkmanager.enable = true; # Linux tool for managing network connections
|
||||
|
||||
# Enable Flatpak (app containerization)
|
||||
services.flatpak.enable = true;
|
||||
# services.flatpak.enable = true;
|
||||
services.flatpak = {
|
||||
enable = true;
|
||||
remotes = [
|
||||
{
|
||||
name = "flathub";
|
||||
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
||||
}
|
||||
];
|
||||
packages = [
|
||||
"com.github.tchx84.Flatseal"
|
||||
"com.slack.Slack"
|
||||
"info.beyondallreason.bar"
|
||||
"io.dbeaver.DBeaverCommunity"
|
||||
"io.openrct2.OpenRCT2"
|
||||
"md.obsidian.Obsidian"
|
||||
"org.prismlauncher.PrismLauncher"
|
||||
"sh.cider.Cider"
|
||||
];
|
||||
update = {
|
||||
auto = {
|
||||
enable = true;
|
||||
onCalendar = "weekly";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Enable Podman (OCI containers)
|
||||
virtualisation.podman = {
|
||||
enable = true;
|
||||
dockerSocket.enable = true;
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
};
|
||||
|
||||
services.shairport-sync = {
|
||||
enable = pkgs.stdenv.isLinux;
|
||||
openFirewall = pkgs.stdenv.isLinux;
|
||||
arguments = "-v -o pw";
|
||||
};
|
||||
|
||||
# users.users."${userName}" = {
|
||||
# group = "${userName}";
|
||||
# isNormalUser = true;
|
||||
# };
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
}
|
45
modules/machine/cloud/hardware-configuration.nix
Normal file
45
modules/machine/cloud/hardware-configuration.nix
Normal file
@ -0,0 +1,45 @@
|
||||
# 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,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"];
|
||||
boot.initrd.kernelModules = [];
|
||||
boot.kernelModules = ["kvm-amd"];
|
||||
boot.extraModulePackages = [];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-label/COMPUTER";
|
||||
fsType = "xfs";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-label/BOOT";
|
||||
fsType = "vfat";
|
||||
options = ["fmask=0022" "dmask=0022"];
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{device = "/dev/disk/by-label/SWAP";}
|
||||
];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp9s0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp8s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
9
modules/machine/ixion/README.md
Normal file
9
modules/machine/ixion/README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Machine specific configuration - ixion
|
||||
|
||||
Designed and developed by Wyatt J. Miller, 2024
|
||||
|
||||
Licensed by the Mozilla Public License v2
|
||||
|
||||
## Synopsis
|
||||
|
||||
This directory is currently empty so, currently, there's nothing to see! However, this is where the machine-specific configuration files for hostname `ixion` live, my storage, status, game, and media server. These files get called by the root `flake.nix` file.
|
9
modules/machine/sephiroth/README.md
Normal file
9
modules/machine/sephiroth/README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Machine specific configuration - sephiroth
|
||||
|
||||
Designed and developed by Wyatt J. Miller, 2024
|
||||
|
||||
Licensed by the Mozilla Public License v2
|
||||
|
||||
## Synopsis
|
||||
|
||||
This directory is where the machine-specific configuration files for hostname `sephiroth` live, my primary laptop. These files get called by the root `flake.nix` file.
|
@ -1,5 +1,4 @@
|
||||
{ pkgs, ... }: {
|
||||
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
neovim
|
||||
git
|
||||
@ -35,6 +34,8 @@
|
||||
];
|
||||
|
||||
casks = [
|
||||
"raycast"
|
||||
"jordanbaird-ice"
|
||||
];
|
||||
};
|
||||
}
|
@ -1,4 +1,8 @@
|
||||
{pkgs, ...}: {
|
||||
{
|
||||
pkgs,
|
||||
hostname,
|
||||
...
|
||||
}: {
|
||||
system = {
|
||||
# activationScripts are executed every time you boot the system or run `nixos-rebuild` / `darwin-rebuild`.
|
||||
activationScripts.postUserActivation.text = ''
|
||||
@ -145,6 +149,13 @@
|
||||
# };
|
||||
};
|
||||
|
||||
networking.hostName = hostname;
|
||||
networking.computerName = hostname;
|
||||
# networking.firewall.enable = true; # VERY important, do not touch
|
||||
# networking.firewall.allowedTCPPorts = [];
|
||||
# networking.firewall.allowedUDPPorts = [];
|
||||
system.defaults.smb.NetBIOSName = hostname;
|
||||
|
||||
# Add ability to used TouchID for sudo authentication
|
||||
security.pam.enableSudoTouchIdAuth = true;
|
||||
|
||||
@ -157,6 +168,14 @@
|
||||
pkgs.bash
|
||||
];
|
||||
|
||||
# Auto upgrade nix package and the daemon service.
|
||||
# services.nix-daemon.enable = true;
|
||||
# Use this instead of services.nix-daemon.enable if you
|
||||
# don't wan't the daemon service to be managed for you.
|
||||
services.nix-daemon.enable = true;
|
||||
|
||||
system.stateVersion = 5;
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/Detroit";
|
||||
}
|
9
modules/machine/valefor/README.md
Normal file
9
modules/machine/valefor/README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Machine specific configuration - valefor
|
||||
|
||||
Designed and developed by Wyatt J. Miller, 2024
|
||||
|
||||
Licensed by the Mozilla Public License v2
|
||||
|
||||
## Synopsis
|
||||
|
||||
This directory is currently empty so, currently, there's nothing to see! However, this is where the machine-specific configuration files for hostname `valefor` live, my apartment appliance server. These files get called by the root `flake.nix` file.
|
Loading…
Reference in New Issue
Block a user