16 Commits

Author SHA1 Message Date
0c1763528e added base configuration for ixion, applied system update, modified power mgmt readme 2025-10-05 23:11:47 -04:00
59ed5f0463 created easy wrapper for quadlet-nix 2025-10-05 23:10:47 -04:00
aa47f720ed Merge branch 'master' into ixion-build 2025-10-04 20:37:41 -04:00
a3c53820b1 added sleep inhibiting aliases to fish 2025-10-02 18:44:58 -04:00
8cbdeb4cdc Merge pull request 'Superuser bypass' (#2) from macos-superuser-bypass-refactor into master
Reviewed-on: #2
2025-10-02 08:59:47 -05:00
bfa957adcd flake update 2025-10-02 09:58:03 -04:00
50d22afef8 Merge branch 'master' into macos-superuser-bypass-refactor 2025-10-02 08:25:09 -04:00
29feb9223e fixed git config
i think i am reverting a false fix, idk
2025-09-21 11:55:46 -04:00
7bc7749f51 fixed focusrite module 2025-09-21 11:55:14 -04:00
93052529b8 modified things 2025-09-13 16:30:26 -04:00
51beed138e added dedicated focusrite scarlett, appimage modules, modified cloud
these new modules include only packages, no other configuration. maybe
later but none currently
2025-09-13 16:09:21 -04:00
faed026258 some formatting modifications 2025-09-04 14:05:36 -04:00
3af5061a79 system update 2025-08-27 11:31:11 -04:00
ddd3fb39e4 bulk of the refactor 2025-08-27 11:31:06 -04:00
6ff4e13b03 flake update 2025-08-12 09:14:50 -04:00
831fce71b8 added quadlet-nix input, created initial ixion config, created wrapper around quadlets
also wrote some doucumentation about quadlets, nothing too comprehesive
though as the wrapper might get removed later
2025-06-01 19:04:38 -04:00
17 changed files with 425 additions and 138 deletions

75
flake.lock generated
View File

@@ -7,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749744770, "lastModified": 1757432263,
"narHash": "sha256-MEM9XXHgBF/Cyv1RES1t6gqAX7/tvayBC1r/KPyK1ls=", "narHash": "sha256-qHn+/0+IOz5cG68BZUwL9BV3EO/e9eNKCjH3+N7wMdI=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "536f951efb1ccda9b968e3c9dee39fbeb6d3fdeb", "rev": "1fef4404de4d1596aa5ab2bd68078370e1b9dcdb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -64,11 +64,11 @@
"zon2nix": "zon2nix" "zon2nix": "zon2nix"
}, },
"locked": { "locked": {
"lastModified": 1751123364, "lastModified": 1759330332,
"narHash": "sha256-Nb3pxs1onnbdhhnoNc+IfHzrW9dM+UbEdjK0AguR2J4=", "narHash": "sha256-ZKyOgOOm9Itjbc5xi89xMtw+cnnOFfl79zndPMTzKpU=",
"owner": "ghostty-org", "owner": "ghostty-org",
"repo": "ghostty", "repo": "ghostty",
"rev": "f6d1c274b9c0e095dc0a1b411dec7410ad779bf5", "rev": "a5aff0e347b0016e2735d4ec4b4cdca96b5438d1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -84,11 +84,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1750792728, "lastModified": 1758463745,
"narHash": "sha256-Lh3dopA8DdY+ZoaAJPrtkZOZaFEJGSYjOdAYYgOPgE4=", "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "366f00797b1efb70f2882d3da485e3c10fd3d557", "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -129,11 +129,24 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1750969886, "lastModified": 1758360447,
"narHash": "sha256-zW/OFnotiz/ndPFdebpo3X0CrbVNf22n4DjN2vxlb58=", "narHash": "sha256-XDY3A83bclygHDtesRoaRTafUd80Q30D/Daf9KSG6bs=",
"rev": "8eaee110344796db060382e15d3af0a9fc396e0e",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-25.11pre864002.8eaee1103447/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1759281824,
"narHash": "sha256-FIBE1qXv9TKvSNwst6FumyHwCRH3BlWDpfsnqRDCll0=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a676066377a2fe7457369dd37c31fd2263b662f4", "rev": "5b5be50345d4113d04ba58c444348849f5585b4a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -143,13 +156,29 @@
"type": "github" "type": "github"
} }
}, },
"quadlet-nix": {
"locked": {
"lastModified": 1758631655,
"narHash": "sha256-EGeZ963L7xsNAY7snvP1JHQe7LWLVCM6f49+PzWjhEE=",
"owner": "SEIAROTg",
"repo": "quadlet-nix",
"rev": "2ebe01b175e2e1e6de3f172d23f0c3b88713eec9",
"type": "github"
},
"original": {
"owner": "SEIAROTg",
"repo": "quadlet-nix",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"darwin": "darwin", "darwin": "darwin",
"ghostty": "ghostty", "ghostty": "ghostty",
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_3",
"quadlet-nix": "quadlet-nix"
} }
}, },
"systems": { "systems": {
@@ -170,7 +199,8 @@
"zig": { "zig": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": [
"ghostty" "ghostty",
"flake-compat"
], ],
"flake-utils": [ "flake-utils": [
"ghostty", "ghostty",
@@ -197,27 +227,20 @@
}, },
"zon2nix": { "zon2nix": {
"inputs": { "inputs": {
"flake-utils": [ "nixpkgs": "nixpkgs_2"
"ghostty",
"flake-utils"
],
"nixpkgs": [
"ghostty",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1742104771, "lastModified": 1758405547,
"narHash": "sha256-LhidlyEA9MP8jGe1rEnyjGFCzLLgCdDpYeWggibayr0=", "narHash": "sha256-WgaDgvIZMPvlZcZrpPMjkaalTBnGF2lTG+62znXctWM=",
"owner": "jcollie", "owner": "jcollie",
"repo": "zon2nix", "repo": "zon2nix",
"rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613", "rev": "bf983aa90ff169372b9fa8c02e57ea75e0b42245",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "jcollie", "owner": "jcollie",
"ref": "56c159be489cc6c0e73c3930bd908ddc6fe89613",
"repo": "zon2nix", "repo": "zon2nix",
"rev": "bf983aa90ff169372b9fa8c02e57ea75e0b42245",
"type": "github" "type": "github"
} }
} }

View File

@@ -12,6 +12,7 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
ghostty.url = "github:ghostty-org/ghostty"; ghostty.url = "github:ghostty-org/ghostty";
quadlet-nix.url = "github:SEIAROTg/quadlet-nix";
}; };
outputs = inputs @ { outputs = inputs @ {
@@ -21,12 +22,15 @@
darwin, darwin,
home-manager, home-manager,
ghostty, ghostty,
quadlet-nix,
... ...
}: let }: let
userName = "wyatt"; userName = "wyatt";
userEmail = "wyatt@wyattjmiller.com"; userEmail = "wyatt@wyattjmiller.com";
extraSpecialArgs = {
inherit userName userEmail ghostty; # use this variable to take inputs and use them as arguments in your modules, this will be the common one
customArgs = {
inherit userName userEmail ghostty quadlet-nix;
}; };
in { in {
meta = import ./meta; meta = import ./meta;
@@ -34,8 +38,7 @@
# Primary laptop - MacBook Pro (2023, M3) # Primary laptop - MacBook Pro (2023, M3)
darwinConfigurations."sephiroth" = darwin.lib.darwinSystem { darwinConfigurations."sephiroth" = darwin.lib.darwinSystem {
system = "aarch64-darwin"; system = "aarch64-darwin";
specialArgs = { specialArgs = customArgs // {
inherit userName userEmail ghostty;
hostname = "sephiroth"; hostname = "sephiroth";
role = "devel"; role = "devel";
}; };
@@ -47,7 +50,9 @@
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = extraSpecialArgs; home-manager.extraSpecialArgs = customArgs // {
inherit home-manager;
};
home-manager.users.${userName} = import ./home; home-manager.users.${userName} = import ./home;
} }
]; ];
@@ -56,8 +61,7 @@
# Primary desktop computer # Primary desktop computer
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem { nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { specialArgs = customArgs // {
inherit userName userEmail ghostty;
hostname = "cloud"; hostname = "cloud";
role = "devel"; role = "devel";
}; };
@@ -70,7 +74,9 @@
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = extraSpecialArgs; home-manager.extraSpecialArgs = customArgs // {
inherit home-manager;
};
home-manager.users.${userName}.imports = [ home-manager.users.${userName}.imports = [
./home ./home
]; ];
@@ -81,8 +87,7 @@
# Apartment appliance server # Apartment appliance server
nixosConfigurations."valefor" = nixpkgs.lib.nixosSystem { nixosConfigurations."valefor" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { specialArgs = customArgs // {
inherit userName userEmail;
hostname = "valefor"; hostname = "valefor";
role = "server"; role = "server";
}; };
@@ -94,7 +99,9 @@
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = extraSpecialArgs; home-manager.extraSpecialArgs = customArgs // {
inherit home-manager;
};
home-manager.users.${userName}.imports = [ home-manager.users.${userName}.imports = [
./home ./home
]; ];
@@ -105,29 +112,25 @@
# Storage, status, game, and media server # Storage, status, game, and media server
nixosConfigurations."ixion" = nixpkgs.lib.nixosSystem { nixosConfigurations."ixion" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { specialArgs = customArgs // {
inherit userName userEmail;
hostname = "ixion"; hostname = "ixion";
role = "server"; role = "server";
}; };
# modules = [ modules = [
# nix-flatpak.nixosModules.nix-flatpak quadlet-nix.nixosModules.quadlet
# nix-ld.nixosModules.nix-ld ./modules/common
# ./modules/nixos/hardware-configuration.nix ./modules/machine/ixion
# ./modules/nix-core.nix
# ./modules/nixos/configuration.nix home-manager.nixosModules.home-manager
# ./modules/host-users.nix {
# home-manager.useGlobalPkgs = true;
# home-manager.nixosModules.home-manager home-manager.useUserPackages = true;
# { home-manager.extraSpecialArgs = customArgs;
# home-manager.useGlobalPkgs = true; home-manager.users.${userName}.imports = [
# home-manager.useUserPackages = true; ./home
# home-manager.extraSpecialArgs = extraSpecialArgs; ];
# home-manager.users.${userName}.imports = [ }
# ./home ];
# ];
# }
# ];
}; };
}; };
} }

View File

@@ -15,7 +15,7 @@
extraConfig = { extraConfig = {
init.defaultBranch = "master"; init.defaultBranch = "master";
push.autoSetupRemote = true; push.autoSetupRemote = true;
pull.merge = true; pull.rebase = false;
merge.tool = "nvimdiff"; merge.tool = "nvimdiff";
mergetool.keepBackup = false; mergetool.keepBackup = false;
}; };

View File

@@ -1,4 +1,4 @@
{pkgs, ...}: { {pkgs, lib, ...}: {
programs.fish = { programs.fish = {
enable = true; enable = true;
# initExtra = '' # initExtra = ''
@@ -52,6 +52,27 @@
''; '';
onEvent = "fish_greeting"; onEvent = "fish_greeting";
}; };
} // lib.optionalAttrs pkgs.stdenv.isLinux {
block = {
body = ''
systemd-inhibit --what=sleep --who="$USER" --why="manual invocation" --mode=block sleep infinity &
set -g INHIBIT_PID $last_pid
echo "Sleep inhibited. PID: $INHIBIT_PID"
'';
};
unblock = {
body = ''
if set -q INHIBIT_PID
kill $INHIBIT_PID 2>/dev/null
and echo "Sleep inhibitor removed. PID: $INHIBIT_PID"
or echo "Failed to kill process or already terminated."
set -e INHIBIT_PID
else
echo "No active sleep inhibitor found."
end
'';
};
}; };
}; };

View File

@@ -147,20 +147,5 @@ in {
programs.waybar = { programs.waybar = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
systemd.enable = true; systemd.enable = true;
package = pkgs.waybar.overrideAttrs (old: {
version = "0.11.0";
src = pkgs.fetchFromGitHub {
owner = "Alexays";
repo = "Waybar";
rev = "d56dd6ee7fdf8c5ba4e90790af62b7f7829d3a47";
sha256 = "sha256-3lc0voMU5RS+mEtxKuRayq/uJO09X7byq6Rm5NZohq8=";
fetchSubmodules = true;
};
buildInputs = old.buildInputs ++ [ pkgs.fftw pkgs.libcava ];
# mesonFlags = (old.mesonFlags or []) ++ [ "-Dcava=disabled" ];
});
}; };
} }

19
modules/apps/appimage.nix Normal file
View File

@@ -0,0 +1,19 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.appimage;
in {
options.appimage = {
enable = mkEnableOption "AppImage support";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
appimageupdate
appimage-run
];
};
}

View File

@@ -1,20 +1,23 @@
{ lib, pkgs, ... }: { { lib, pkgs, ... }: {
# Common packages that every system will use
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
git git
vim vim
neovim neovim
usbutils usbutils
coreutils coreutils
lshw
systemd
dmidecode
pciutils pciutils
nix-ld
patchelf patchelf
htop htop
]; ] ++
lib.optionals pkgs.stdenv.isLinux (with pkgs; [
systemd
lshw
dmidecode
nix-ld
]) ++
lib.optionals pkgs.stdenv.isDarwin (with pkgs; [
# nothing here, yet ;)
]);
# Common environment variables that every system will use
environment.variables.EDITOR = "nvim"; environment.variables.EDITOR = "nvim";
} }

View File

@@ -1,30 +1,23 @@
{ lib, pkgs, userName, hostname, ... }:
{ {
lib,
pkgs,
userName,
hostname,
...
} @ args: {
networking.hostName = hostname; networking.hostName = hostname;
# Don't forget to set a password with passwd! users.users."${userName}" = {
users.users."${userName}" = lib.mkMerge [ home = if pkgs.stdenv.isDarwin
{
home =
if pkgs.stdenv.isDarwin
then "/Users/${userName}" then "/Users/${userName}"
else "/home/${userName}"; else "/home/${userName}";
description = userName; description = userName;
} } // lib.optionalAttrs pkgs.stdenv.isLinux {
(lib.mkIf (pkgs.stdenv.isLinux) {
group = "${userName}"; group = "${userName}";
isNormalUser = true; isNormalUser = true;
}) };
];
security.sudo = { users.groups.wyatt = {};
extraRules = [ nix.settings.trusted-users = [userName];
security = lib.optionalAttrs pkgs.stdenv.isLinux {
sudo.extraRules = [
{ {
groups = [ "wheel" ]; groups = [ "wheel" ];
commands = [ commands = [
@@ -37,7 +30,9 @@
]; ];
}; };
users.groups.wyatt = {}; environment = lib.optionalAttrs pkgs.stdenv.isDarwin {
etc."sudoers.d/wheel-nopasswd".text = ''
nix.settings.trusted-users = [userName]; %wheel ALL=(ALL:ALL) NOPASSWD: SETENV: ALL
'';
};
} }

View File

@@ -21,11 +21,13 @@ in {
inherit lib pkgs flatpakPackages; inherit lib pkgs flatpakPackages;
}) })
../../apps/gaming.nix ../../apps/gaming.nix
../../apps/appimage.nix
../../graphics ../../graphics
../../pwrMgmt ../../pwrMgmt
../../networking/core.nix ../../networking/core.nix
../../sound/pipewire.nix ../../sound/pipewire.nix
../../sound/shairport.nix ../../sound/shairport.nix
../../sound/focusrite.nix
../../virtualization/podman.nix ../../virtualization/podman.nix
../../virtualization/hardware.nix ../../virtualization/hardware.nix
]; ];
@@ -34,9 +36,13 @@ in {
nix.settings.experimental-features = ["nix-command" "flakes"]; nix.settings.experimental-features = ["nix-command" "flakes"];
# Custom kernel/boot stuff # Custom kernel/boot stuff
boot.kernelPackages = pkgs.linuxPackages_latest; boot = {
boot.loader.systemd-boot.enable = true; kernelPackages = pkgs.linuxPackages_latest;
boot.loader.efi.canTouchEfiVariables = true; loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
};
# Enable Bluetooth if present # Enable Bluetooth if present
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
@@ -63,21 +69,6 @@ in {
wl-clip-persist wl-clip-persist
]; ];
# Enable OpenSSH
services.openssh.enable = true;
# Enable keyring
services.gnome.gnome-keyring.enable = true;
# Enable GnuPG
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# Enable SUID wrappers (some programs need them)
programs.mtr.enable = true;
# Enable Polkit # Enable Polkit
security.polkit.enable = true; security.polkit.enable = true;
@@ -145,14 +136,39 @@ in {
networkManager.enable = true; networkManager.enable = true;
}; };
programs = {
# Enable GnuPG
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# Enable SUID wrappers (some programs need them)
mtr.enable = true;
# Enable dconf # Enable dconf
programs.dconf.enable = true; dconf.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" "gamemode" "podman" "network"]; users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"];
services = {
# Enable OpenSSH
openssh.enable = true;
# Enable keyring
gnome.gnome-keyring.enable = true;
# Flatpak packages (see ../../apps/flatpak.nix) # Flatpak packages (see ../../apps/flatpak.nix)
services.flatpak.packages = flatpakPackages; flatpak.packages = flatpakPackages;
};
# Focusrite Scarlett audio interface support (see ../../sound/focusrite.nix)
sound.hardware.focusrite.enable = true;
# AppImage support
appimage.enable = true;
# XDG stuff # XDG stuff
xdg = { xdg = {
@@ -160,12 +176,12 @@ in {
enable = true; enable = true;
config = { config = {
sway = { sway = {
default = [ "wlr" "gtk" ]; default = ["wlr" "gtk"];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ]; "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
}; };
common = { common = {
default = [ "gtk" ]; default = ["gtk"];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ]; "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
}; };
}; };
extraPortals = with pkgs; [ extraPortals = with pkgs; [

View File

@@ -0,0 +1,84 @@
{
pkgs,
userName,
...
}: {
imports = [
../../pwrMgmt
../../networking/core.nix
../../virtualization/podman.nix
../../virtualization/quadlet.nix
../../virtualization/hardware.nix
];
# Enable flakes for NixOS
nix.settings.experimental-features = ["nix-command" "flakes"];
# Custom kernel/boot stuff
boot = {
kernelPackages = pkgs.linuxPackages_latest;
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
};
# Enable Polkit
security.polkit.enable = true;
# Make sure Bluetooth is off!
hardware.bluetooth.enable = false;
# Set your timezone
time.timeZone = "America/Detroit";
# Power management module
pwrMgmt = {
enable = true;
cpuFreqGovernor = "performance";
powertop.enable = false;
};
# Podman module (see ../../virtualization/podman.nix)
podman = {
enable = true;
extraPackages = with pkgs; [
docker-credential-helpers
toolbox
cosign
crane
podman-tui
];
};
# Core networking module (see ../../networking/core.nix)
network = {
firewall.enable = true;
networkManager.enable = true;
};
programs = {
# Enable GnuPG
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# Enable SUID wrappers (some programs need them)
mtr.enable = true;
};
users.users.${userName}.extraGroups = ["wheel" "video" "podman" "network"];
services = {
# Enable OpenSSH
openssh.enable = true;
};
# Install packages to be installed system-wide
environment.systemPackages = with pkgs; [
wireguard-tools
];
system.stateVersion = "25.05";
}

View File

@@ -0,0 +1,6 @@
{...}: {
imports = [
./configuration.nix
./hardware-configuration.nix
];
}

View File

@@ -0,0 +1,46 @@
# --- DO NOT USE ---
#
# this is copied from ../valefor/hardware-configuration.nix
# generate a new hardware-configuration.nix before using this!
#
# ------------------
#
# 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 = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/ff89bde1-4b33-4277-b649-b92700b2406c";
fsType = "xfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/3A4B-6866";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
# 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.eno1.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,12 +1,12 @@
# Power management modules # Power management modules
This directory houses my own custom defined power management settings. These are set in the machine-specific configurations (typically). This directory houses my own custom defined power management settings as NixOS modules. These are set in the machine-specific configurations (typically).
## Examples ## Examples
Given that this configuration is in the `machine/<hostname>` directory (where hostname is the name of the computer your configuring): Given that this configuration is in the `machine/<hostname>` directory (where hostname is the name of the computer your configuring):
### Desktop configuration ### Desktop/server configuration
```nix ```nix
imports = [ imports = [

View File

@@ -5,7 +5,7 @@
}: }:
with lib; { with lib; {
options = { options = {
security.sudo = { security.sudoers = {
needsPassword = mkOption { needsPassword = mkOption {
type = types.bool; type = types.bool;
default = true; default = true;

View File

@@ -0,0 +1,33 @@
# Must be paired with the pipewire Nix module, this does nothing but install packages
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.sound.hardware.focusrite;
in {
options.sound.hardware.focusrite = {
enable = mkEnableOption "Focusrite audio interface support";
guiSupport = mkOption {
type = types.bool;
default = false;
description = "Enable GUI support for Focusrite Scarlett audio interface (installs alsa-scarlett-gui)";
};
};
config = mkIf cfg.enable (mkMerge [
{
environment.systemPackages = with pkgs;
[
scarlett2
alsa-scarlett-gui
]
++ (
if cfg.guiSupport
then [pkgs.alsa-scarlett-gui]
else []
);
}
]);
}

View File

@@ -40,7 +40,13 @@ Example:
}; };
``` ```
To get a full, comprehensive list of what you can do with the podman module, please check out (podman.nix)[./podman.nix]! To get a full, comprehensive list of what you can do with the podman module, please check out [podman.nix](./podman.nix)!
### Podman Quadlets
This is a wrapper around a project called [`quadlet-nix`](https://github.com/SEIAROTg/quadlet-nix), a way of defining systemd services as containers with Nix! Since I have existing services running inside of containers and don't want to risk breaking _everything_ that I have running, I figured this would be a safe, transitionary approach to handle this.
This is still a work-in-progress, check back soon on progress on this.
## Kubernetes ## Kubernetes

View File

@@ -0,0 +1,47 @@
# ----------------------
# Wrapper for defining Quadlets in Nix via quadlet-nix
#
# Still WIP
# ----------------------
{
config,
lib,
...
}:
let
cfg = config.quadlet;
in {
options = {
quadlet = {
enable = lib.mkEnableOption "Enable Podman's Quadlet systemd integration";
autoUpdate = {
enable = lib.mkEnableOption "Enable the auto update mechanism";
calendar = lib.mkOption {
type = lib.types.str;
default = "*-*-* 03:30:00";
description = "When the auto update mechanism is triggered, the calendar option will tell the auto update when to start";
};
};
extraPackages = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = [];
description = "Additional container-related packages to install (these likely will be installed with Podman though)";
};
};
};
config = lib.mkIf cfg.enable {
virtualisation.quadlet = {
enable = true;
autoUpdate = {
enable = cfg.autoUpdate.enable;
calendar = cfg.autoUpdate.calendar;
};
};
environment.systemPackages = cfg.extraPackages;
};
}