feat: further work moving towards parity

This commit is contained in:
Kat Inskip 2022-12-04 16:49:39 +01:00
parent 419fcaa79f
commit dbbac0ae23
Signed by: kat
GPG key ID: 465E64DECEA8CF0F
10 changed files with 147 additions and 25 deletions

2
home/profiles/base.nix Normal file
View file

@ -0,0 +1,2 @@
{ config, ... }: {
}

15
nixos/modules/gnome.nix Normal file
View 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
View 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
View 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;
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, ... }: let
inherit (lib.modules) mkIf;
in {
config = mkIf config.role.personal {
services.fstrim.enable = true;
};
}

View file

@ -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

View file

@ -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";
} }

View file

@ -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"
];
}; };
} }

View file

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