diff --git a/build.sh b/build.sh index fa68757..98e282b 100755 --- a/build.sh +++ b/build.sh @@ -4,10 +4,5 @@ set -eo pipefail nix run nixpkgs#alejandra -- . -q nix run nixpkgs#statix -- fix . -for i in $(nix profile list | cut -d' ' -f1); do - nix profile remove 0 -done - nix-shell -p git --run "nixos-rebuild switch --flake .# --impure --use-remote-sudo --option sandbox false" - -sudo systemctl restart home-manager-marshall +nix run .#update-home diff --git a/flake.nix b/flake.nix index eeaa613..ffd6f8f 100644 --- a/flake.nix +++ b/flake.nix @@ -132,6 +132,26 @@ forSystems = lib.genAttrs lib.systems.flakeExposed; in { defaultPackage.x86_64-linux = fenix.packages.x86_64-linux.minimal.toolchain; + homeConfigurations.marshall = home-manager.lib.homeManagerConfiguration { + extraSpecialArgs = {inherit inputs;}; + pkgs = import nixpkgs { + system = "x86_64-linux"; + config = { + allowUnfree = true; + allowBroken = true; + }; + overlays = [(import ./pkgs inputs)]; + }; + modules = [ + ./home + { + home.stateVersion = "22.05"; + home.username = "marshall"; + # NOTE: change me if you change the dir in nixos config + home.homeDirectory = "/home/marshall"; + } + ]; + }; nixosConfigurations = { nix = lib.nixosSystem { @@ -141,7 +161,6 @@ modules = [ ./sys/nix/configuration.nix agenix.nixosModule - home-manager.nixosModule hyprland.nixosModules.default ]; }; @@ -154,11 +173,23 @@ ./sys/wsl.nix agenix.nixosModule nixos-wsl.nixosModules.wsl - home-manager.nixosModule ]; }; }; + apps.x86_64-linux.update-home = { + type = "app"; + program = + (inputs.nixpkgs.legacyPackages.x86_64-linux.writeScript "update-home" '' + set -euo pipefail + old_profile=$(nix profile list | grep home-manager-path | head -n1 | awk '{print $4}') + echo $old_profile + nix profile remove $old_profile + ${self.homeConfigurations.marshall.activationPackage}/activate || (echo "restoring old profile"; ${self.legacyPackages.x86_64-linux.nix}/bin/nix profile install $old_profile) + '') + .outPath; + }; + devShells = forSystems ( system: let pkgs = nixpkgs.legacyPackages."${system}"; diff --git a/pkgs/default.nix b/pkgs/default.nix index f345a07..49a0580 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,72 +1,100 @@ -inputs: final: prev: let - sources = prev.callPackage ./_sources/generated.nix {}; -in { - spicetify-cli = with prev; - spicetify-cli.overrideAttrs (_: { - inherit (sources.spicetify-cli) pname version src; - postInstall = '' - cp -r ./jsHelper ./Themes ./Extensions ./CustomApps ./globals.d.ts ./css-map.json $out/bin +inputs: +inputs.nixpkgs.lib.composeManyExtensions [ + (final: prev: let + sources = prev.callPackage ./_sources/generated.nix {}; + in { + inherit (inputs.vscodeInsiders.packages.${prev.system}) vscodeInsiders; + inherit (inputs.flake-firefox-nightly.packages.${prev.system}) firefox-nightly-bin; + + draconis = inputs.draconis.defaultPackage.${prev.system}; + + discord = prev.discord.override { + withOpenASAR = true; + }; + + discord-canary = prev.discord-canary.override { + nss = final.nss_latest; + }; + + waybar = prev.waybar.overrideAttrs (oldAttrs: { + mesonFlags = oldAttrs.mesonFlags ++ ["-Dexperimental=true"]; + patchPhase = '' + substituteInPlace src/modules/wlr/workspace_manager.cpp --replace "zext_workspace_handle_v1_activate(workspace_handle_);" "const std::string command = \"hyprctl dispatch workspace \" + name_; system(command.c_str());" ''; }); + spicetify-cli = with prev; + spicetify-cli.overrideAttrs (_: { + inherit (sources.spicetify-cli) pname version src; + postInstall = '' + cp -r ./jsHelper ./Themes ./Extensions ./CustomApps ./globals.d.ts ./css-map.json $out/bin + ''; + }); + + spicetify-themes = sources.spicetify-themes.src; + catppuccin-spicetify = sources.catppuccin-spicetify.src; + spotify-spicetified = final.callPackage ./spotify-spicetified {}; + + picom = prev.picom.overrideAttrs (o: { + inherit (sources.picom) src pname version; + }); + + lapce = prev.lapce.overrideAttrs (o: { + inherit (sources.lapce) src pname version; + cargoSha256 = "0000000000000000000000000000000000000000000000000000"; + }); + + zscroll = prev.zscroll.overrideAttrs (o: { + inherit (sources.zscroll) src pname version; + }); - spicetify-themes = sources.spicetify-themes.src; - catppuccin-spicetify = sources.catppuccin-spicetify.src; - spotify-spicetified = final.callPackage ./spotify-spicetified {}; - - picom = prev.picom.overrideAttrs (o: { - inherit (sources.picom) src pname version; - }); - - lapce = prev.callPackage ./lapce.nix { - inherit (prev.darwin) libobjc; - inherit (prev.darwin.apple_sdk.frameworks) Security CoreServices ApplicationServices Carbon AppKit; - }; - - zscroll = prev.zscroll.overrideAttrs (o: { - inherit (sources.zscroll) src pname version; - }); - - myCopilotVim = prev.vimPlugins.copilot-vim.overrideAttrs (o: { - inherit (sources.copilot-vim) src pname version; - }); - - myCokelinePlugin = prev.vimUtils.buildVimPlugin { - inherit (sources.nvim-cokeline) src pname version; - }; - - myTailwindPlugin = prev.vimUtils.buildVimPlugin { - inherit (sources.coc-tailwindcss3) src pname version; - }; - - myAstroPlugin = prev.vimUtils.buildVimPlugin { - inherit (sources.vim-astro) src pname version; - }; - - web-greeter = final.callPackage ./web-greeter.nix { - web-greeter-src = inputs.web-greeter; - }; - - wlroots = prev.wlroots.overrideAttrs (oldAttrs: { - patchPhase = '' - substituteInPlace render/gles2/renderer.c --replace "glFlush();" "glFinish();" - ''; - }); - - hyprland-nvidia = inputs.hyprland.packages.${prev.system}.default.override {inherit (final) wlroots;}; - - awesome = - (prev.awesome.overrideAttrs (old: { - inherit (sources.awesome) src pname version; - patches = []; - GI_TYPELIB_PATH = - "${prev.playerctl}/lib/girepository-1.0:" - + "${prev.upower}/lib/girepository-1.0:" - + old.GI_TYPELIB_PATH; - })) - .override { - stdenv = prev.clangStdenv; - gtk3Support = true; + myCopilotVim = prev.vimPlugins.copilot-vim.overrideAttrs (o: { + inherit (sources.copilot-vim) src pname version; + }); + + myCokelinePlugin = prev.vimUtils.buildVimPlugin { + inherit (sources.nvim-cokeline) src pname version; + }; + + myTailwindPlugin = prev.vimUtils.buildVimPlugin { + inherit (sources.coc-tailwindcss3) src pname version; }; - mySddmTheme = prev.plasma5Packages.callPackage ./astronaut-sddm-theme {inherit sources;}; -} + myAstroPlugin = prev.vimUtils.buildVimPlugin { + inherit (sources.vim-astro) src pname version; + }; + + web-greeter = final.callPackage ./web-greeter.nix { + web-greeter-src = inputs.web-greeter; + }; + + wlroots = prev.wlroots.overrideAttrs (oldAttrs: { + patchPhase = '' + substituteInPlace render/gles2/renderer.c --replace "glFlush();" "glFinish();" + ''; + }); + + hyprland-nvidia = inputs.hyprland.packages.${prev.system}.default.override {inherit (final) wlroots;}; + + awesome = + (prev.awesome.overrideAttrs (old: { + inherit (sources.awesome) src pname version; + patches = []; + GI_TYPELIB_PATH = + "${prev.playerctl}/lib/girepository-1.0:" + + "${prev.upower}/lib/girepository-1.0:" + + old.GI_TYPELIB_PATH; + })) + .override { + stdenv = prev.clangStdenv; + gtk3Support = true; + }; + + mySddmTheme = prev.plasma5Packages.callPackage ./astronaut-sddm-theme {inherit sources;}; + }) + inputs.replugged-overlay.overlay + inputs.nur.overlay + inputs.neovim-nightly-overlay.overlay + inputs.fenix.overlay + inputs.nixpkgs-wayland.overlay + inputs.polymc.overlay +] diff --git a/sys/generic.nix b/sys/generic.nix index d08d227..280c905 100644 --- a/sys/generic.nix +++ b/sys/generic.nix @@ -33,37 +33,7 @@ in { allowUnfree = true; allowBroken = true; }; - - overlays = [ - (self: super: { - inherit (inputs.vscodeInsiders.packages.${super.system}) vscodeInsiders; - inherit (inputs.flake-firefox-nightly.packages.${super.system}) firefox-nightly-bin; - - draconis = inputs.draconis.defaultPackage.${super.system}; - - discord = super.discord.override { - withOpenASAR = true; - }; - - discord-canary = super.discord-canary.override { - nss = pkgs.nss_latest; - }; - - waybar = super.waybar.overrideAttrs (oldAttrs: { - mesonFlags = oldAttrs.mesonFlags ++ ["-Dexperimental=true"]; - patchPhase = '' - substituteInPlace src/modules/wlr/workspace_manager.cpp --replace "zext_workspace_handle_v1_activate(workspace_handle_);" "const std::string command = \"hyprctl dispatch workspace \" + name_; system(command.c_str());" - ''; - }); - }) - inputs.replugged-overlay.overlay - inputs.nur.overlay - inputs.neovim-nightly-overlay.overlay - inputs.fenix.overlay - inputs.nixpkgs-wayland.overlay - inputs.polymc.overlay - (import ../pkgs inputs) - ]; + overlays = [(import ../pkgs inputs)]; }; environment = { @@ -96,16 +66,6 @@ in { ''; }; - home-manager = { - extraSpecialArgs = {inherit inputs;}; - useGlobalPkgs = true; - - users.marshall = { - imports = [../home]; - home.stateVersion = "22.05"; - }; - }; - systemd = { user.services.pipewire-pulse.path = [pkgs.pulseaudio];