modularise the stuff

This commit is contained in:
tristan 2023-05-08 16:59:12 +01:00
parent 011009d22f
commit d1bcbc0fde
16 changed files with 159 additions and 61 deletions

View file

@ -28,6 +28,18 @@
nixosConfigurations = {
zenix = mkConf "zenix" {
inherit pkgs nixpkgs system user userName home-manager hyprland;
displays = [
{
name = "DP-1";
resolution = {x=1920;y=1080;freq=144;};
wallpaper = "~/Pictures/backgrounds/demonslayer.jpg";
}
{
name = "HDMI-A-1";
resolution = {x=1920;y=1080;freq=60;};
wallpaper = "~/Pictures/backgrounds/nier.jpg";
}
];
};
FCS-Tristan-Nixbook = mkConf "work" {
inherit pkgs nixpkgs system user userName home-manager hyprland;

View file

@ -19,6 +19,9 @@
(import ./modules/email.nix { inherit user userName; })
(import ./modules/git.nix { inherit user userName; })
(import ./modules/laptop.nix { inherit user; })
(import ./modules/dev.nix { inherit user; })
(import ./modules/personal.nix { inherit user; })
(import ./modules/gamer.nix { inherit user; })
./scripts.nix
../system/global/system.nix
../system/${name}/system.nix
@ -32,6 +35,10 @@
roles.laptop.enable = laptop;
roles.work.enable = work;
roles.git.enable = true;
roles.personal.enable = !work;
displays = {
enable = true;
displays = displays;
};
}
}

View file

@ -30,6 +30,6 @@ nixpkgs.lib.nixosSystem rec {
hyprland.homeManagerModules.default
];
}
(import ./home.nix { inherit user userName name hyprland laptop work; })
(import ./home.nix { inherit user userName name hyprland laptop work displays; })
];
}

25
lib/modules/dev.nix Normal file
View file

@ -0,0 +1,25 @@
{ user, ... }: { lib, pkgs, config, ... }:
with lib;
let
cfg = config.roles.dev;
in
{
options.roles = {
dev = {
enable = mkEnableOption "editor";
};
};
config = mkIf cfg.enable {
programs.editor.enable = true;
roles.git.enable = true;
programs.terminal.enable = true;
home-manager.users.${user}.imports = [{
home.packages = (with pkgs; [
insomnia
dbeaver
ansible
]);
}];
};
}

View file

@ -13,6 +13,7 @@ let
", " + display.position +
", " + toString display.scaling +
(if ( display.wallpaper != "" ) then ''
exec-once = ${pkgs.swaybg}/bin/swaybg -o ${display.name} -i ${display.wallpaper} &
'' else "");

View file

@ -5,14 +5,13 @@ let
pkg = editor.package;
terminal = config.programs.terminal.package;
termcmd = "${terminal}/bin/${terminal.pname}";
menu = "wofi --show dmenu";
menu = config.programs.menu.package+config.programs.menu.dmenuCommand;
in
{
options.programs = {
editor = {
enable = mkEnableOption "editor";
package = mkPackageOption pkgs "vscodium" {
default = pkgs.vscodium;
example = "pkgs.vscode";
};
neovim = mkEnableOption "neovim mode";
@ -37,7 +36,7 @@ in
clone-repo)
url=$(wl-paste)
${termcmd} -e -- git clone "$url" ;;
*) [ -e "$repo" ] && ${pkg}/bin/${pkg.pname} $repo ;;
*) [ -e "$repo" ] && ${pkg}/bin/${pkg.executableName} $repo ;;
esac
'';
install = false;

View file

@ -2,6 +2,8 @@
with lib;
let
cfg = config.roles.email;
terminal = config.programs.terminal.package;
termcmd = "${terminal}/bin/${terminal.pname}";
in
{
options.roles = {
@ -18,6 +20,18 @@ in
};
config = mkIf cfg.enable {
programs.scripts = [
{
name = "email";
text = ''
${termcmd} -e aerc
'';
install = false;
hotkeys = [{key = "E";}];
}
];
home-manager.users.${user}.imports = [{
programs.git = {
userName = userName;

30
lib/modules/gamer.nix Normal file
View file

@ -0,0 +1,30 @@
{ user }: { lib, pkgs, config, ... }:
with lib;
{
options.roles.gamer = {
enable = mkEnableOption "gamer packages";
};
config = mkIf config.roles.gamer.enable {
home-manager.users.${user}.imports = [{
home.packages = with pkgs; [
airshipper
minetest
];
}];
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
# gamer time
"steam"
"steam-run"
"steam-original"
];
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
};
};
}

View file

@ -28,6 +28,9 @@ in
gaps_out = 10
border_size = 3
}
# so hard to reach X on a laptop
bind = SUPER_SHIFT, Q, killactive,
'';
};
}];

33
lib/modules/personal.nix Normal file
View file

@ -0,0 +1,33 @@
{ user }: { lib, pkgs, config, ... }:
with lib;
{
options.roles.personal = {
enable = mkEnableOption "personal packages";
};
config = mkIf config.roles.personal.enable {
roles.email = {
enable = true;
email = "tristan@tristans.cloud";
terminal = true;
};
roles.dev.enable = true;
roles.gamer.enable = true;
home-manager.users.${user}.imports = [{
services.nextcloud-client.enable = true;
home.packages = with pkgs; [
nextcloud-client
godot_4
ardour
blender
musescore
handbrake
monero-gui
xmrig
];
}];
};
}

View file

@ -15,7 +15,7 @@ in
config = mkIf cfg.enable {
home-manager.users.${user}.imports = [{
programs.foot = mkIf cfg.package == pkgs.foot {
programs.foot = mkIf ( cfg.package == pkgs.foot ) {
enable = true;
server.enable = true;
};

View file

@ -13,6 +13,13 @@ with lib;
terminal = false;
};
roles.dev.enable = true;
programs.editor = {
enable = true;
package = pkgs.vscode;
};
home-manager.users.${user}.imports = [{
home.packages = with pkgs; [
@ -22,7 +29,6 @@ with lib;
docker-compose
minikube
kubernetes-helm
ansible
thunderbird
(import ../mkapp.nix "slack" {
inherit pkgs;
@ -65,11 +71,6 @@ with lib;
}];
programs.editor = {
enable = true;
package = pkgs.vscode;
};
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
# nonfree vscode required for dev containers
"vscode"

View file

@ -45,10 +45,10 @@ in
inkscape
pavucontrol
dbeaver
qpwgraph
element-desktop
brave
gimp
quickemu
bitwarden
libsForQt5.kasts
@ -118,7 +118,7 @@ in
}
}
bind = SUPER_SHIFT, Q, killactive,
bind = SUPER_SHIFT, X, killactive,
bind = SUPER_SHIFT, E, exit,
bind = SUPER, SLASH, focuswindow, brave-browser
bind = SUPER, n, focuswindow, Logseq
@ -849,6 +849,21 @@ color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-
}
'';
};
programs.neovim = {
enable = true;
coc = {
enable = true;
settings = {
languageserver = {
go = {
command = "${pkgs.gopls}/bin/gopls";
filetypes = [ "go" ];
};
};
};
};
};
}

View file

@ -63,7 +63,10 @@
i18n.defaultLocale = "en_GB.UTF-8";
services.xserver.layout = "gb";
services.xserver = {
layout = "gb";
xkbOptions = "caps:escape";
};
services.greetd = {
enable = true;

View file

@ -4,33 +4,8 @@
# don't change
home.stateVersion = "22.05";
home.packages = with pkgs; [
gimp
nextcloud-client
godot_4
ardour
blender
musescore
ansible
handbrake
monero-gui
xmrig
#gamer
airshipper
minetest
];
services.nextcloud-client.enable = true;
services.nextcloud-client.startInBackground = true;
wayland.windowManager.hyprland = {
extraConfig = ''
exec-once = ${ pkgs.swaybg }/bin/swaybg -o DP-1 -i ~/Pictures/backgrounds/demonslayer.jpg -o HDMI-A-1 -i ~/Pictures/backgrounds/nier.jpg &
monitor = DP-1, 1920x1080@144,0x0, 1
monitor = HDMI-A-1, 1920x1080@60, 1920x0,1
workspace = DP-1, 1
workspace = HDMI-A-1, 6
wsbind = 1, DP-1
@ -43,8 +18,6 @@
wsbind = 8, HDMI-A-1
wsbind = 9, HDMI-A-1
wsbind = 10,HDMI-A-1
bind = SUPER_SHIFT, X, killactive,
bind = SUPER, E, exec, foot -e aerc
'';
};
}

View file

@ -5,11 +5,6 @@
networking.hostName = "zenix";
services.xserver = {
layout = "gb";
xkbOptions = "caps:escape";
};
services.openssh.enable = true;
networking.firewall.checkReversePath = "loose";
@ -22,18 +17,5 @@
};
};
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
# gamer time
"steam"
"steam-run"
"steam-original"
];
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
};
}