chore: repository cleanup and noctalia baseline #83
@@ -6,20 +6,20 @@ My personal NixOS configurations.
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
.
|
.
|
||||||
├── flake.lock
|
├── flake.nix # hosts and home-manager wiring
|
||||||
├── flake.nix # flake definition
|
|
||||||
├── hosts
|
├── hosts
|
||||||
│ └── neon
|
│ ├── argon # desktop
|
||||||
│ ├── configuration.nix # import nix-modules for specific host
|
│ ├── neon # laptop
|
||||||
│ └── hardware-configuration.nix # hardware configs for specific host
|
│ └── default # test vm
|
||||||
|
│ ├── configuration.nix # host-specific settings and module imports
|
||||||
|
│ ├── hardware-configuration.nix # generated by nixos-generate-config
|
||||||
|
│ └── niri.nix # host-specific niri settings (outputs, input)
|
||||||
├── modules
|
├── modules
|
||||||
│ ├── home-manager
|
│ ├── home-manager # user modules, imported by users/aaron/home.nix
|
||||||
│ │ ├── xyz_module.nix
|
│ └── nixos # system modules, imported by the hosts
|
||||||
│ └── nixos
|
|
||||||
│ └── xyz_module.nix
|
|
||||||
└── users
|
└── users
|
||||||
└── aaron
|
└── aaron
|
||||||
└── home.nix # import home-manager modules for specific user
|
└── home.nix # imports home-manager modules
|
||||||
```
|
```
|
||||||
|
|
||||||
## installation
|
## installation
|
||||||
|
|||||||
@@ -35,6 +35,9 @@
|
|||||||
./hosts/${hostName}/configuration.nix
|
./hosts/${hostName}/configuration.nix
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.backupCommand = "mv -f {file} {file}.hm-bak-$(date +%Y%m%d%H%M%S)";
|
||||||
home-manager.extraSpecialArgs = { inherit inputs; };
|
home-manager.extraSpecialArgs = { inherit inputs; };
|
||||||
home-manager.users.aaron.imports = [
|
home-manager.users.aaron.imports = [
|
||||||
nixvim.homeModules.nixvim
|
nixvim.homeModules.nixvim
|
||||||
|
|||||||
@@ -1,15 +1,25 @@
|
|||||||
|
# argon: desktop with an amd gpu and three luks-encrypted data drives.
|
||||||
|
# The drives are unlocked in the initrd with keyfiles from /etc/nixos/keys.
|
||||||
|
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
# luks name -> partition uuid, mounted at /mnt/<name>
|
||||||
|
drives = {
|
||||||
|
data1 = "dfae62cc-bad1-4879-bf9a-461bde833625";
|
||||||
|
data2 = "8312edae-9247-481b-a313-52a7f848f027";
|
||||||
|
nvmecache = "2352250e-4ebe-4f9a-bf66-0d4aaa961bd8";
|
||||||
|
};
|
||||||
|
key = name: "/etc/nixos/keys/${name}.key";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/nixos/appimage.nix
|
../../modules/nixos/appimage.nix
|
||||||
../../modules/nixos/astro.nix
|
../../modules/nixos/astro.nix
|
||||||
../../modules/nixos/audio.nix
|
../../modules/nixos/audio.nix
|
||||||
../../modules/nixos/bootloader.nix
|
../../modules/nixos/bootloader.nix
|
||||||
../../modules/nixos/calibre.nix
|
|
||||||
../../modules/nixos/certificates.nix
|
../../modules/nixos/certificates.nix
|
||||||
../../modules/nixos/claudecode.nix
|
|
||||||
../../modules/nixos/drives.nix
|
|
||||||
../../modules/nixos/gnupg.nix
|
../../modules/nixos/gnupg.nix
|
||||||
../../modules/nixos/graphics.nix
|
|
||||||
../../modules/nixos/greetd.nix
|
../../modules/nixos/greetd.nix
|
||||||
../../modules/nixos/locales.nix
|
../../modules/nixos/locales.nix
|
||||||
../../modules/nixos/networking.nix
|
../../modules/nixos/networking.nix
|
||||||
@@ -29,9 +39,33 @@
|
|||||||
# host-specific niri config (outputs, input devices)
|
# host-specific niri config (outputs, input devices)
|
||||||
home-manager.users.aaron.imports = [ ./niri.nix ];
|
home-manager.users.aaron.imports = [ ./niri.nix ];
|
||||||
|
|
||||||
# set hostname
|
# amd gpu: mesa/vulkan, and amdgpu in the initrd for plymouth
|
||||||
networking.hostName = "argon";
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true;
|
||||||
|
};
|
||||||
|
hardware.amdgpu.initrd.enable = true;
|
||||||
|
|
||||||
# install state version
|
# encrypted data drives
|
||||||
system.stateVersion = "25.11"; # Don't change
|
boot.initrd.secrets = lib.mapAttrs' (name: _: lib.nameValuePair (key name) (key name)) drives;
|
||||||
|
boot.initrd.luks.devices = lib.mapAttrs (name: uuid: {
|
||||||
|
device = "/dev/disk/by-uuid/${uuid}";
|
||||||
|
keyFile = key name;
|
||||||
|
}) drives;
|
||||||
|
fileSystems = lib.mapAttrs' (
|
||||||
|
name: _:
|
||||||
|
lib.nameValuePair "/mnt/${name}" {
|
||||||
|
device = "/dev/mapper/${name}";
|
||||||
|
fsType = "ext4";
|
||||||
|
options = [ "nofail" ];
|
||||||
|
}
|
||||||
|
) drives;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
amdgpu_top
|
||||||
|
calibre # ebook management and kobo syncing
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.hostName = "argon";
|
||||||
|
system.stateVersion = "25.11"; # don't change
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
../../modules/nixos/audio.nix
|
../../modules/nixos/audio.nix
|
||||||
../../modules/nixos/bootloader.nix
|
../../modules/nixos/bootloader.nix
|
||||||
../../modules/nixos/certificates.nix
|
../../modules/nixos/certificates.nix
|
||||||
../../modules/nixos/claudecode.nix
|
|
||||||
../../modules/nixos/docker.nix
|
../../modules/nixos/docker.nix
|
||||||
../../modules/nixos/gnupg.nix
|
../../modules/nixos/gnupg.nix
|
||||||
../../modules/nixos/locales.nix
|
../../modules/nixos/locales.nix
|
||||||
@@ -26,9 +25,6 @@
|
|||||||
# host-specific niri config (input devices, laptop binds)
|
# host-specific niri config (input devices, laptop binds)
|
||||||
home-manager.users.aaron.imports = [ ./niri.nix ];
|
home-manager.users.aaron.imports = [ ./niri.nix ];
|
||||||
|
|
||||||
# set hostname
|
|
||||||
networking.hostName = "neon";
|
networking.hostName = "neon";
|
||||||
|
system.stateVersion = "25.11"; # don't change
|
||||||
# install state version
|
|
||||||
system.stateVersion = "25.11"; # Don't change
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# install calibre for ebook management and kobo syncing
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
calibre
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
claude-code
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
# Add encrypted drives to argon
|
|
||||||
|
|
||||||
{
|
|
||||||
# copy keyfiles into initrd to make them available during early boot
|
|
||||||
boot.initrd.secrets = {
|
|
||||||
"/etc/nixos/keys/data1.key" = "/etc/nixos/keys/data1.key";
|
|
||||||
"/etc/nixos/keys/data2.key" = "/etc/nixos/keys/data2.key";
|
|
||||||
"/etc/nixos/keys/nvmecache.key" = "/etc/nixos/keys/nvmecache.key";
|
|
||||||
};
|
|
||||||
|
|
||||||
# decrypt data drives with keyfiles for argon
|
|
||||||
boot.initrd.luks.devices = {
|
|
||||||
"data1" = {
|
|
||||||
device = "/dev/disk/by-uuid/dfae62cc-bad1-4879-bf9a-461bde833625";
|
|
||||||
keyFile = "/etc/nixos/keys/data1.key";
|
|
||||||
};
|
|
||||||
"data2" = {
|
|
||||||
device = "/dev/disk/by-uuid/8312edae-9247-481b-a313-52a7f848f027";
|
|
||||||
keyFile = "/etc/nixos/keys/data2.key";
|
|
||||||
};
|
|
||||||
"nvmecache" = {
|
|
||||||
device = "/dev/disk/by-uuid/2352250e-4ebe-4f9a-bf66-0d4aaa961bd8";
|
|
||||||
keyFile = "/etc/nixos/keys/nvmecache.key";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# mount decrypted filesystems
|
|
||||||
fileSystems."/mnt/data1" = {
|
|
||||||
device = "/dev/mapper/data1";
|
|
||||||
fsType = "ext4";
|
|
||||||
options = [ "nofail" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/mnt/data2" = {
|
|
||||||
device = "/dev/mapper/data2";
|
|
||||||
fsType = "ext4";
|
|
||||||
options = [ "nofail" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/mnt/nvmecache" = {
|
|
||||||
device = "/dev/mapper/nvmecache";
|
|
||||||
fsType = "ext4";
|
|
||||||
options = [ "nofail" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# enable amd GPU acceleration (mesa, vulkan, egl)
|
|
||||||
hardware.graphics = {
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# install amdgpu_top
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
amdgpu_top
|
|
||||||
];
|
|
||||||
|
|
||||||
# add amdgpu to the initrd for plymouth
|
|
||||||
hardware.amdgpu.initrd.enable = true;
|
|
||||||
}
|
|
||||||
@@ -1,31 +1,25 @@
|
|||||||
{
|
{
|
||||||
nix = {
|
nix = {
|
||||||
# nix settings
|
|
||||||
settings = {
|
settings = {
|
||||||
# enable flakes and nix-command
|
|
||||||
experimental-features = [
|
experimental-features = [
|
||||||
"nix-command"
|
"nix-command"
|
||||||
"flakes"
|
"flakes"
|
||||||
];
|
];
|
||||||
# auto-optimize my nix-store
|
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
# use all cores
|
# parallel builds, each using all cores
|
||||||
max-jobs = "auto";
|
max-jobs = "auto";
|
||||||
# use all available cores per job
|
|
||||||
cores = 0;
|
cores = 0;
|
||||||
# add trusted substituters (binary caches)
|
# cache.nixos.org is the default, these come on top
|
||||||
substituters = [
|
extra-substituters = [ "https://nix-community.cachix.org" ];
|
||||||
"https://cache.nixos.org"
|
extra-trusted-public-keys = [
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
];
|
|
||||||
# add keys
|
|
||||||
trusted-public-keys = [
|
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
];
|
];
|
||||||
|
trusted-users = [
|
||||||
|
"root"
|
||||||
|
"@wheel"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# enable automatic garbage collection
|
|
||||||
gc = {
|
gc = {
|
||||||
automatic = true;
|
automatic = true;
|
||||||
dates = "weekly";
|
dates = "weekly";
|
||||||
@@ -33,20 +27,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# add trusted users (able to modify the nix store)
|
# steam, protonvpn, discord, etc.
|
||||||
nix.settings.trusted-users = [
|
|
||||||
"root"
|
|
||||||
"@wheel"
|
|
||||||
];
|
|
||||||
|
|
||||||
# allow unfree packages (steam, protonvpn, discord, etc.)
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
# links /libexec from derivations to /run/current-system/sw
|
# links /libexec from derivations to /run/current-system/sw
|
||||||
environment.pathsToLink = [ "/libexec" ];
|
environment.pathsToLink = [ "/libexec" ];
|
||||||
|
|
||||||
# enable home-manager globally
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
home-manager.backupCommand = "mv -f {file} {file}.hm-bak-$(date +%Y%m%d%H%M%S)";
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user