mirror of
https://github.com/kittywitch/nixfiles.git
synced 2026-02-09 04:19:19 -08:00
feat: further work moving towards parity
This commit is contained in:
parent
419fcaa79f
commit
dbbac0ae23
10 changed files with 147 additions and 25 deletions
2
home/profiles/base.nix
Normal file
2
home/profiles/base.nix
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
{ config, ... }: {
|
||||||
|
}
|
||||||
15
nixos/modules/gnome.nix
Normal file
15
nixos/modules/gnome.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{ config, lib, pkgs, ... }: let
|
||||||
|
inherit (lib.modules) mkIf;
|
||||||
|
in {
|
||||||
|
config = mkIf config.role.gnome {
|
||||||
|
services.xserver = {
|
||||||
|
desktopManager.gnome.enable = true;
|
||||||
|
displayManager.gdm.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs.gnomeExtensions; [
|
||||||
|
dash-to-dock
|
||||||
|
gsconnect
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
14
nixos/modules/home.nix
Normal file
14
nixos/modules/home.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{ config, tree, machine, ... }: {
|
||||||
|
home-manager = {
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
sharedModules = [
|
||||||
|
tree.home.modules
|
||||||
|
tree.system.modules
|
||||||
|
];
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit tree machine;
|
||||||
|
nixos = config;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
8
nixos/modules/laptop.nix
Normal file
8
nixos/modules/laptop.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{ config, lib, ... }: let
|
||||||
|
inherit (lib.modules) mkIf mkDefault;
|
||||||
|
in {
|
||||||
|
config = mkIf config.role.laptop {
|
||||||
|
powerManagement.cpuFreqGovernor = mkDefault "powersave";
|
||||||
|
programs.light.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
7
nixos/modules/personal.nix
Normal file
7
nixos/modules/personal.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{ config, lib, ... }: let
|
||||||
|
inherit (lib.modules) mkIf;
|
||||||
|
in {
|
||||||
|
config = mkIf config.role.personal {
|
||||||
|
services.fstrim.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,16 +1,7 @@
|
||||||
{ config, lib, ... }: let
|
{ config, lib, ... }: let
|
||||||
inherit (lib.options) mkOption mdDoc;
|
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.attrsets) mapAttrsToList;
|
inherit (lib.attrsets) mapAttrsToList;
|
||||||
inherit (lib.types) bool;
|
|
||||||
in {
|
in {
|
||||||
options = {
|
|
||||||
role.server = mkOption {
|
|
||||||
type = bool;
|
|
||||||
description = mdDoc "Is this system's role a server?";
|
|
||||||
default = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = mkIf config.role.server {
|
config = mkIf config.role.server {
|
||||||
# Prevent services from being automatically killed on log-out
|
# Prevent services from being automatically killed on log-out
|
||||||
# https://wiki.archlinux.org/title/systemd/User#Automatic_start-up_of_systemd_user_instances
|
# https://wiki.archlinux.org/title/systemd/User#Automatic_start-up_of_systemd_user_instances
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,51 @@
|
||||||
{ config, ... }: {
|
{ config, ... }: {
|
||||||
|
role = {
|
||||||
|
laptop = true;
|
||||||
|
personal = true;
|
||||||
|
gnome = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems = {
|
||||||
|
"/" = {
|
||||||
|
device = "/dev/disk/by-uuid/a664de0f-9883-420e-acc5-b9602a23e816";
|
||||||
|
fsType = "xfs";
|
||||||
|
};
|
||||||
|
"/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/DEBC-8F03";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{ device = "/dev/disk/by-uuid/0d846453-95b4-46e1-8eaf-b910b4321ef0"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
supportedFilesystems = [ "xfs" ];
|
||||||
|
initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/f0ea08b4-6af7-4d90-a2ad-edd5672a2105";
|
||||||
|
loader = {
|
||||||
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
efiSysMountPoint = "/boot";
|
||||||
|
};
|
||||||
|
grub = {
|
||||||
|
devices = [ "nodev" ];
|
||||||
|
efiSupport = true;
|
||||||
|
enable = true;
|
||||||
|
extraEntries = ''
|
||||||
|
menuentry "Windows" {
|
||||||
|
insmod part_gpt
|
||||||
|
insmod fat
|
||||||
|
insmod search_fs_uuid
|
||||||
|
insmod chain
|
||||||
|
search --fs-uuid --set=root DEBC-8F03
|
||||||
|
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
version = 2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "21.11";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
{ tree, config, ... }: with lib;
|
{ tree, config, ... }: {
|
||||||
|
|
||||||
{
|
|
||||||
users.users.kat = {
|
users.users.kat = {
|
||||||
uid = 1000;
|
uid = 1000;
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
|
|
@ -10,6 +8,13 @@
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII74JrgGsDQ6r7tD7+k3ykxXV7DpeeFRscPMxrBsDPhz kat@goliath"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII74JrgGsDQ6r7tD7+k3ykxXV7DpeeFRscPMxrBsDPhz kat@goliath"
|
||||||
];
|
];
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
extraGroups = [ "wheel" "video" "systemd-journal" "plugdev" "bird2" "vfio" "input" "uinput" ];
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"video"
|
||||||
|
"systemd-journal"
|
||||||
|
"plugdev"
|
||||||
|
"input"
|
||||||
|
"uinput"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
25
outputs.nix
25
outputs.nix
|
|
@ -9,6 +9,11 @@
|
||||||
"default"
|
"default"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
"system/modules" = {
|
||||||
|
functor = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
"nixos/modules" = {
|
"nixos/modules" = {
|
||||||
functor = {
|
functor = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -27,14 +32,11 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"home".evaluateDefault = true;
|
|
||||||
"home/*" = {
|
|
||||||
functor.enable = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}).impure;
|
}).impure;
|
||||||
lib = inputs.nixpkgs.lib;
|
lib = inputs.nixpkgs.lib;
|
||||||
inherit (lib.attrsets) mapAttrs;
|
inherit (lib.attrsets) mapAttrs;
|
||||||
|
inherit (builtins) removeAttrs;
|
||||||
inherit (lib.lists) singleton;
|
inherit (lib.lists) singleton;
|
||||||
in utils.lib.mkFlake {
|
in utils.lib.mkFlake {
|
||||||
inherit self inputs;
|
inherit self inputs;
|
||||||
|
|
@ -43,6 +45,9 @@ in utils.lib.mkFlake {
|
||||||
|
|
||||||
hostDefaults = {
|
hostDefaults = {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
tree.system.modules
|
||||||
|
];
|
||||||
extraArgs = {
|
extraArgs = {
|
||||||
inherit inputs tree;
|
inherit inputs tree;
|
||||||
};
|
};
|
||||||
|
|
@ -96,18 +101,14 @@ in utils.lib.mkFlake {
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit inputs tree;
|
inherit inputs tree;
|
||||||
machine = name;
|
machine = name;
|
||||||
|
nixos = {};
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
({ config, ... }: {
|
tree.system.modules
|
||||||
home = {
|
tree.home.common
|
||||||
username = "kat";
|
|
||||||
stateVersion = "22.11";
|
|
||||||
homeDirectory = "/home/kat";
|
|
||||||
};
|
|
||||||
})
|
|
||||||
path
|
path
|
||||||
];
|
];
|
||||||
}) tree.home;
|
}) tree.home.profiles;
|
||||||
|
|
||||||
inherit tree;
|
inherit tree;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
30
system/modules/roles.nix
Normal file
30
system/modules/roles.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{ config, lib, ... }: let
|
||||||
|
inherit (lib.options) mkOption mdDoc;
|
||||||
|
inherit (lib.modules) mkIf mkDefault;
|
||||||
|
inherit (lib.types) bool;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
role = {
|
||||||
|
server = mkOption {
|
||||||
|
type = bool;
|
||||||
|
description = mdDoc "Is this system's role as a server?";
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
personal = mkOption {
|
||||||
|
type = bool;
|
||||||
|
description = mdDoc "Is this system's role as a personal device?";
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
laptop = mkOption {
|
||||||
|
type = bool;
|
||||||
|
description = mdDoc "Is this system's role as a laptop?";
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
gnome = mkOption {
|
||||||
|
type = bool;
|
||||||
|
description = mdDoc "Does this system's role include running GNOME?";
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue