Merge pull request 'Include NixOS into configuration' (#2) from nixos-snapshot-09092024 into master

Reviewed-on: #2
This commit is contained in:
Wyatt J. Miller 2024-11-17 17:16:08 -06:00
commit c0bc83552b
24 changed files with 490 additions and 186 deletions

View File

@ -1,3 +1,68 @@
# Wyatt's Nix configuration # Wyatt's Nix configuration
Designed and developed by Wyatt J. Miller, 2024 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!

View File

@ -3,19 +3,20 @@
"darwin": { "darwin": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs-darwin" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1722082646, "lastModified": 1730448474,
"narHash": "sha256-od8dBWVP/ngg0cuoyEl/w9D+TCNDj6Kh4tr151Aax7w=", "narHash": "sha256-qE/cYKBhzxHMtKtLK3hlSR3uzO1pWPGLrBuQK7r0CHc=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "0413754b3cdb879ba14f6e96915e5fdf06c6aab6", "rev": "683d0c4cd1102dcccfa3f835565378c7f3cbe05e",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "lnl7", "owner": "lnl7",
"ref": "master",
"repo": "nix-darwin", "repo": "nix-darwin",
"type": "github" "type": "github"
} }
@ -27,16 +28,15 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1720042825, "lastModified": 1730490306,
"narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=", "narHash": "sha256-AvCVDswOUM9D368HxYD25RsSKp+5o0L0/JHADjLoD38=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073", "rev": "1743615b61c7285976f85b303a36cdf88a556503",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -57,34 +57,52 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs": { "nix-ld": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": { "locked": {
"lastModified": 1725407940, "lastModified": 1728031945,
"narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=", "narHash": "sha256-NRkLjdMtVfC6dD1gEbYZWFEtbmC2xfD6ft1IP7l76Vw=",
"owner": "nixos", "owner": "Mic92",
"repo": "nixpkgs", "repo": "nix-ld",
"rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3", "rev": "4524c512e8729ccb5a1b9239d01e1474cbf074a2",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "Mic92",
"ref": "nixos-24.05", "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", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs-darwin": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1725498621, "lastModified": 1726243404,
"narHash": "sha256-m12se55InZz03onhRji85deKJp4i0jrw980aDdxT0IM=", "narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "0409a1b650bb50c225485f2ca21c325eb33f45c7", "rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixpkgs-24.05-darwin", "ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -94,8 +112,8 @@
"darwin": "darwin", "darwin": "darwin",
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs", "nix-ld": "nix-ld",
"nixpkgs-darwin": "nixpkgs-darwin" "nixpkgs": "nixpkgs_2"
} }
} }
}, },

View File

@ -1,16 +1,16 @@
{ {
description = "Wyatt's nix configuration suite"; description = "Wyatt's nix configuration suite";
inputs = { 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"; 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 = { home-manager = {
url = "github:nix-community/home-manager/release-24.05"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
darwin = { darwin = {
url = "github:lnl7/nix-darwin"; url = "github:lnl7/nix-darwin/master";
inputs.nixpkgs.follows = "nixpkgs-darwin"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
@ -18,6 +18,7 @@
self, self,
nixpkgs, nixpkgs,
nix-flatpak, nix-flatpak,
nix-ld,
darwin, darwin,
home-manager, home-manager,
... ...
@ -36,10 +37,10 @@
hostname = "sephiroth"; hostname = "sephiroth";
}; };
modules = [ modules = [
./modules/nix-core.nix ./modules/common/core.nix
./modules/darwin/configuration.nix ./modules/common/users.nix
./modules/darwin/apps.nix ./modules/machine/sephiroth/configuration.nix
./modules/host-users.nix ./modules/machine/sephiroth/apps.nix
home-manager.darwinModules.home-manager home-manager.darwinModules.home-manager
{ {
@ -52,17 +53,19 @@
}; };
# Primary desktop computer # Primary desktop computer
nixosConfiguration."cloud" = nixpkgs.lib.nixosSystem { nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { specialArgs = {
inherit userName userEmail; inherit userName userEmail;
hostname = "cloud"; hostname = "cloud";
}; };
modules = [ modules = [
/etc/nixos/configuration.nix nix-flatpak.nixosModules.nix-flatpak
./modules/nix-core.nix nix-ld.nixosModules.nix-ld
./modules/nixos/configuration.nix ./modules/common/core.nix
./modules/host-users.nix ./modules/common/users.nix
./modules/machine/cloud/hardware-configuration.nix
./modules/machine/cloud/configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
@ -70,11 +73,61 @@
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = extraSpecialArgs; home-manager.extraSpecialArgs = extraSpecialArgs;
home-manager.users.${userName}.imports = [ home-manager.users.${userName}.imports = [
nix-flatpak.homeManagerModules.nix-flatpak
./home ./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
# ];
# }
# ];
};
}; };
} }

View File

@ -15,7 +15,7 @@ in {
imports = map (module: import module {inherit lib pkgs dirs userName userEmail;}) [ imports = map (module: import module {inherit lib pkgs dirs userName userEmail;}) [
./atuin.nix ./atuin.nix
./shell.nix ./shell.nix
./core.nix ./packages
./git.nix ./git.nix
./starship.nix ./starship.nix
./eza.nix ./eza.nix
@ -33,9 +33,23 @@ in {
if pkgs.stdenv.isDarwin if pkgs.stdenv.isDarwin
then "/Users/${userName}" then "/Users/${userName}"
else "/home/${userName}"; else "/home/${userName}";
sessionVariables = { sessionVariables = {
XDG_CURRENT_DESKTOP = "sway"; 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"; stateVersion = "24.05";
}; };

View File

@ -1,12 +1,6 @@
{...}: { {...}: {
services.flatpak = { services.flatpak = {
remotes = [ enable = true;
{
name = "flathub";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}
];
packages = [ packages = [
"com.github.tchx84.Flatseal" "com.github.tchx84.Flatseal"
"com.slack.Slack" "com.slack.Slack"

View File

@ -32,7 +32,8 @@
# common aliases # common aliases
br = "branch"; br = "branch";
co = "checkout"; co = "checkout";
st = "status"; st = "status -sb";
status = "status -sb";
ls = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate"; 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"; ll = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --numstat";
cm = "commit -m"; cm = "commit -m";

View File

@ -21,6 +21,9 @@
fh fh
aria2 aria2
yt-dlp yt-dlp
obsidian
vscode
weechat
# misc # misc
cowsay cowsay
@ -43,17 +46,5 @@
deadnix deadnix
alejandra alejandra
statix statix
# productivity
iterm2
discord
obsidian
vscode
weechat
# iamb
ollama
# games?
# prismlauncher
]; ];
} }

10
home/packages/darwin.nix Normal file
View 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
View File

@ -0,0 +1,11 @@
{
pkgs,
lib,
...
}: {
imports = [
./common.nix
./darwin.nix
./linux.nix
];
}

12
home/packages/linux.nix Normal file
View File

@ -0,0 +1,12 @@
{
pkgs,
lib,
...
}: {
home.packages = lib.mkIf pkgs.stdenv.isLinux (with pkgs; [
imv
betterdiscordctl
vesktop
xdg-utils
]);
}

View File

@ -69,4 +69,19 @@
fi 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
'';
};
} }

View File

@ -1,6 +1,10 @@
{pkgs, ...}: let {
lib,
pkgs,
...
}: let
dirs = { dirs = {
defaults = ./defaults; defaults = ../defaults;
}; };
in { in {
wayland.windowManager.sway = { wayland.windowManager.sway = {
@ -14,87 +18,14 @@ in {
}; };
}; };
programs.wofi.enable = pkgs.stdenv.isLinux; xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
programs.mako.enable = pkgs.stdenv.isLinux; 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.cliphist.enable = pkgs.stdenv.isLinux;
programs.waybar = { programs.waybar = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
systemd.enable = true; 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
View 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.

View File

@ -1,19 +1,14 @@
{ pkgs, lib, ... }:
{ {
pkgs,
lib,
...
}: {
# enable flakes globally # enable flakes globally
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = ["nix-command" "flakes"];
# Allow unfree packages # Allow unfree packages
nixpkgs.config.allowUnfree = true; 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; nix.package = pkgs.nix;
# do garbage collection weekly to keep disk usage low # do garbage collection weekly to keep disk usage low

View File

@ -1,4 +1,5 @@
{ {
lib,
pkgs, pkgs,
userName, userName,
hostname, hostname,
@ -6,22 +7,31 @@
} @ args: { } @ args: {
# Set up networking configuration # Set up networking configuration
networking.hostName = hostname; networking.hostName = hostname;
networking.computerName = hostname; # networking.computerName = hostname;
# networking.firewall.enable = true; # VERY important, do not touch # networking.firewall.enable = true; # VERY important, do not touch
# networking.firewall.allowedTCPPorts = []; # networking.firewall.allowedTCPPorts = [];
# networking.firewall.allowedUDPPorts = []; # networking.firewall.allowedUDPPorts = [];
# networking.networkmanager.enable = pkgs.stdenv.isLinux; # Linux tool for managing network connections # 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 # Set up user accounts
# Don't forget to set a password with passwd! # Don't forget to set a password with passwd!
users.users."${userName}" = { users.users."${userName}" = lib.mkMerge [
home = {
if pkgs.stdenv.isDarwin home =
then "/Users/${userName}" if pkgs.stdenv.isDarwin
else "/home/${userName}"; then "/Users/${userName}"
description = userName; else "/home/${userName}";
}; description = userName;
}
(lib.mkIf (pkgs.stdenv.isLinux) {
group = "${userName}";
isNormalUser = true;
})
];
users.groups.wyatt = {};
nix.settings.trusted-users = [userName]; nix.settings.trusted-users = [userName];
} }

15
modules/machine/README.md Normal file
View 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.

View 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.

View File

@ -1,16 +1,8 @@
{ {
inputs,
config,
lib,
pkgs, pkgs,
userName, userName,
... ...
}: { }: {
# Bring in the hardware configuration
imports = [
/etc/nixos/hardware-configuration.nix
];
# Enable flakes for NixOS # Enable flakes for NixOS
nix.settings.experimental-features = ["nix-command" "flakes"]; nix.settings.experimental-features = ["nix-command" "flakes"];
@ -20,9 +12,9 @@
# Install and enable common graphics drivers # Install and enable common graphics drivers
hardware.opengl = { hardware.opengl = {
driSupport = true; # driSupport = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; [
mesa_drivers mesa
libvdpau-va-gl libvdpau-va-gl
libva libva
libva-utils libva-utils
@ -34,17 +26,17 @@
# For systems with AMD graphics, this enables Vulkan on 32-bit applications # For systems with AMD graphics, this enables Vulkan on 32-bit applications
# For 64-bit application, however, Vulkan is enabled by default # 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 # For systems with AMD graphics, enable AMDVLK
hardware.hardware = { #hardware.graphics = {
extraPackages = with pkgs; [ # extraPackages = with pkgs; [
amdvlk # amdvlk
]; # ];
extraPackages32 = with pkgs; [ # extraPackages32 = with pkgs; [
driversi686Linux # driversi686Linux
]; # ];
}; #};
# Enable Bluetooth if present # Enable Bluetooth if present
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
@ -68,14 +60,21 @@
git git
wireguard-tools wireguard-tools
podman podman
buildah
podman-tui
podman-compose
podman-desktop
toolbox toolbox
grim grim
slurp slurp
playerctl playerctl
light light
brightnessctl brightnessctl
firefox
wttrbar wttrbar
cliphist cliphist
xivlauncher
patchelf
]; ];
# Install system-wide fonts # Install system-wide fonts
@ -120,16 +119,31 @@
programs.steam = { programs.steam = {
enable = true; enable = true;
remotePlay.openFirewall = 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 # 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 stuff
xdg = { xdg = {
portal = { portal = {
enable = true; enable = true;
wlr.enable = true;
config = {
common = {
default = [
"wlr"
];
};
};
xdgOpenUsePortal = true;
extraPortals = with pkgs; [ extraPortals = with pkgs; [
xdg-desktop-portal-wlr xdg-desktop-portal-wlr
xdg-desktop-portal-gtk xdg-desktop-portal-gtk
@ -139,10 +153,55 @@
# Firewall stuff not allowed in common user and network creation # Firewall stuff not allowed in common user and network creation
networking.firewall.enable = true; # VERY important, do not touch networking.firewall.enable = true; # VERY important, do not touch
# networking.firewall.allowedTCPPorts = []; networking.firewall.allowedTCPPorts = [];
# networking.firewall.allowedUDPPorts = []; networking.firewall.allowedUDPPorts = [];
networking.networkmanager.enable = true; # Linux tool for managing network connections networking.networkmanager.enable = true; # Linux tool for managing network connections
# Enable Flatpak (app containerization) # 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";
} }

View 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;
}

View 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.

View 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.

View File

@ -1,5 +1,4 @@
{ pkgs, ... }: { {pkgs, ...}: {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
neovim neovim
git git
@ -19,7 +18,7 @@
# Applications to install from Mac App Store using mas. # Applications to install from Mac App Store using mas.
# You need to install all these Apps manually first so that your apple account have records for them. # You need to install all these Apps manually first so that your apple account have records for them.
# otherwise Apple Store will refuse to install them. # otherwise Apple Store will refuse to install them.
# For details, see https://github.com/mas-cli/mas # For details, see https://github.com/mas-cli/mas
masApps = { masApps = {
Xcode = 497799835; Xcode = 497799835;
"Reeder 5." = 1529448980; "Reeder 5." = 1529448980;
@ -35,6 +34,8 @@
]; ];
casks = [ casks = [
"raycast"
"jordanbaird-ice"
]; ];
}; };
} }

View File

@ -1,4 +1,8 @@
{pkgs, ...}: { {
pkgs,
hostname,
...
}: {
system = { system = {
# activationScripts are executed every time you boot the system or run `nixos-rebuild` / `darwin-rebuild`. # activationScripts are executed every time you boot the system or run `nixos-rebuild` / `darwin-rebuild`.
activationScripts.postUserActivation.text = '' 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 # Add ability to used TouchID for sudo authentication
security.pam.enableSudoTouchIdAuth = true; security.pam.enableSudoTouchIdAuth = true;
@ -157,6 +168,14 @@
pkgs.bash 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. # Set your time zone.
time.timeZone = "America/Detroit"; time.timeZone = "America/Detroit";
} }

View 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.