From e27215508808cea83f60f812000e1ea72c7f714e Mon Sep 17 00:00:00 2001 From: tristan Date: Sat, 6 Jan 2024 17:40:24 +0000 Subject: [PATCH] rearrange imports --- flake.nix | 44 +++-- .../{work.nix => fcs-tristan-nixbook.nix} | 6 +- hardware/g920.nix | 13 +- hardware/vm.nix | 13 +- hardware/zenix.nix | 14 +- home/default.nix | 27 +-- home/programs/git.nix | 1 + home/programs/personal.nix | 32 ++++ lib/mkconf.nix | 74 ++++---- nixos/default.nix | 18 +- nixos/modules/display.nix | 5 +- nixos/modules/gamer.nix | 35 ---- nixos/modules/keyboard.nix | 4 +- nixos/modules/laptop.nix | 4 +- nixos/modules/personal.nix | 56 ------ nixos/modules/work.nix | 169 +++++++++--------- nixos/programs/gamer.nix | 16 ++ nixos/programs/hyprland.nix | 14 +- nixos/programs/personal.nix | 12 ++ 19 files changed, 245 insertions(+), 312 deletions(-) rename hardware/{work.nix => fcs-tristan-nixbook.nix} (98%) create mode 100644 home/programs/personal.nix delete mode 100644 nixos/modules/gamer.nix delete mode 100644 nixos/modules/personal.nix create mode 100644 nixos/programs/gamer.nix create mode 100644 nixos/programs/personal.nix diff --git a/flake.nix b/flake.nix index 90a08b2..e8ae86d 100644 --- a/flake.nix +++ b/flake.nix @@ -15,30 +15,36 @@ }; }; - outputs = { - nixpkgs, - home-manager, - stylix, - ... - } @ inputs: let + outputs = inputs: let system = "x86_64-linux"; - mkConf = import ./lib/mkconf.nix; - pkgs = import nixpkgs {inherit system;}; + pkgs = import inputs.nixpkgs {inherit system;}; user = "tristan"; - userName = "Tristan Beedell"; + userFullname = "Tristan Beedell"; + + mkConf = import ./lib/mkconf.nix {inherit inputs system user userFullname;}; in { formatter.${system} = pkgs.alejandra; nixosConfigurations = { - zenix = mkConf "zenix" { - inherit inputs nixpkgs system user userName home-manager; - }; - vm = mkConf "vm" { - inherit inputs nixpkgs system user userName home-manager; - }; - FCS-Tristan-Nixbook = mkConf "work" { - inherit inputs nixpkgs system user userName home-manager; - work = true; - }; + zenix = + mkConf [ + ./hardware/zenix.nix + ./nixos/programs/hyprland.nix + ./nixos/programs/gamer.nix + ./nixos/programs/personal.nix + ] [ + ./home/programs/gamer.nix + ./home/programs/personal.nix + ]; + + vm = mkConf [ + ./hardware/vm.nix + ] []; + + FCS-Tristan-Nixbook = mkConf [ + ./hardware/fcs-tristan-nixbook.nix + ./nixos/programs/hyprland.nix + ./nixos/modules/work.nix + ] []; }; }; } diff --git a/hardware/work.nix b/hardware/fcs-tristan-nixbook.nix similarity index 98% rename from hardware/work.nix rename to hardware/fcs-tristan-nixbook.nix index c531d9b..9adda5f 100644 --- a/hardware/work.nix +++ b/hardware/fcs-tristan-nixbook.nix @@ -1,10 +1,12 @@ -{user}: { +{ config, lib, pkgs, modulesPath, ... -}: { +}: let + user = config.user; +in { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; diff --git a/hardware/g920.nix b/hardware/g920.nix index b76a5a1..134a104 100644 --- a/hardware/g920.nix +++ b/hardware/g920.nix @@ -1,13 +1,6 @@ -{ - pkgs, - user, -}: { - home-manager.users.${user}.imports = [ - { - home.packages = with pkgs; [ - oversteer - ]; - } +{pkgs, ...}: { + environment.systemPackages = with pkgs; [ + oversteer ]; environment.etc.logitechG920 = { diff --git a/hardware/vm.nix b/hardware/vm.nix index a30ab9b..ddcf7e4 100644 --- a/hardware/vm.nix +++ b/hardware/vm.nix @@ -1,18 +1,11 @@ -{user}: { - modulesPath, - lib, - config, - ... -}: { - imports = [ - ]; - +{config, ...}: let + user = config.user; +in { system.stateVersion = "24.05"; home-manager.users.${user}.imports = [ { home.stateVersion = "24.05"; } - ../home/programs/sway.nix ]; } diff --git a/hardware/zenix.nix b/hardware/zenix.nix index 3e033a7..5fae2f8 100644 --- a/hardware/zenix.nix +++ b/hardware/zenix.nix @@ -1,14 +1,16 @@ -{user}: { +{ config, lib, pkgs, modulesPath, ... -}: { +}: let + user = config.user; +in { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ./ddc.nix - (import ./g920.nix {inherit user pkgs;}) + ./g920.nix ]; boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"]; @@ -79,12 +81,6 @@ system.stateVersion = "22.11"; # do not change - virtualisation = { - podman = { - enable = true; - }; - }; - home-manager.users.${user}.imports = [ { home.stateVersion = "22.05"; diff --git a/home/default.nix b/home/default.nix index 0b4b985..9200c65 100644 --- a/home/default.nix +++ b/home/default.nix @@ -3,30 +3,8 @@ pkgs, ... }: -# https://nix-community.github.io/home-manager/options.html -let - my-deps = { - notify-send = "${pkgs.libnotify}/bin/notify-send"; - playerctl = "${pkgs.playerctl}/bin/playerctl"; - grim = "${pkgs.grim}/bin/grim"; - slurp = "${pkgs.slurp}/bin/slurp"; - amixer = "${pkgs.alsa-utils}/bin/amixer"; - swaybg = "${pkgs.swaybg}/bin/swaybg"; - terminal = "${config.programs.terminal}/bin/${config.programs.terminal.pname}"; - chafa = "${pkgs.chafa}/bin/chafa"; - exiftool = "${pkgs.exiftool}/bin/exiftool"; - wc = "${pkgs.coreutils}/bin/wc"; - jq = "${pkgs.jq}/bin/jq"; - hyprctl = "${pkgs.hyprland}/bin/hyprctl"; - xargs = "${pkgs.findutils}/bin/xargs"; - menu = "${config.programs.menu.package}${config.programs.menu.dmenuCommand}"; - fileman = "${pkgs.pcmanfm}/bin/pcmanfm"; - gawk = "${pkgs.gawk}/bin/awk"; - glow = "${pkgs.glow}/bin/glow"; - ffmpegthumbnailer = "${pkgs.ffmpegthumbnailer}/bin/ffmpegthumbnailer"; - }; - # lf-sixel = pkgs.callPackage ../custom/lf-sixel/. {}; -in { +# https://nix-community.github.io/home-manager/options.xhtml +{ imports = [ ./modules/terminal.nix ./modules/scripts.nix @@ -36,6 +14,7 @@ in { ./modules/menu.nix ./modules/scripts.nix + ./programs/hyprland.nix ./programs/graphical.nix ./programs/scripts.nix ./programs/neovim/. diff --git a/home/programs/git.nix b/home/programs/git.nix index cc2774b..0f9006f 100644 --- a/home/programs/git.nix +++ b/home/programs/git.nix @@ -4,6 +4,7 @@ aliases = { graph = "log --oneline --all --graph"; amend = "commit --amend --no-edit"; + sdiff = "diff --staged"; }; delta = { enable = true; diff --git a/home/programs/personal.nix b/home/programs/personal.nix new file mode 100644 index 0000000..83b5397 --- /dev/null +++ b/home/programs/personal.nix @@ -0,0 +1,32 @@ +{pkgs, ...}: { + roles.email = { + enable = true; + email = "tristan@tristans.cloud"; + terminal = true; + }; + + services.nextcloud-client.enable = true; + services.gnome-keyring.enable = true; + + home.language = { + base = "eo.UTF-8"; + }; + + home.packages = with pkgs; [ + godot_4 + ardour + blender + musescore + jellyfin-media-player + monero-gui + electrum + xmrig + transmission-remote-gtk + krita + organicmaps + anki + hugo + libsForQt5.neochat + bookworm + ]; +} diff --git a/lib/mkconf.nix b/lib/mkconf.nix index 403dc71..2659afd 100644 --- a/lib/mkconf.nix +++ b/lib/mkconf.nix @@ -1,45 +1,45 @@ -name: { - nixpkgs, +{ inputs, - home-manager, system, user, - laptop ? false, - work ? false, - userName, + userFullname, ... -}: -nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs;}; +}: modules: home-modules: +with inputs; + nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs;}; - inherit system; + inherit system; - modules = [ - inputs.stylix.nixosModules.stylix - home-manager.nixosModules.home-manager - { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - users.${user}.imports = [ - ../home/. - { - options.home.userFullname = nixpkgs.lib.mkOption {default = userName;}; - config.home.username = user; - } - ]; - }; - nixpkgs.config.packageOverrides = pkgs: { - hycov = inputs.hycov.packages.${system}.hycov; - }; + modules = + modules + ++ [ + stylix.nixosModules.stylix + home-manager.nixosModules.home-manager + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.${user}.imports = + home-modules + ++ [ + ../home/. + { + options.home.userFullname = nixpkgs.lib.mkOption {default = userFullname;}; + config.home.username = user; + } + ]; + }; + nixpkgs.config.packageOverrides = pkgs: { + hycov = hycov.packages.${system}.hycov; + }; - imports = [ - (import ../hardware/${name}.nix {inherit user;}) - (import ../nixos/. user) + imports = [ + { + options.user = nixpkgs.lib.mkOption {default = user;}; + } + ../nixos/. + ]; + } ]; - - roles.work.enable = work; - roles.personal.enable = !work; - } - ]; -} + } diff --git a/nixos/default.nix b/nixos/default.nix index 3236e9e..17a4f74 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -1,19 +1,17 @@ # https://search.nixos.org/options -user: { +{ inputs, config, pkgs, lib, ... -}: { +}: let + user = config.user; +in { imports = [ - (import ./modules/gamer.nix {inherit user;}) - (import ./modules/keyboard.nix {inherit user;}) - (import ./modules/display.nix {inherit user;}) - (import ./modules/work.nix {inherit user;}) - (import ./modules/laptop.nix {inherit user;}) - (import ./modules/personal.nix {inherit user;}) - (import ./programs/hyprland.nix {inherit user;}) + ./modules/keyboard.nix + ./modules/display.nix + ./modules/laptop.nix ../hardware/displays.nix ]; @@ -121,7 +119,7 @@ user: { users.users.${user} = { isNormalUser = true; - extraGroups = ["wheel" "video" "networkmanager"]; + extraGroups = ["wheel" "video" "networkmanager" "kvm"]; initialPassword = "pass"; shell = pkgs.zsh; }; diff --git a/nixos/modules/display.nix b/nixos/modules/display.nix index d074aa6..3f6a933 100644 --- a/nixos/modules/display.nix +++ b/nixos/modules/display.nix @@ -1,12 +1,13 @@ -{user}: { +{ lib, pkgs, config, ... }: with lib; let - cfg = config.displays; + user = config.user; + cfg = config.displays; renderDisplaysForHyprland = displays: (map displayHyprlandSetting (builtins.filter (d: d.enable) displays)); displayHyprlandSetting = display: diff --git a/nixos/modules/gamer.nix b/nixos/modules/gamer.nix deleted file mode 100644 index d7d0286..0000000 --- a/nixos/modules/gamer.nix +++ /dev/null @@ -1,35 +0,0 @@ -{user}: { - lib, - pkgs, - config, - ... -}: -with lib; { - options.roles.gamer = { - enable = mkEnableOption "gamer packages"; - }; - - config = mkIf config.roles.gamer.enable { - # required for heroic launcher - nixpkgs.config.permittedInsecurePackages = [ - "electron-25.9.0" - ]; - - home-manager.users.${user}.imports = [ ../../home/programs/gamer.nix ]; - - nixpkgs.config.allowUnfreePredicate = pkg: - builtins.elem (lib.getName pkg) [ - "steam" - "steam-run" - "steam-original" - "osu-lazer" - ]; - - programs.steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = true; - }; - programs.gamemode.enable = true; - }; -} diff --git a/nixos/modules/keyboard.nix b/nixos/modules/keyboard.nix index 5de4492..a074458 100644 --- a/nixos/modules/keyboard.nix +++ b/nixos/modules/keyboard.nix @@ -1,9 +1,9 @@ -{user}: { +{ lib, - pkgs, config, ... }: +let user = config.user; in with lib; { options.keyboard = { dvorak = { diff --git a/nixos/modules/laptop.nix b/nixos/modules/laptop.nix index f4c5842..6cf606a 100644 --- a/nixos/modules/laptop.nix +++ b/nixos/modules/laptop.nix @@ -1,11 +1,11 @@ -{user}: { +{ lib, - pkgs, config, ... }: with lib; let cfg = config.roles.laptop; + user = config.user; in { options.roles = { laptop = { diff --git a/nixos/modules/personal.nix b/nixos/modules/personal.nix deleted file mode 100644 index 815ea1e..0000000 --- a/nixos/modules/personal.nix +++ /dev/null @@ -1,56 +0,0 @@ -{user}: { - lib, - pkgs, - config, - ... -}: -with lib; { - options.roles.personal = { - enable = mkEnableOption "personal packages"; - }; - - config = mkIf config.roles.personal.enable { - roles.gamer.enable = true; - - i18n.supportedLocales = [ - "eo/UTF-8" - "en_GB.UTF-8/UTF-8" - "en_US.UTF-8/UTF-8" - ]; - - home-manager.users.${user}.imports = [ - { - roles.email = { - enable = true; - email = "tristan@tristans.cloud"; - terminal = true; - }; - - services.nextcloud-client.enable = true; - services.gnome-keyring.enable = true; - - home.language = { - base = "eo.UTF-8"; - }; - - home.packages = with pkgs; [ - godot_4 - ardour - blender - musescore - jellyfin-media-player - monero-gui - electrum - xmrig - transmission-remote-gtk - krita - organicmaps - anki - hugo - libsForQt5.neochat - bookworm - ]; - } - ]; - }; -} diff --git a/nixos/modules/work.nix b/nixos/modules/work.nix index 6d0701e..e5c1a2c 100644 --- a/nixos/modules/work.nix +++ b/nixos/modules/work.nix @@ -1,102 +1,95 @@ -{user}: { +user: { lib, pkgs, config, ... -}: -with lib; { - options.roles.work = { - enable = mkEnableOption "work packages"; - }; +}: { + home-manager.users.${user}.imports = [ + { + roles.email = { + enable = true; + email = "tristan.beedell@cryoserver.com"; + terminal = false; + }; - config = mkIf config.roles.work.enable { - home-manager.users.${user}.imports = [ - { - roles.email = { - enable = true; - email = "tristan.beedell@cryoserver.com"; - terminal = false; - }; + programs.editor = { + package = pkgs.vscode; + }; - programs.editor = { - package = pkgs.vscode; - }; - - home.packages = with pkgs; [ - onedrive - kubectl - awscli2 - docker-compose - minikube - kubernetes-helm - thunderbird - (import ../../lib/mkapp.nix "slack" { - inherit pkgs; - desktopName = "Slack"; - app-id = "mpagibdhafmlkgpemeicgogjnhclenoc"; - browser = "${brave}/opt/brave.com/brave/brave-browser"; - }) - (import ../../lib/mkapp.nix "teams" { - inherit pkgs; - browser = "${brave}/opt/brave.com/brave/brave-browser"; - app-id = "cifhbcnohmdccbgoicgdjpfamggdegmo"; - desktopName = "Microsoft Teams"; - }) - (pkgs.writeShellScriptBin "codex11" '' - NIXOS_OZONE_WL= ${pkgs.vscode}/bin/code $@ - '') - remmina - ]; - - gtk.gtk3.bookmarks = [ - "file:///home/tristan/OneDrive/Documents/ OneDrive" - ]; - - programs.vscode = { - extensions = with pkgs; [ - vscode-extensions.ms-azuretools.vscode-docker - ]; - userSettings = { - "aws.telemetry" = false; - "gitlens.telemetry.enabled" = false; - "redhat.telemetry.enabled" = false; - }; - }; - - wayland.windowManager.hyprland = { - extraConfig = '' - # === WORK MODULE === - bind = SUPER, E, focuswindow, thunderbird - bind = SUPER, t, focuswindow, brave-cifhbcnohmdccbgoicgdjpfamggdegmo-Profile_2 - ''; - }; - } - ]; - - nixpkgs.config.allowUnfreePredicate = pkg: - builtins.elem (lib.getName pkg) [ - # nonfree vscode required for dev containers - "vscode" - "steam-run" + home.packages = with pkgs; [ + onedrive + kubectl + awscli2 + docker-compose + minikube + kubernetes-helm + thunderbird + (import ../../lib/mkapp.nix "slack" { + inherit pkgs; + desktopName = "Slack"; + app-id = "mpagibdhafmlkgpemeicgogjnhclenoc"; + browser = "${brave}/opt/brave.com/brave/brave-browser"; + }) + (import ../../lib/mkapp.nix "teams" { + inherit pkgs; + browser = "${brave}/opt/brave.com/brave/brave-browser"; + app-id = "cifhbcnohmdccbgoicgdjpfamggdegmo"; + desktopName = "Microsoft Teams"; + }) + (pkgs.writeShellScriptBin "codex11" '' + NIXOS_OZONE_WL= ${pkgs.vscode}/bin/code $@ + '') + remmina ]; - networking = { - networkmanager = { - plugins = [pkgs.networkmanager-openvpn]; - }; - }; + gtk.gtk3.bookmarks = [ + "file:///home/tristan/OneDrive/Documents/ OneDrive" + ]; - users.users.tristan.extraGroups = ["docker"]; - virtualisation.docker = { - enable = true; - storageDriver = "btrfs"; - rootless = { - enable = false; - setSocketVariable = true; - daemon.settings = { - "userns-remap" = "default"; + programs.vscode = { + extensions = with pkgs; [ + vscode-extensions.ms-azuretools.vscode-docker + ]; + userSettings = { + "aws.telemetry" = false; + "gitlens.telemetry.enabled" = false; + "redhat.telemetry.enabled" = false; }; }; + + wayland.windowManager.hyprland = { + extraConfig = '' + # === WORK MODULE === + bind = SUPER, E, focuswindow, thunderbird + bind = SUPER, t, focuswindow, brave-cifhbcnohmdccbgoicgdjpfamggdegmo-Profile_2 + ''; + }; + } + ]; + + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (lib.getName pkg) [ + # nonfree vscode required for dev containers + "vscode" + "steam-run" + ]; + + networking = { + networkmanager = { + plugins = [pkgs.networkmanager-openvpn]; + }; + }; + + users.users.tristan.extraGroups = ["docker"]; + virtualisation.docker = { + enable = true; + storageDriver = "btrfs"; + rootless = { + enable = false; + setSocketVariable = true; + daemon.settings = { + "userns-remap" = "default"; + }; }; }; } diff --git a/nixos/programs/gamer.nix b/nixos/programs/gamer.nix new file mode 100644 index 0000000..2dd0e3c --- /dev/null +++ b/nixos/programs/gamer.nix @@ -0,0 +1,16 @@ +{lib, ...}: { + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (lib.getName pkg) [ + "steam" + "steam-run" + "steam-original" + "osu-lazer" + ]; + + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + }; + programs.gamemode.enable = true; +} diff --git a/nixos/programs/hyprland.nix b/nixos/programs/hyprland.nix index 45e81e8..7e5fa1f 100644 --- a/nixos/programs/hyprland.nix +++ b/nixos/programs/hyprland.nix @@ -1,8 +1,6 @@ -{user}: { - lib, - pkgs, - ... -}: { +{config, ...}: let + user = config.user; +in { services.greetd = { enable = true; settings = rec { @@ -14,5 +12,9 @@ }; }; - home-manager.users.${user}.imports = [../../home/programs/hyprland.nix]; + home-manager.users.${user}.imports = [ + { + wayland.windowManager.hyprland.enable = true; + } + ]; } diff --git a/nixos/programs/personal.nix b/nixos/programs/personal.nix new file mode 100644 index 0000000..2a937b6 --- /dev/null +++ b/nixos/programs/personal.nix @@ -0,0 +1,12 @@ +{...}: { + i18n.supportedLocales = [ + "eo/UTF-8" + "en_GB.UTF-8/UTF-8" + "en_US.UTF-8/UTF-8" + ]; + virtualisation = { + podman = { + enable = true; + }; + }; +}