hopefully the last complete restructure of this repo
@@ -1,8 +0,0 @@
|
|||||||
# NixOS System Configs
|
|
||||||
|
|
||||||
This is a repo for all of my nixos system configurations and isos
|
|
||||||
|
|
||||||
# Goal:
|
|
||||||
>- to define configs for all my nixos machines
|
|
||||||
>- to create a **100% reproduceable** system that can be deployed **offline** and **unattended**
|
|
||||||
|
|
||||||
655
flake.lock
generated
189
flake.nix
@@ -1,159 +1,40 @@
|
|||||||
{
|
{
|
||||||
description = "Build Entire System";
|
description = "Nixos config flake";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
url = "github:nix-community/home-manager/release-24.05";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
nathan.url = "./home";
|
|
||||||
|
|
||||||
system.url = "./system";
|
|
||||||
#system.inputs.diskoConfig.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, nixpkgs, ... }@core_inputs: let
|
|
||||||
system = "x86_64-linux";
|
|
||||||
iso_system = "x86_64-linux";
|
|
||||||
|
|
||||||
host = "homebox";
|
|
||||||
username = "nathan";
|
|
||||||
|
|
||||||
devices = {
|
|
||||||
main = "/dev/nvme0n1";
|
|
||||||
bonus.disk1 = "/dev/nvme1n1";
|
|
||||||
};
|
|
||||||
|
|
||||||
in {
|
|
||||||
inputs.home-manager.useGlobalPkgs = true;
|
|
||||||
|
|
||||||
nixosConfigurations.${host} = nixpkgs.lib.nixosSystem {
|
|
||||||
|
|
||||||
inherit system;
|
|
||||||
specialArgs = {
|
|
||||||
core_inputs = (core_inputs // {inherit host;});
|
|
||||||
};
|
|
||||||
|
|
||||||
modules = [
|
|
||||||
core_inputs.system.nixosModule
|
|
||||||
core_inputs.home-manager.nixosModules.home-manager
|
|
||||||
|
|
||||||
({ lib, ... }: {
|
|
||||||
sysconfig = {
|
|
||||||
${host}.enable = true;
|
|
||||||
opts = {
|
|
||||||
firstBoot = true;
|
|
||||||
inherit host username devices;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
disko = {
|
|
||||||
enable = true;
|
|
||||||
impermanent = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
nixosConfigurations.iso = nixpkgs.lib.nixosSystem {
|
|
||||||
#inherit iso_system;
|
|
||||||
|
|
||||||
specialArgs = {
|
|
||||||
core_inputs = (core_inputs // {host = "installer";});
|
|
||||||
};
|
|
||||||
|
|
||||||
modules = [
|
|
||||||
|
|
||||||
({ lib, pkgs, modulesPath, ... }: {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
home-manager.users.${username}.homeconfig = {
|
|
||||||
minimal = true;
|
|
||||||
externalPackages.enable = false;
|
|
||||||
calcurse.enable = false;
|
|
||||||
wayvnc.enable = true;
|
|
||||||
rofi.enable = true;
|
|
||||||
mpd.enable = false;
|
|
||||||
wal.enable = true;
|
|
||||||
ags.enable = true;
|
|
||||||
hyprland.enable = true;
|
|
||||||
swaylock.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
sysconfig = {
|
|
||||||
opts = {
|
|
||||||
firstBoot = true;
|
|
||||||
host = "installer";
|
|
||||||
inherit username;
|
|
||||||
openssh.enable = true;
|
|
||||||
hyprland.enable = true;
|
|
||||||
ags.enable = true;
|
|
||||||
pipewire.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
steam.enable = false;
|
|
||||||
nh.enable = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
disko.enable = lib.mkForce false;
|
|
||||||
|
|
||||||
nix.settings = {
|
|
||||||
experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
hostName = "installer";
|
|
||||||
firewall.allowedTCPPorts = [ 22 ];
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = iso_system;
|
|
||||||
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
core_inputs.system.nixosModule
|
|
||||||
core_inputs.home-manager.nixosModules.home-manager
|
|
||||||
];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
packages.${iso_system}.default = self.nixosConfigurations.iso.config.system.build.isoImage;
|
|
||||||
|
|
||||||
homeConfigurations."nathan" = core_inputs.home-manager.lib.homeManagerConfiguration {
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
extraSpecialArgs = { inherit core_inputs; };
|
|
||||||
|
|
||||||
modules = [
|
|
||||||
core_inputs.nathan.homeManagerModule
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
homeconfig = {
|
|
||||||
minimal = false;
|
|
||||||
externalPackages.enable = true;
|
|
||||||
calcurse.enable = true;
|
|
||||||
wayvnc.enable = true;
|
|
||||||
rofi.enable = true;
|
|
||||||
mpd.enable = true;
|
|
||||||
wal.enable = true;
|
|
||||||
ags.enable = true;
|
|
||||||
hyprland.enable = true;
|
|
||||||
swaylock.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
disko = {
|
||||||
|
url = "github:nix-community/disko";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
impermanence = {
|
||||||
|
url = "github:nix-community/impermanence";
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager/release-24.05";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
system.url = "./system-config";
|
||||||
|
|
||||||
|
nixvim.url = "/ssd1/Projects/Nixvim";
|
||||||
|
|
||||||
|
nathan.url = "./home-manager";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {nixpkgs, ...} @ inputs:
|
||||||
|
{
|
||||||
|
nixosConfigurations.homebox = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {inherit inputs;};
|
||||||
|
modules = [
|
||||||
|
|
||||||
|
./system-config/configuration/homebox
|
||||||
|
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
8
home-manager/default.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ ... }: {
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./dotfiles
|
||||||
|
./impermanence
|
||||||
|
./services
|
||||||
|
];
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 1007 KiB After Width: | Height: | Size: 1007 KiB |
|
Before Width: | Height: | Size: 110 MiB After Width: | Height: | Size: 110 MiB |
|
Before Width: | Height: | Size: 191 KiB After Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 874 KiB After Width: | Height: | Size: 874 KiB |
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 48 MiB After Width: | Height: | Size: 48 MiB |
|
Before Width: | Height: | Size: 203 MiB After Width: | Height: | Size: 203 MiB |
|
Before Width: | Height: | Size: 670 KiB After Width: | Height: | Size: 670 KiB |
|
Before Width: | Height: | Size: 273 KiB After Width: | Height: | Size: 273 KiB |
|
Before Width: | Height: | Size: 140 MiB After Width: | Height: | Size: 140 MiB |
|
Before Width: | Height: | Size: 3.1 MiB After Width: | Height: | Size: 3.1 MiB |
|
Before Width: | Height: | Size: 2.8 MiB After Width: | Height: | Size: 2.8 MiB |
|
Before Width: | Height: | Size: 36 MiB After Width: | Height: | Size: 36 MiB |
26
home-manager/dotfiles/default.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ config, lib, ... }: {
|
||||||
|
|
||||||
|
config = lib.mkMerge [
|
||||||
|
|
||||||
|
(lib.mkIf config.homeconfig.ags.enable {
|
||||||
|
home.file."ags" = { source = ./ags; target = ".config/ags"; recursive = true; };
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf config.homeconfig.hyprland.enable {
|
||||||
|
home.file = {
|
||||||
|
"Wallpaper" = { source = ./Wallpaper; target = "Pictures/Wallpaper"; recursive = true; };
|
||||||
|
"hyprland" = { source = ./hypr; target = ".config/hypr"; recursive = true; };
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf config.homeconfig.swaylock.enable {
|
||||||
|
|
||||||
|
home.file."swaylock" = { source = ./swaylock; target = ".config/swaylock"; recursive = true; };
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf config.homeconfig.wal.enable {
|
||||||
|
|
||||||
|
home.file."wal" = { source = ./wal/templates; target = ".config/wal/templates"; recursive = true; };
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
6
home-manager/dotfiles/wayvnc/config
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
use_relative_paths=true
|
||||||
|
address=0.0.0.0
|
||||||
|
enable_auth=true
|
||||||
|
username=nathan
|
||||||
|
password=//falconAdjacent42
|
||||||
|
rsa_private_key_file=rsa_key.pem
|
||||||
39
home-manager/dotfiles/wayvnc/rsa_key.pem
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
1
home-manager/dotfiles/wayvnc/rsa_key.pem.pub
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCyRlNZ+ePi5QOw+rnV4BeTFd64d7FPYfhDewUuCc/4HXO/2Z5iBB4Mry1I3Tz0q6TPqNgD9Z3xTrqKrRMocayCP8Ci0vTQpqf4nvmG6+c75psaOQii+Xv7P4T3CeqWbFsULyvnEPmdpBvAv5MqMabqNwjok+nf4YjYwycLphhQ7xmuezorqZv9ME2Ny0efcMZEv1AXSf8siU6FW/5WQGIyO9qdrbOjth0Q+YQ0bwc8hHq1FAj+AjxQTGWAvh3o7tHElMCiAgSetnGwcAA6ebMNVcinedK6Dimx6IdsBz05U2ifmI1nehEr9JBZ2RVL/gdn9f4xkuHbrv7as5kQDzyJzDc4h523TiXfeXxkBSUnj84qk96yi1RG92Rhg8IftRyD1MEtEnF6Ri4nEZXmKHiKZYVGQbOgYoETkPuJimmMNbBVSZyTdI8xpcgDGM13FKBiHzhiy+6G3acGgjez4PjKgGp9fvp87Po6xAcg67Fjc8oznsSDDi74jvN/PbuWC3U= root@homebox
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
prgms.url = "./programs";
|
prgms.url = "./programs";
|
||||||
|
|
||||||
packages.url = "./packages";
|
packages.url = "./packages";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, ... }@inputs: {
|
outputs = { self, ... }@inputs: {
|
||||||
@@ -20,14 +21,23 @@
|
|||||||
homeManagerModule = { config, lib, pkgs, ... }: {
|
homeManagerModule = { config, lib, pkgs, ... }: {
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.prgms.hmModule
|
inputs.prgms.hmModule
|
||||||
./services
|
./services
|
||||||
inputs.packages.hmModule
|
inputs.packages.hmModule
|
||||||
./dotfiles
|
# ./dotfiles
|
||||||
|
./impermanence
|
||||||
];
|
];
|
||||||
|
|
||||||
home.stateVersion = "23.11";
|
home.stateVersion = "23.11";
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".config/ags" = { source = ./dotfiles/ags; recursive = true; };
|
||||||
|
".config/hypr" = { source = ./dotfiles/hypr; recursive = true; };
|
||||||
|
".config/swaylock" = { source = ./dotfiles/swaylock; recursive = true; };
|
||||||
|
".config/wal/templates" = { source = ./dotfiles/wal/templates; recursive = true; };
|
||||||
|
".config/wayvnc" = { source = ./dotfiles/wayvnc; recursive = true; };
|
||||||
|
"Pictures/Wallpaper" = { source = ./dotfiles/Wallpaper; recursive = true; };
|
||||||
|
};
|
||||||
home.username = "nathan";
|
home.username = "nathan";
|
||||||
|
|
||||||
home.homeDirectory = "/home/nathan";
|
home.homeDirectory = "/home/nathan";
|
||||||
@@ -50,18 +60,6 @@
|
|||||||
|
|
||||||
programs.ssh.enable = true;
|
programs.ssh.enable = true;
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
homeConfigurations."nathan" = inputs.home-manager.lib.homeManagerConfiguration {
|
|
||||||
pkgs = import inputs.nixpkgs {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
imports = [ self.homeManagerModule ];
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
21
home-manager/impermanence/default.nix
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
inputs.impermanence.nixosModules.home-manager.impermanence
|
||||||
|
];
|
||||||
|
|
||||||
|
home.persistence."/persist/home/nathan" = {
|
||||||
|
|
||||||
|
directories = [
|
||||||
|
"Documents"
|
||||||
|
"Music"
|
||||||
|
"Pictures/Photos"
|
||||||
|
"Projects"
|
||||||
|
"Videos"
|
||||||
|
".ssh"
|
||||||
|
];
|
||||||
|
files = [
|
||||||
|
];
|
||||||
|
allowOther = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -75,13 +75,14 @@
|
|||||||
'')
|
'')
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "onSystemStart" ''
|
(pkgs.writeShellScriptBin "onSystemStart" ''
|
||||||
|
randWallpaper &
|
||||||
ags &
|
ags &
|
||||||
pypr &
|
pypr &
|
||||||
setWallpaper &
|
|
||||||
lxqt-policykit-agent &
|
lxqt-policykit-agent &
|
||||||
nmcli device wifi connect EagleNet password '~?C#@ZiH' &
|
nmcli device wifi connect EagleNet password '~?C#@ZiH' &
|
||||||
hyprctl setcursor Bibata-Modern-Classic 16 &
|
hyprctl setcursor Bibata-Modern-Classic 16 &
|
||||||
wayvnc &
|
wayvnc &
|
||||||
|
hyprctl reload &
|
||||||
'')
|
'')
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "colorPrefix" ''
|
(pkgs.writeShellScriptBin "colorPrefix" ''
|
||||||
@@ -5,9 +5,7 @@
|
|||||||
|
|
||||||
ags.url = "./ags";
|
ags.url = "./ags";
|
||||||
|
|
||||||
nixvim.url = "/home/nathan/Projects/Nixvim";
|
nixvim.url = "/ssd1/Projects/Nixvim";
|
||||||
|
|
||||||
terminal.url = "./terminal"; #home manager only
|
|
||||||
|
|
||||||
rofi.url = "./rofi";
|
rofi.url = "./rofi";
|
||||||
|
|
||||||
@@ -23,7 +21,7 @@
|
|||||||
imports = [
|
imports = [
|
||||||
inputs.ags.hmModule
|
inputs.ags.hmModule
|
||||||
inputs.hyprland.hmModule
|
inputs.hyprland.hmModule
|
||||||
inputs.terminal.hmModule
|
./terminal
|
||||||
inputs.rofi.hmModule
|
inputs.rofi.hmModule
|
||||||
inputs.pywal.hmModule
|
inputs.pywal.hmModule
|
||||||
./swaylock
|
./swaylock
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
systemd.variables = [ "--all" ];
|
systemd.variables = [ "--all" ];
|
||||||
|
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
source = ./main.conf
|
source = /home/nathan/.config/hypr/main.conf
|
||||||
'';
|
'';
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -74,6 +74,7 @@
|
|||||||
vesktop
|
vesktop
|
||||||
|
|
||||||
pkgs-us.pywal16
|
pkgs-us.pywal16
|
||||||
|
imagemagick
|
||||||
pywalfox-native
|
pywalfox-native
|
||||||
];
|
];
|
||||||
|
|
||||||
12
home-manager/programs/terminal/default.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{ ... }: {
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./bat
|
||||||
|
./eza
|
||||||
|
./fzf
|
||||||
|
./tmux
|
||||||
|
./kitty
|
||||||
|
./zoxide
|
||||||
|
./zsh
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -9,14 +9,5 @@
|
|||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
wayvnc
|
wayvnc
|
||||||
];
|
];
|
||||||
|
|
||||||
home.file.".config/wayvnc/config".text = ''
|
|
||||||
use_relative_paths=true
|
|
||||||
address=0.0.0.0
|
|
||||||
enable_auth=true
|
|
||||||
username=nathan
|
|
||||||
password=//falconAdjacent42
|
|
||||||
rsa_private_key_file=rsa_key.pem
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
{ config, lib, ... }: {
|
|
||||||
|
|
||||||
config = lib.mkMerge [
|
|
||||||
|
|
||||||
(lib.mkIf config.homeconfig.ags.enable {
|
|
||||||
home.file = let
|
|
||||||
dir = "ags";
|
|
||||||
in builtins.mapAttrs (
|
|
||||||
n: v: { source = v.value; target = v.name; }) (
|
|
||||||
builtins.mapAttrs (
|
|
||||||
_name: _value: {
|
|
||||||
name = ".config/${dir}/${_name}"; value = ./${dir}/${_name};
|
|
||||||
}
|
|
||||||
) (builtins.readDir ./${dir})
|
|
||||||
);
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf config.homeconfig.hyprland.enable {
|
|
||||||
home.file = let
|
|
||||||
dir = "Wallpaper";
|
|
||||||
in builtins.mapAttrs (
|
|
||||||
n: v: { source = v.value; target = v.name; }) (
|
|
||||||
builtins.mapAttrs (
|
|
||||||
_name: _value: {
|
|
||||||
name = ".config/${dir}/${_name}"; value = ./${dir}/${_name};
|
|
||||||
}
|
|
||||||
) (builtins.readDir ./${dir})
|
|
||||||
);
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf config.homeconfig.hyprland.enable {
|
|
||||||
home.file = let
|
|
||||||
dir = "Wallpaper";
|
|
||||||
in builtins.mapAttrs (
|
|
||||||
n: v: { source = v.value; target = v.name; }) (
|
|
||||||
builtins.mapAttrs (
|
|
||||||
_name: _value: {
|
|
||||||
name = ".config/${dir}/${_name}"; value = ./${dir}/${_name};
|
|
||||||
}
|
|
||||||
) (builtins.readDir ./${dir})
|
|
||||||
);
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf config.homeconfig.swaylock.enable {
|
|
||||||
home.file = let
|
|
||||||
dir = "swaylock";
|
|
||||||
in builtins.mapAttrs (
|
|
||||||
n: v: { source = v.value; target = v.name; }) (
|
|
||||||
builtins.mapAttrs (
|
|
||||||
_name: _value: {
|
|
||||||
name = ".config/${dir}/${_name}"; value = ./${dir}/${_name};
|
|
||||||
}
|
|
||||||
) (builtins.readDir ./${dir})
|
|
||||||
);
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf config.homeconfig.wal.enable {
|
|
||||||
home.file = let
|
|
||||||
dir = "wal";
|
|
||||||
in builtins.mapAttrs (
|
|
||||||
n: v: { source = v.value; target = v.name; }) (
|
|
||||||
builtins.mapAttrs (
|
|
||||||
_name: _value: {
|
|
||||||
name = ".config/${dir}/${_name}"; value = ./${dir}/${_name};
|
|
||||||
}
|
|
||||||
) (builtins.readDir ./${dir})
|
|
||||||
);
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{ config, lib, self, ... }: {
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
self.inputs.impermanence.nixosModules.home-manager.impermanence
|
|
||||||
];
|
|
||||||
|
|
||||||
config = lib.mkIf config.disko.impermanent {
|
|
||||||
|
|
||||||
home.persistence."/persist/home" = {
|
|
||||||
|
|
||||||
directories = [
|
|
||||||
"Documents"
|
|
||||||
"Music"
|
|
||||||
"Pictures"
|
|
||||||
"Videos"
|
|
||||||
".ssh"
|
|
||||||
".config"
|
|
||||||
".local"
|
|
||||||
".cache/wal"
|
|
||||||
];
|
|
||||||
files = [
|
|
||||||
".cache/bg"
|
|
||||||
".cache/bga"
|
|
||||||
];
|
|
||||||
allowOther = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
description = "nix impermanence home config";
|
|
||||||
|
|
||||||
inputs.impermanence.url = "github:nix-community/impermanence";
|
|
||||||
|
|
||||||
outputs = { self, ... }: {
|
|
||||||
hmModule = import ./. { inherit self; };
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
description = "bat config";
|
|
||||||
|
|
||||||
inputs = {};
|
|
||||||
|
|
||||||
outputs = { self, ... }: {
|
|
||||||
|
|
||||||
hmModule = import ./bat.nix;
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
description = "eza config";
|
|
||||||
|
|
||||||
inputs = {};
|
|
||||||
|
|
||||||
outputs = { self, ... }: {
|
|
||||||
|
|
||||||
hmModule = import ./eza.nix;
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
description = "terminal config";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
eza.url = "./eza";
|
|
||||||
bat.url = "./bat";
|
|
||||||
fzf.url = "./fzf";
|
|
||||||
zoxide.url = "./zoxide";
|
|
||||||
kitty.url = "./kitty";
|
|
||||||
tmux.url = "./tmux";
|
|
||||||
zsh.url = "./zsh";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, ... }@inputs: {
|
|
||||||
|
|
||||||
hmModule = { config, lib, pkgs, ... }: {
|
|
||||||
imports = [
|
|
||||||
inputs.eza.hmModule
|
|
||||||
inputs.bat.hmModule
|
|
||||||
inputs.fzf.hmModule
|
|
||||||
inputs.zoxide.hmModule
|
|
||||||
inputs.kitty.hmModule
|
|
||||||
inputs.tmux.hmModule
|
|
||||||
inputs.zsh.hmModule
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
description = "fzf config";
|
|
||||||
|
|
||||||
inputs = {};
|
|
||||||
|
|
||||||
outputs = { self, ... }: {
|
|
||||||
|
|
||||||
hmModule = import ./fzf.nix;
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
description = "Kitty Config";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, ... }: {
|
|
||||||
|
|
||||||
hmModule = import ./kitty.nix;
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
description = "Tmux config";
|
|
||||||
|
|
||||||
inputs = {};
|
|
||||||
|
|
||||||
outputs = { self, ... }: {
|
|
||||||
|
|
||||||
hmModule = import ./tmux.nix;
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
description = "Zoxide config";
|
|
||||||
|
|
||||||
inputs = {};
|
|
||||||
|
|
||||||
outputs = { self, ... }: {
|
|
||||||
|
|
||||||
hmModule = import ./zoxide.nix;
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
description = "zsh config";
|
|
||||||
|
|
||||||
inputs = {};
|
|
||||||
|
|
||||||
outputs = { self, ... }: {
|
|
||||||
|
|
||||||
hmModule = import ./zsh.nix;
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
191
system-config/configuration/homebox/default.nix
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
{ config, pkgs, lib, inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
./hardware-configuration.nix
|
||||||
|
|
||||||
|
inputs.disko.nixosModules.default
|
||||||
|
|
||||||
|
(import ./disko.nix { device1 = "/dev/nvme0n1"; device2 = "/dev/nvme1n1"; })
|
||||||
|
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
|
|
||||||
|
inputs.home-manager.nixosModules.default
|
||||||
|
|
||||||
|
inputs.system.nixosModule
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
opengl = {
|
||||||
|
enable = true;
|
||||||
|
driSupport = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
nvidia-vaapi-driver
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nvidia = {
|
||||||
|
modesetting.enable = true;
|
||||||
|
open = false;
|
||||||
|
nvidiaSettings = true;
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||||
|
};
|
||||||
|
|
||||||
|
bluetooth.enable = true;
|
||||||
|
|
||||||
|
pulseaudio.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
videoDrivers = ["nvidia"];
|
||||||
|
};
|
||||||
|
displayManager.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
sysconfig = {
|
||||||
|
opts = {
|
||||||
|
sddm.enable = true;
|
||||||
|
openssh.enable = true;
|
||||||
|
pipewire.enable = true;
|
||||||
|
ags.enable = true;
|
||||||
|
hyprland.enable = true;
|
||||||
|
git.enable = true;
|
||||||
|
nh.enable = true;
|
||||||
|
steam.enable = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
WLR_BACKENDS = "headless";
|
||||||
|
WLR_LIBINPUT_NO_DEVICES = "1";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
environment.shells = with pkgs; [ zsh ];
|
||||||
|
users.defaultUserShell = pkgs.zsh;
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "America/Chicago";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
i18n.extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "en_US.UTF-8";
|
||||||
|
LC_NAME = "en_US.UTF-8";
|
||||||
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
|
LC_PAPER = "en_US.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_US.UTF-8";
|
||||||
|
LC_TIME = "en_US.UTF-8";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "homebox";
|
||||||
|
nameservers = [ "1.1.1.1#one.one.one.one" "1.0.0.1#one.one.one.one" ];
|
||||||
|
networkmanager.enable = true;
|
||||||
|
firewall.allowedTCPPorts = [ 22 ];
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "23.05"; # Did you read the comment?
|
||||||
|
|
||||||
|
users.users."nathan" = {
|
||||||
|
isNormalUser = true;
|
||||||
|
initialPassword = "7567";
|
||||||
|
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAsU69CxfQk58CvItPN426h5Alnpb60SH37wet97Vb57 nathan@laptop"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.postDeviceCommands = lib.mkAfter ''
|
||||||
|
mkdir /btrfs_tmp
|
||||||
|
mount /dev/root_vg/root /btrfs_tmp
|
||||||
|
if [[ -e /btrfs_tmp/root ]]; then
|
||||||
|
mkdir -p /btrfs_tmp/old_roots
|
||||||
|
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
|
||||||
|
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
|
||||||
|
fi
|
||||||
|
|
||||||
|
delete_subvolume_recursively() {
|
||||||
|
IFS=$'\n'
|
||||||
|
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
|
||||||
|
delete_subvolume_recursively "/btrfs_tmp/$i"
|
||||||
|
done
|
||||||
|
btrfs subvolume delete "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
|
||||||
|
delete_subvolume_recursively "$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
btrfs subvolume create /btrfs_tmp/root
|
||||||
|
umount /btrfs_tmp
|
||||||
|
'';
|
||||||
|
|
||||||
|
fileSystems."/persist".neededForBoot = true;
|
||||||
|
environment.persistence."/persist/system" = {
|
||||||
|
hideMounts = true;
|
||||||
|
directories = [
|
||||||
|
"/etc/nixos"
|
||||||
|
"/var/log"
|
||||||
|
"/var/lib/bluetooth"
|
||||||
|
"/var/lib/nixos"
|
||||||
|
"/var/lib/systemd/coredump"
|
||||||
|
"/etc/NetworkManager/system-connections"
|
||||||
|
{ directory = "/var/lib/colord"; user = "colord"; group = "colord"; mode = "u=rwx,g=rx,o="; }
|
||||||
|
];
|
||||||
|
files = [
|
||||||
|
"/etc/machine-id"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key.pub"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key.pub"
|
||||||
|
{ file = "/var/keys/secret_file"; parentDirectory = { mode = "u=rwx,g=,o="; }; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fuse.userAllowOther = true;
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
backupFileExtension = ".backup";
|
||||||
|
extraSpecialArgs = {inherit inputs;};
|
||||||
|
users = {
|
||||||
|
"nathan" = lib.mkMerge [
|
||||||
|
inputs.nathan.homeManagerModule
|
||||||
|
{
|
||||||
|
config.homeconfig = {
|
||||||
|
hyprland.enable = true;
|
||||||
|
swaylock.enable = true;
|
||||||
|
wal.enable = true;
|
||||||
|
wayvnc.enable = true;
|
||||||
|
mpd.enable = true;
|
||||||
|
ags.enable = true;
|
||||||
|
calcurse.enable = true;
|
||||||
|
rofi.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [ nerdfonts ];
|
||||||
|
|
||||||
|
}
|
||||||
114
system-config/configuration/homebox/disko.nix
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
{
|
||||||
|
device1 ? throw "Set this to your disk device, e.g. /dev/sda",
|
||||||
|
device2,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
device = device1;
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
boot = {
|
||||||
|
name = "boot";
|
||||||
|
size = "1M";
|
||||||
|
type = "EF02";
|
||||||
|
};
|
||||||
|
esp = {
|
||||||
|
name = "ESP";
|
||||||
|
size = "500M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
swap = {
|
||||||
|
size = "4G";
|
||||||
|
content = {
|
||||||
|
type = "swap";
|
||||||
|
resumeDevice = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
name = "root";
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "lvm_pv";
|
||||||
|
vg = "root_vg";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ssd1 = {
|
||||||
|
device = device2;
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ssd1 = {
|
||||||
|
name = "ssd1";
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "lvm_pv";
|
||||||
|
vg = "ssd1_vg";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lvm_vg = {
|
||||||
|
root_vg = {
|
||||||
|
type = "lvm_vg";
|
||||||
|
lvs = {
|
||||||
|
root = {
|
||||||
|
size = "100%FREE";
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
|
extraArgs = ["-f"];
|
||||||
|
|
||||||
|
subvolumes = {
|
||||||
|
"/root" = {
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
|
||||||
|
"/persist" = {
|
||||||
|
mountOptions = ["subvol=persist" "noatime"];
|
||||||
|
mountpoint = "/persist";
|
||||||
|
};
|
||||||
|
|
||||||
|
"/nix" = {
|
||||||
|
mountOptions = ["subvol=nix" "noatime"];
|
||||||
|
mountpoint = "/nix";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ssd1_vg = {
|
||||||
|
type = "lvm_vg";
|
||||||
|
lvs = {
|
||||||
|
ssd1 = {
|
||||||
|
size = "100%FREE";
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
|
extraArgs = [ "-f" ];
|
||||||
|
subvolumes = {
|
||||||
|
"/ssd1" = {
|
||||||
|
mountOptions = [ "subvol=ssd1" "noatime" ];
|
||||||
|
mountpoint = "/ssd1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -8,8 +8,8 @@
|
|||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" ];
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
38
system-config/flake.nix
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
description = "Unified System Configuration";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
|
||||||
|
prgms.url = "./programs";
|
||||||
|
|
||||||
|
sddm.url = "./services/sddm";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, ... }@attrs: {
|
||||||
|
|
||||||
|
nixosModule = { config, lib, pkgs, inputs, ... }: {
|
||||||
|
imports = [
|
||||||
|
./services
|
||||||
|
./packages
|
||||||
|
attrs.prgms.module
|
||||||
|
attrs.sddm.module
|
||||||
|
];
|
||||||
|
|
||||||
|
options = {
|
||||||
|
sysconfig.opts = {
|
||||||
|
host = lib.options.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
username = lib.options.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "nathan";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
1
system-config/packages/default.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@@ -1,15 +1,10 @@
|
|||||||
{
|
{ config, lib, pkgs, ... }: {
|
||||||
description = "ags dependancies";
|
|
||||||
|
|
||||||
inputs = {
|
options.sysconfig.opts.ags.enable = lib.options.mkOption {
|
||||||
|
|
||||||
};
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
outputs = { self, ... }: {
|
};
|
||||||
|
|
||||||
module = { config, lib, pkgs, ... }: {
|
|
||||||
|
|
||||||
options.sysconfig.opts.ags.enable = lib.options.mkOption {};
|
|
||||||
|
|
||||||
config = lib.mkIf config.sysconfig.opts.ags.enable {
|
config = lib.mkIf config.sysconfig.opts.ags.enable {
|
||||||
services = {
|
services = {
|
||||||
@@ -18,7 +13,4 @@
|
|||||||
power-profiles-daemon.enable = true;
|
power-profiles-daemon.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
@@ -2,8 +2,6 @@
|
|||||||
description = "System program config";
|
description = "System program config";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
|
|
||||||
ags.url = "./ags";
|
|
||||||
|
|
||||||
hyprland.url = "./hyprland";
|
hyprland.url = "./hyprland";
|
||||||
};
|
};
|
||||||
@@ -14,7 +12,7 @@
|
|||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.hyprland.module
|
inputs.hyprland.module
|
||||||
inputs.ags.module
|
./ags
|
||||||
./git
|
./git
|
||||||
./nh
|
./nh
|
||||||
./steam
|
./steam
|
||||||
@@ -9,7 +9,11 @@
|
|||||||
|
|
||||||
module = { config, lib, pkgs, ... }: {
|
module = { config, lib, pkgs, ... }: {
|
||||||
|
|
||||||
options.sysconfig.opts.hyprland.enable = lib.options.mkOption {};
|
options.sysconfig.opts.hyprland.enable = lib.options.mkOption {
|
||||||
|
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.sysconfig.opts.hyprland.enable {
|
config = lib.mkIf config.sysconfig.opts.hyprland.enable {
|
||||||
|
|
||||||
8
system-config/services/default.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ ... }: {
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./ollama
|
||||||
|
./openssh
|
||||||
|
./pipewire
|
||||||
|
];
|
||||||
|
}
|
||||||