diff --git a/flake.nix b/flake.nix index 09e2718..0bae5ef 100644 --- a/flake.nix +++ b/flake.nix @@ -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; diff --git a/lib/home.nix b/lib/home.nix index a9be1ed..4b1540d 100644 --- a/lib/home.nix +++ b/lib/home.nix @@ -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; + }; -} \ No newline at end of file +} diff --git a/lib/mkconf.nix b/lib/mkconf.nix index c175b46..bd35fef 100644 --- a/lib/mkconf.nix +++ b/lib/mkconf.nix @@ -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; }) ]; } diff --git a/lib/modules/dev.nix b/lib/modules/dev.nix new file mode 100644 index 0000000..233197c --- /dev/null +++ b/lib/modules/dev.nix @@ -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 + ]); + }]; + }; +} diff --git a/lib/modules/display.nix b/lib/modules/display.nix index bc98293..669f274 100644 --- a/lib/modules/display.nix +++ b/lib/modules/display.nix @@ -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 ""); diff --git a/lib/modules/editor.nix b/lib/modules/editor.nix index 4793ffc..aaa1a8d 100644 --- a/lib/modules/editor.nix +++ b/lib/modules/editor.nix @@ -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; diff --git a/lib/modules/email.nix b/lib/modules/email.nix index f595a05..a89d151 100644 --- a/lib/modules/email.nix +++ b/lib/modules/email.nix @@ -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; diff --git a/lib/modules/gamer.nix b/lib/modules/gamer.nix new file mode 100644 index 0000000..b3a2d98 --- /dev/null +++ b/lib/modules/gamer.nix @@ -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; + }; + }; +} diff --git a/lib/modules/laptop.nix b/lib/modules/laptop.nix index f11c371..2c2e776 100644 --- a/lib/modules/laptop.nix +++ b/lib/modules/laptop.nix @@ -28,6 +28,9 @@ in gaps_out = 10 border_size = 3 } + + # so hard to reach X on a laptop + bind = SUPER_SHIFT, Q, killactive, ''; }; }]; diff --git a/lib/modules/personal.nix b/lib/modules/personal.nix new file mode 100644 index 0000000..1fb6106 --- /dev/null +++ b/lib/modules/personal.nix @@ -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 + ]; + }]; + }; +} diff --git a/lib/modules/terminal.nix b/lib/modules/terminal.nix index cfef2b8..8a84a42 100644 --- a/lib/modules/terminal.nix +++ b/lib/modules/terminal.nix @@ -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; }; diff --git a/lib/modules/work.nix b/lib/modules/work.nix index a99608d..d32560b 100644 --- a/lib/modules/work.nix +++ b/lib/modules/work.nix @@ -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" diff --git a/system/global/home.nix b/system/global/home.nix index a883fc9..766186f 100644 --- a/system/global/home.nix +++ b/system/global/home.nix @@ -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" ]; + }; + }; + }; + }; + }; } diff --git a/system/global/system.nix b/system/global/system.nix index 6574767..7009ec0 100644 --- a/system/global/system.nix +++ b/system/global/system.nix @@ -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; diff --git a/system/zenix/home.nix b/system/zenix/home.nix index b67fb22..8f227a6 100644 --- a/system/zenix/home.nix +++ b/system/zenix/home.nix @@ -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 ''; }; } diff --git a/system/zenix/system.nix b/system/zenix/system.nix index bd0db68..07fd7f4 100644 --- a/system/zenix/system.nix +++ b/system/zenix/system.nix @@ -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; - }; - }