From b6a57da14563d1894101a61af584fb6bf8c2ff09 Mon Sep 17 00:00:00 2001 From: Alex Davies Date: Sat, 25 May 2024 07:33:41 -0300 Subject: [PATCH 1/5] Reprovision ariel for work, still undecided --- flake.nix | 7 ++++--- nixos/family.nix | 4 ++++ nixos/hardware/ariel.nix | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 nixos/hardware/ariel.nix diff --git a/flake.nix b/flake.nix index df59f87..3121d6b 100644 --- a/flake.nix +++ b/flake.nix @@ -92,17 +92,18 @@ ]; }; #Thinkpad E15 Gen 3 Laptop (ThinkPad) - Type 20YG - Model 20YG003EUS - raziel = nixpkgs.lib.nixosSystem { + ariel = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs outputs; - hostname = "raziel"; + hostname = "ariel"; }; modules = [ ./nixos/configuration.nix ./nixos/kde-desktop.nix - ./nixos/cad.nix ./nixos/zerotier.nix ./nixos/work.nix + ./nixos/cad.nix + ./nixos/gaming.nix ]; }; hearth = nixpkgs.lib.nixosSystem { diff --git a/nixos/family.nix b/nixos/family.nix index f9988ea..5a6e642 100644 --- a/nixos/family.nix +++ b/nixos/family.nix @@ -10,6 +10,10 @@ isNormalUser = true; extraGroups = [ "networkManager" ]; }; + ingrid = { + isNormalUser = true; + extraGroups = [ "networkManager" ]; + }; bill = { isNormalUser = true; extraGroups = [ "networkManager" ]; diff --git a/nixos/hardware/ariel.nix b/nixos/hardware/ariel.nix new file mode 100644 index 0000000..19ba15e --- /dev/null +++ b/nixos/hardware/ariel.nix @@ -0,0 +1,40 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/fe5ec606-9052-463e-b402-e37dd206b87f"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/C746-7DF9"; + fsType = "vfat"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/654049ca-318f-453d-ad70-9d2a35d42a6d"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} From 35360563bebf8894426fa2cbfdadceebfa63937f Mon Sep 17 00:00:00 2001 From: Alex Davies Date: Sat, 25 May 2024 08:05:59 -0300 Subject: [PATCH 2/5] Allow the family module to be unloaded --- nixos/kde-desktop.nix | 3 +++ nixos/work.nix | 1 + 2 files changed, 4 insertions(+) diff --git a/nixos/kde-desktop.nix b/nixos/kde-desktop.nix index a4836f0..1bc4b74 100644 --- a/nixos/kde-desktop.nix +++ b/nixos/kde-desktop.nix @@ -7,6 +7,9 @@ services.desktopManager.plasma6.enable = true; services.displayManager.sddm.wayland.enable = true; services.displayManager.defaultSession = "plasma"; + services.displayManager = { + autoLogin.enable = lib.mkDefault false; + }; services.flatpak.enable = true; services.packagekit.enable = true; diff --git a/nixos/work.nix b/nixos/work.nix index 8f4d135..028c7c2 100644 --- a/nixos/work.nix +++ b/nixos/work.nix @@ -6,6 +6,7 @@ environment.systemPackages = with pkgs; [ pkgs.qgroundcontrol + pkgs.zig pkgs.distrobox pkgs.element-desktop pkgs.act From 67decdc3c8a9bda3fb73aa4cb1a864ee6fcef615 Mon Sep 17 00:00:00 2001 From: Alex Davies Date: Sun, 26 May 2024 09:37:00 -0300 Subject: [PATCH 3/5] Integrated plasma-manager config --- flake.lock | 31 ++++++++++-- flake.nix | 18 +++++-- home-manager/{ => traverseda}/home.nix | 14 +++--- home-manager/traverseda/kde-desktop.nix | 64 +++++++++++++++++++++++++ nixos/configuration.nix | 2 +- nixos/kde-desktop.nix | 10 +++- 6 files changed, 121 insertions(+), 18 deletions(-) rename home-manager/{ => traverseda}/home.nix (93%) create mode 100644 home-manager/traverseda/kde-desktop.nix diff --git a/flake.lock b/flake.lock index 7d4207e..10ce65b 100644 --- a/flake.lock +++ b/flake.lock @@ -251,16 +251,15 @@ ] }, "locked": { - "lastModified": 1715930644, - "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", + "lastModified": 1716711219, + "narHash": "sha256-TnZETiQPXbyT5mdCHMOyrJnx2+BwroMBRrguciz1vEo=", "owner": "nix-community", "repo": "home-manager", - "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", + "rev": "05e6ba83eb3585ce0aff7b41e4bd0e317d05ad4a", "type": "github" }, "original": { "owner": "nix-community", - "ref": "master", "repo": "home-manager", "type": "github" } @@ -447,6 +446,29 @@ "type": "github" } }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1716670933, + "narHash": "sha256-E5GqDM3cPvPNyfzt1qF7T0Wei1azp1DwLF9qA0X+5M8=", + "owner": "pjones", + "repo": "plasma-manager", + "rev": "4d38fc602e01cc8d1e93e51677aade86febf3295", + "type": "github" + }, + "original": { + "owner": "pjones", + "repo": "plasma-manager", + "type": "github" + } + }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat_2", @@ -483,6 +505,7 @@ "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable", "nixvim": "nixvim", + "plasma-manager": "plasma-manager", "ros": "ros" } }, diff --git a/flake.nix b/flake.nix index 3121d6b..f3c258e 100644 --- a/flake.nix +++ b/flake.nix @@ -9,9 +9,16 @@ nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; # Also see the 'unstable-packages' overlay at 'overlays/default.nix'. - # Home manager - home-manager.url = "github:nix-community/home-manager/master"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + plasma-manager = { + url = "github:pjones/plasma-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; ros.url = "github:lopsided98/nix-ros-overlay"; agenix.url = "github:ryantm/agenix"; @@ -28,6 +35,7 @@ self, nixpkgs, home-manager, + plasma-manager, ros, agenix, ... @@ -148,12 +156,12 @@ # Standalone home-manager configuration entrypoint # Available through 'home-manager --flake .#your-username@your-hostname' homeConfigurations = { - "traverseda@athame" = home-manager.lib.homeManagerConfiguration { + "traverseda@generic" = home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance extraSpecialArgs = {inherit inputs outputs;}; modules = [ # > Our main home-manager configuration file < - ./home-manager/home.nix + ./home-manager/traverseda/home.nix ]; }; }; diff --git a/home-manager/home.nix b/home-manager/traverseda/home.nix similarity index 93% rename from home-manager/home.nix rename to home-manager/traverseda/home.nix index 7313c1a..243e67f 100644 --- a/home-manager/home.nix +++ b/home-manager/traverseda/home.nix @@ -73,6 +73,12 @@ credential = { helper = "cache --timeout=3600"; # Cache credentials for 1 hour (3600 seconds) }; + oh-my-zsh = { + "hide-dirty" = "1"; + }; + init = { + defaultBranch = "main"; + }; }; }; @@ -128,19 +134,13 @@ pkgs.wget pkgs.wl-clipboard pkgs.atool + pkgs.zig (pkgs.nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Hack"]; }) (pkgs.writeShellScriptBin "nvr-edit" '' nvr --remote-wait $@ '') - (pkgs.writeShellScriptBin "nvidia-offload" '' - export __NV_PRIME_RENDER_OFFLOAD=1 - export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 - export __GLX_VENDOR_LIBRARY_NAME=nvidia - export __VK_LAYER_NV_optimus=NVIDIA_only - exec "$@" - '') ]; programs.zsh = { diff --git a/home-manager/traverseda/kde-desktop.nix b/home-manager/traverseda/kde-desktop.nix new file mode 100644 index 0000000..716bfb0 --- /dev/null +++ b/home-manager/traverseda/kde-desktop.nix @@ -0,0 +1,64 @@ + +{ + inputs, + outputs, + lib, + config, + pkgs, + ... +}: +{ + imports = [ + inputs.plasma-manager.homeManagerModules.plasma-manager + ]; + + programs.plasma = { + enable = true; + # workspace = { + # theme = "breeze-dark"; + # colorScheme = "BreezeDark"; + # }; + shortcuts = { + "services.org.kde.konsole.desktop"."NewWindow" = "Meta+Return"; + "kwin"."Window Close" = ["Meta+Shift+C" "Alt+F4"]; + "kwin"."Cube" = "Meta+C"; + }; + shortcuts.plasmashell = { + "activate task manager entry 1" = ""; + "activate task manager entry 2" = ""; + "activate task manager entry 3" = ""; + "activate task manager entry 4" = ""; + "activate task manager entry 5" = ""; + "activate task manager entry 6" = ""; + "activate task manager entry 7" = ""; + "activate task manager entry 8" = ""; + "activate task manager entry 9" = ""; + }; + shortcuts.kwin = { + "Switch to Desktop 1" = "Meta+1"; + "Window to Desktop 1" = "Meta+!"; + "Switch to Desktop 2" = "Meta+2"; + "Window to Desktop 2" = "Meta+@"; + "Switch to Desktop 3" = "Meta+3"; + "Window to Desktop 3" = "Meta+#"; + "Switch to Desktop 4" = "Meta+4"; + "Window to Desktop 4" = "Meta+$"; + "Switch to Desktop 5" = "Meta+5"; + "Window to Desktop 5" = "Meta+%"; + "Switch to Desktop 6" = "Meta+6"; + "Window to Desktop 6" = "Meta+^"; + "Switch to Desktop 7" = "Meta+7"; + "Window to Desktop 7" = "Meta+&"; + "Switch to Desktop 8" = "Meta+8"; + "Window to Desktop 8" = "Meta+*"; + "Switch to Desktop 9" = "Meta+9"; + "Window to Desktop 9" = "Meta+("; + "Switch to Desktop 10" = "Meta+0"; + "Window to Desktop 10" = "Meta+)"; + }; + configFile = { + "kwinrc"."Desktops"."Number"."value" = 10; + "kwinrc"."Desktops"."Rows"."value" = 2; + }; + }; +} diff --git a/nixos/configuration.nix b/nixos/configuration.nix index ee16d55..d44f9be 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -133,7 +133,7 @@ extraSpecialArgs = { inherit inputs outputs; }; backupFileExtension = ".bak"; users = { - traverseda = import ../home-manager/home.nix; + traverseda = import ../home-manager/traverseda/home.nix; }; }; diff --git a/nixos/kde-desktop.nix b/nixos/kde-desktop.nix index 1bc4b74..7c80055 100644 --- a/nixos/kde-desktop.nix +++ b/nixos/kde-desktop.nix @@ -1,4 +1,4 @@ -{ config, pkgs, lib, ... }: +{ inputs, outputs, lib, config, pkgs, hostname, specialArgs, options, ... }: { # Enable the KDE Desktop Environment. @@ -79,6 +79,14 @@ programs.dconf.enable = true; hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = true; + home-manager = { + extraSpecialArgs = { inherit inputs outputs; }; + backupFileExtension = ".bak"; + users = { + traverseda = import ../home-manager/traverseda/kde-desktop.nix; + }; + }; + #Enable support for my logitech bluetooth peripherals hardware.logitech.wireless.enable = true; hardware.logitech.wireless.enableGraphical = true; From 52727239f6464a23a2aa815db9d93c6900239d65 Mon Sep 17 00:00:00 2001 From: Alex Davies Date: Sun, 26 May 2024 12:57:09 -0300 Subject: [PATCH 4/5] Vim --- flake.nix | 4 ++- home-manager/traverseda/home.nix | 45 ++++++++++++++++--------- home-manager/traverseda/kde-desktop.nix | 3 +- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/flake.nix b/flake.nix index f3c258e..23e653c 100644 --- a/flake.nix +++ b/flake.nix @@ -14,6 +14,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + nixvim.url = "github:nix-community/nixvim"; + plasma-manager = { url = "github:pjones/plasma-manager"; inputs.nixpkgs.follows = "nixpkgs"; @@ -27,7 +29,6 @@ # everything match nicely? Try nix-colors! nix-colors.url = "github:misterio77/nix-colors"; - nixvim.url = "github:nix-community/nixvim"; }; @@ -35,6 +36,7 @@ self, nixpkgs, home-manager, + nixvim, plasma-manager, ros, agenix, diff --git a/home-manager/traverseda/home.nix b/home-manager/traverseda/home.nix index 243e67f..9dfe57f 100644 --- a/home-manager/traverseda/home.nix +++ b/home-manager/traverseda/home.nix @@ -10,14 +10,7 @@ }: { # You can import other home-manager modules here imports = [ - # If you want to use modules your own flake exports (from modules/home-manager): - # outputs.homeManagerModules.example - - # Or modules exported from other flakes (such as nix-colors): - # inputs.nix-colors.homeManagerModules.default - - # You can also split up your configuration and import pieces of it here: - # ./nvim.nix + inputs.nixvim.homeManagerModules.nixvim ]; nixpkgs = { @@ -82,19 +75,38 @@ }; }; - programs.neovim = { + programs.nixvim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; - vimdiffAlias = true; - plugins = with pkgs.vimPlugins; [ - nvim-lspconfig - nvim-treesitter.withAllGrammars - vim-bufferline - tokyonight-nvim + plugins.bufferline.enable = true; + plugins.which-key.enable = true; + globals.mapleader = " "; + keymaps = [ { - plugin = which-key-nvim; + mode = "n"; + key = "c"; + options = { noremap = true; desc = "Open new terminal"; }; + action = ":term"; + } + { + mode = "n"; + key = "x"; + options = { noremap = true; desc = "Close tab"; }; + action = ":bd"; + } + { + mode = "n"; + key = "s"; + options = { noremap = true; desc = "Pick buffer"; }; + action = ":BufferLinePick"; + } + { + mode = "t"; + key = ""; + options = { noremap = true; }; + action = ""; } ]; }; @@ -135,6 +147,7 @@ pkgs.wl-clipboard pkgs.atool pkgs.zig + pkgs.comma (pkgs.nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Hack"]; }) diff --git a/home-manager/traverseda/kde-desktop.nix b/home-manager/traverseda/kde-desktop.nix index 716bfb0..2002071 100644 --- a/home-manager/traverseda/kde-desktop.nix +++ b/home-manager/traverseda/kde-desktop.nix @@ -19,7 +19,7 @@ # colorScheme = "BreezeDark"; # }; shortcuts = { - "services.org.kde.konsole.desktop"."NewWindow" = "Meta+Return"; + "services/org.kde.konsole.desktop"."_launch" = ["Meta+Return" "Ctrl+Alt+T"]; "kwin"."Window Close" = ["Meta+Shift+C" "Alt+F4"]; "kwin"."Cube" = "Meta+C"; }; @@ -59,6 +59,7 @@ configFile = { "kwinrc"."Desktops"."Number"."value" = 10; "kwinrc"."Desktops"."Rows"."value" = 2; + "kwinrc"."Plugins"."cubeEnabled" = true; }; }; } From fae95bef71d91fd0e780b68d3c5cce1f49d1788a Mon Sep 17 00:00:00 2001 From: Alex Davies Date: Mon, 27 May 2024 08:41:10 -0300 Subject: [PATCH 5/5] Yesterday I tried to get blender cad stuff to work, today I needed to add focus-follows-mous --- home-manager/traverseda/home.nix | 6 +++ home-manager/traverseda/kde-desktop.nix | 1 + nixos/cad.nix | 2 +- pkgs/blender-cadsketcher/default.nix | 57 +++++++++++++++++++++++++ pkgs/default.nix | 1 + pkgs/py-slvs/default.nix | 57 +++++++++++++++++++++++++ 6 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 pkgs/blender-cadsketcher/default.nix create mode 100644 pkgs/py-slvs/default.nix diff --git a/home-manager/traverseda/home.nix b/home-manager/traverseda/home.nix index 9dfe57f..9fb60cf 100644 --- a/home-manager/traverseda/home.nix +++ b/home-manager/traverseda/home.nix @@ -82,6 +82,12 @@ vimAlias = true; plugins.bufferline.enable = true; plugins.which-key.enable = true; + + plugins.cmp-tabby = { + enable = true; + host = "localhost:8337"; + }; + globals.mapleader = " "; keymaps = [ { diff --git a/home-manager/traverseda/kde-desktop.nix b/home-manager/traverseda/kde-desktop.nix index 2002071..02f79ab 100644 --- a/home-manager/traverseda/kde-desktop.nix +++ b/home-manager/traverseda/kde-desktop.nix @@ -60,6 +60,7 @@ "kwinrc"."Desktops"."Number"."value" = 10; "kwinrc"."Desktops"."Rows"."value" = 2; "kwinrc"."Plugins"."cubeEnabled" = true; + "kwinrc"."Windows"."FocusPolicy" = "FocusFollowsMouse"; }; }; } diff --git a/nixos/cad.nix b/nixos/cad.nix index 18e2f22..756a79d 100644 --- a/nixos/cad.nix +++ b/nixos/cad.nix @@ -1,10 +1,10 @@ { config, pkgs, lib, ... }: { - environment.systemPackages = with pkgs; [ pkgs.openscad pkgs.blender + #pkgs.py-slvs pkgs.freecad (pkgs.appimageTools.wrapType2 { diff --git a/pkgs/blender-cadsketcher/default.nix b/pkgs/blender-cadsketcher/default.nix new file mode 100644 index 0000000..78cd433 --- /dev/null +++ b/pkgs/blender-cadsketcher/default.nix @@ -0,0 +1,57 @@ +{ + description = "Blender CAD Sketcher"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + outputs = { + self, + nixpkgs, + flake-utils, + }: + flake-utils.lib.eachDefaultSystem (system: let + pkgs = nixpkgs.legacyPackages.${system}; + in { + devShells.default = pkgs.mkShell { + shellHook = '' + ''; + packages = [ + ( + let + py-slvs = pythonPkgs: + pythonPkgs.buildPythonPackage rec { + pname = "py-slvs"; + version = "1.0.6"; + + src = pythonPkgs.fetchPypi { + pname = "py_slvs"; + version = "1.0.6"; + sha256 = "sha256-U6T/aXy0JTC1ptL5oBmch0ytSPmIkRA8XOi31NpArnI="; + }; + + nativeBuildInputs = with pkgs; [swig]; + pyproject = true; + + propagatedBuildInputs = with pythonPkgs; [ + cmake + ninja + setuptools + scikit-build + ]; + + dontUseCmakeConfigure = true; + + meta = with pkgs.lib; { + description = "Python binding of SOLVESPACE geometry constraint solver"; + homepage = "https://github.com/realthunder/slvs_py"; + license = licenses.gpl3; + }; + }; + + blenderCadSketcher = pkgs.blender.withPackages (p: [(py-slvs p)]); + in + blenderCadSketcher + ) + ]; + }; + }); +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 6762b7f..6a65429 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -6,4 +6,5 @@ { # example = pkgs.callPackage ./example { }; creality-print = pkgs.callPackage ./creality-print { }; + py-slvs = pkgs.callPackage ./py-slvs { }; } diff --git a/pkgs/py-slvs/default.nix b/pkgs/py-slvs/default.nix new file mode 100644 index 0000000..5482acc --- /dev/null +++ b/pkgs/py-slvs/default.nix @@ -0,0 +1,57 @@ +{ + description = "Blender CAD Sketcher"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + outputs = { + self, + nixpkgs, + flake-utils, + }: + flake-utils.lib.eachDefaultSystem (system: let + pkgs = nixpkgs.legacyPackages.${system}; + in { + devShells.default = pkgs.mkShell { + shellHook = '' + ''; + packages = [ + ( + let + py-slvs = pythonPkgs: + pythonPkgs.buildPythonPackage rec { + pname = "py-slvs"; + version = "1.0.6"; + + src = pythonPkgs.fetchPypi { + pname = "py_slvs"; + version = "1.0.6"; + sha256 = "sha256-U6T/aXy0JTC1ptL5oBmch0ytSPmIkRA8XOi31NpArnI="; + }; + + nativeBuildInputs = with pkgs; [swig]; + pyproject = true; + + propagatedBuildInputs = with pythonPkgs; [ + cmake + ninja + setuptools + scikit-build + ]; + + dontUseCmakeConfigure = true; + + meta = with pkgs.lib; { + description = "Python binding of SOLVESPACE geometry constraint solver"; + homepage = "https://github.com/realthunder/slvs_py"; + license = licenses.gpl3; + }; + }; + + blenderWithPySlvs = pkgs.blender.withPackages (p: [(py-slvs p)]); + in + blenderWithPySlvs + ) + ]; + }; + }); +}