diff --git a/configuration/base/programs.nix b/configuration/base/programs.nix index ba0f459..13c8627 100644 --- a/configuration/base/programs.nix +++ b/configuration/base/programs.nix @@ -15,6 +15,7 @@ curl inetutils dig + exfatprogs rar zstd diff --git a/configuration/modules/kde.nix b/configuration/modules/kde.nix index 0e83665..da5a4da 100644 --- a/configuration/modules/kde.nix +++ b/configuration/modules/kde.nix @@ -1,15 +1,5 @@ -{ pkgs, lib, ... }: +{ pkgs, ... }: -let - kwin = lib.concatStringsSep " " [ - "${lib.getBin pkgs.kdePackages.kwin}/bin/kwin_wayland" - "--no-global-shortcuts" - "--no-kactivities" - "--no-lockscreen" - "--locale1" - "--inputmethod maliit-keyboard" - ]; -in { services.xserver.enable = true; # optional @@ -20,11 +10,6 @@ in services.displayManager.sddm = { enable = true; wayland.enable = true; - settings = { - Wayland = { - CompositorCommand = kwin; - }; - }; }; services.desktopManager.plasma6.enable = true; environment.plasma6.excludePackages = [ pkgs.kdePackages.discover ]; @@ -34,15 +19,11 @@ in programs.partition-manager.enable = true; - environment.systemPackages = with pkgs; - [ - maliit-keyboard - exfatprogs - ] ++ (with kdePackages; [ - sddm-kcm - plasma-disks - filelight - ffmpegthumbs - kcalc - ]); + environment.systemPackages = with pkgs.kdePackages;[ + sddm-kcm + plasma-disks + filelight + ffmpegthumbs + kcalc + ]; } diff --git a/flake.nix b/devices/deck/flake.nix similarity index 69% rename from flake.nix rename to devices/deck/flake.nix index f72bfb4..3e5a1d5 100644 --- a/flake.nix +++ b/devices/deck/flake.nix @@ -13,12 +13,6 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - nixos-hardware.url = "github:NixOS/nixos-hardware/master?shallow=1"; - disko = { - url = "github:nix-community/disko?shallow=1"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions?shallow=1"; system-manager = { @@ -31,7 +25,7 @@ }; }; - outputs = { self, nixpkgs, nixos-hardware, home-manager, system-manager, nix-system-graphics, nix-index-database, ... }@inputs: + outputs = { nixpkgs, home-manager, system-manager, nix-system-graphics, nix-index-database, ... }@inputs: let system = "x86_64-linux"; pkgs = import nixpkgs { @@ -40,19 +34,6 @@ }; in { - nixosConfigurations.tuxedo = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - ./devices/tuxedo/configuration.nix - ]; - }; - nixosConfigurations.starlite = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - nixos-hardware.nixosModules.starlabs-starlite-i5 - ./devices/starlite/configuration.nix - ]; - }; packages.${system}.homeConfigurations.deck = home-manager.lib.homeManagerConfiguration { inherit pkgs; extraSpecialArgs = { inherit inputs; }; diff --git a/devices/deck/home.nix b/devices/deck/home.nix index 737b848..5091b17 100644 --- a/devices/deck/home.nix +++ b/devices/deck/home.nix @@ -1,7 +1,7 @@ { pkgs, ... }: let - homeUpdateLocation = "/home/deck/Projects/nixos#deck"; + homeUpdateLocation = "/home/deck/Projects/nixos/devices/deck#deck"; in { imports = [ @@ -11,7 +11,7 @@ in ]; terminal.homeUpdateLocation = homeUpdateLocation; - terminal.flakeUpdateLocation = "/home/deck/Projects/nixos"; + terminal.flakeUpdateLocation = "/home/deck/Projects/nixos/devices/deck"; nixpkgs.config = { allowUnfree = true; diff --git a/devices/starlite/flake.nix b/devices/starlite/flake.nix new file mode 100644 index 0000000..9846095 --- /dev/null +++ b/devices/starlite/flake.nix @@ -0,0 +1,35 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05?shallow=1"; + nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable?shallow=1"; # use by inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".[package name] + + home-manager = { + url = "github:nix-community/home-manager/release-25.05?shallow=1"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nix-index-database = { + url = "github:nix-community/nix-index-database?shallow=1"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nixos-hardware.url = "github:NixOS/nixos-hardware/master?shallow=1"; + disko = { + url = "github:nix-community/disko?shallow=1"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions?shallow=1"; + }; + + outputs = { nixpkgs, nixos-hardware, ... }@inputs: + { + nixosConfigurations.starlite = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ + nixos-hardware.nixosModules.starlabs-starlite-i5 + ./devices/starlite/configuration.nix + ]; + }; + }; +} diff --git a/devices/starlite/home.nix b/devices/starlite/home.nix index d6a7659..067a8ee 100644 --- a/devices/starlite/home.nix +++ b/devices/starlite/home.nix @@ -6,8 +6,8 @@ ../../home-manager/development/vscode.nix ]; - terminal.nixUpdateLocation = "/home/worble/Projects/nixos#starlite"; - terminal.flakeUpdateLocation = "/home/worble/Projects/nixos"; + terminal.nixUpdateLocation = "/home/worble/Projects/nixos/devices/starlite#starlite"; + terminal.flakeUpdateLocation = "/home/worble/Projects/nixos/devices/starlite"; firefox.tablet = true; home.username = "worble"; diff --git a/flake.lock b/devices/tuxedo/flake.lock similarity index 73% rename from flake.lock rename to devices/tuxedo/flake.lock index b0fe209..0963ce9 100644 --- a/flake.lock +++ b/devices/tuxedo/flake.lock @@ -79,26 +79,6 @@ "type": "github" } }, - "nix-system-graphics": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1737457219, - "narHash": "sha256-nX9dxoATDCSQgWw/iv6BngXDJEyHVYYEvHEVQ7Ig3fI=", - "owner": "soupglasses", - "repo": "nix-system-graphics", - "rev": "9c875e0c56cf2eb272b9102a4f3e24e4e31629fd", - "type": "github" - }, - "original": { - "owner": "soupglasses", - "repo": "nix-system-graphics", - "type": "github" - } - }, "nix-vscode-extensions": { "inputs": { "flake-utils": "flake-utils", @@ -118,22 +98,6 @@ "type": "github" } }, - "nixos-hardware": { - "locked": { - "lastModified": 1760106635, - "narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=", - "owner": "NixOS", - "repo": "nixos-hardware", - "rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "master", - "repo": "nixos-hardware", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1759770925, @@ -187,32 +151,9 @@ "disko": "disko", "home-manager": "home-manager", "nix-index-database": "nix-index-database", - "nix-system-graphics": "nix-system-graphics", "nix-vscode-extensions": "nix-vscode-extensions", - "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs_2", - "nixpkgs-unstable": "nixpkgs-unstable", - "system-manager": "system-manager" - } - }, - "system-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1756281415, - "narHash": "sha256-CjpoVwpJJ+DOZilPrDpZ5S3V+B1Y0calaHxTp2xMvGs=", - "owner": "numtide", - "repo": "system-manager", - "rev": "e271eedac9a24678ca6cfc61677837422bf474e0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "system-manager", - "type": "github" + "nixpkgs-unstable": "nixpkgs-unstable" } }, "systems": { diff --git a/devices/tuxedo/flake.nix b/devices/tuxedo/flake.nix new file mode 100644 index 0000000..1d612c6 --- /dev/null +++ b/devices/tuxedo/flake.nix @@ -0,0 +1,33 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05?shallow=1"; + nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable?shallow=1"; # use by inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".[package name] + + home-manager = { + url = "github:nix-community/home-manager/release-25.05?shallow=1"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nix-index-database = { + url = "github:nix-community/nix-index-database?shallow=1"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + disko = { + url = "github:nix-community/disko?shallow=1"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions?shallow=1"; + }; + + outputs = { nixpkgs, ... }@inputs: + { + nixosConfigurations.tuxedo = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ + ./configuration.nix + ]; + }; + }; +} diff --git a/devices/tuxedo/home.nix b/devices/tuxedo/home.nix index c99739f..bfa57bd 100644 --- a/devices/tuxedo/home.nix +++ b/devices/tuxedo/home.nix @@ -8,8 +8,8 @@ ../../home-manager/streamlink.nix ]; - terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo"; - terminal.flakeUpdateLocation = "/home/worble/Projects/nixos"; + terminal.nixUpdateLocation = "/home/worble/Projects/nixos/devices/tuxedo#tuxedo"; + terminal.flakeUpdateLocation = "/home/worble/Projects/nixos/devices/tuxedo"; helix.fullInstall = true; mpv.high-quality = true; diff --git a/home-manager-update.sh b/home-manager-update.sh index e5ecf80..fbc5103 100755 --- a/home-manager-update.sh +++ b/home-manager-update.sh @@ -1,2 +1,2 @@ #!/usr/bin/env bash -home-manager switch --flake "/home/$(whoami)/Projects/nixos#$(whoami)" +home-manager switch --flake "$HOME/Projects/nixos/devices/$(whoami)#$(whoami)" diff --git a/home-manager/base/terminal.nix b/home-manager/base/terminal.nix index 35e6b21..f031fdf 100644 --- a/home-manager/base/terminal.nix +++ b/home-manager/base/terminal.nix @@ -188,11 +188,7 @@ with lib; }) (mkIf (flakeUpdateLocation != null) { pre_commands = { - nix-flake-update = "${(pkgs.writeShellScriptBin "nix-flake-update" '' - git -C ${flakeUpdateLocation} pull --quiet - sudo nix flake update --flake ${flakeUpdateLocation} - git -C ${flakeUpdateLocation} diff-index --quiet HEAD flake.lock || git -C ${flakeUpdateLocation} commit --quiet flake.lock -m "update flake.lock" - '')}/bin/nix-flake-update"; + nix-flake-update = "${(pkgs.writeShellScriptBin "nix-flake-update" "sudo nix flake update --flake ${flakeUpdateLocation}")}/bin/nix-flake-update"; }; })]; }; diff --git a/home-manager/gaming.nix b/home-manager/gaming.nix index 328c0e2..fd058f4 100644 --- a/home-manager/gaming.nix +++ b/home-manager/gaming.nix @@ -2,26 +2,51 @@ let pkgs_unstable = inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}"; + + # https://simpler-website.pages.dev/html/2021/1/wine-environment-variables/#wineesync + wine-wrapped = (pkgs.writeShellApplication { + name = "wine"; + runtimeInputs = [ pkgs_unstable.wineWowPackages.stagingFull ]; + text = '' + export WINEPREFIX="''${WINEPREFIX:-"$HOME/Games/wine/default"}" + wine "$@" + ''; + }); + + # https://github.com/GloriousEggroll/proton-ge-custom?tab=readme-ov-file#modification + # These aren't yet documented in the README: + # PROTON_MEDIA_USE_GST=1 will tell proton to use the winegstreamer backend instead of the default winedmo backend (the winedmo backend was introduced in Proton 10 and is the current preferred video playback method). This can be useful for games with videos that may have worked in Proton 9 but regressed in Proton 10. + # PROTON_GST_VIDEO_ORIENTATION= can be any of the following: vertical-flip, horizontal-flip, rotate-180, automatic. This is useful if some games have videos that are upside down or otherwise not oriented correctly. + umu-wrapped = (pkgs.writeShellApplication { + name = "umu-run"; + runtimeInputs = [ pkgs_unstable.umu-launcher ]; + text = '' + export PROTONPATH="''${PROTONPATH:-"GE-Proton"}" + export PROTON_ENABLE_WAYLAND="''${PROTON_ENABLE_WAYLAND:-"0"}" + umu-run "$@" + ''; + }); in { home.packages = with pkgs;[ - # Wine / Proton - pkgs_unstable.wineWowPackages.stagingFull + # Wine / Proton + umu-wrapped + wine-wrapped pkgs_unstable.winetricks - pkgs_unstable.umu-launcher - # I'm not sure this actually accomplishes anything, even with PROTON_MEDIA_USE_GST=1 - # (umu-launcher.override { - # extraPkgs = pkgs: with pkgs.gst_all_1; [ - # gstreamer - # gst-plugins-base - # gst-plugins-good - # gst-plugins-bad - # gst-plugins-ugly - # gst-libav - # gst-vaapi - # ]; - # }) + # proton with ja_JP + (pkgs.writeShellApplication { + name = "umu-ja"; + runtimeInputs = [ umu-wrapped ]; + text = "LANG=ja_JP.utf8 umu-run \"$@\""; + }) + + # wine with ja_JP + (pkgs.writeShellApplication { + name = "wine-ja"; + runtimeInputs = [ wine-wrapped ]; + text = "LANG=ja_JP.utf8 wine \"$@\""; + }) bottles (heroic.override { @@ -34,42 +59,10 @@ in steamguard-cli # Emulators - ryubing + pkgs_unstable.ryubing mgba # Cheat engine scanmem - - # proton with ja_JP - (pkgs.writeShellApplication { - name = "umu-ja"; - runtimeInputs = [ pkgs_unstable.umu-launcher ]; - text = "LANG=ja_JP.utf8 umu-run \"$@\""; - }) - - # wine with ja_JP - (pkgs.writeShellApplication { - name = "wine-ja"; - runtimeInputs = [ pkgs_unstable.wineWowPackages.stagingFull ]; - text = "LANG=ja_JP.utf8 wine \"$@\""; - }) ]; - - # https://github.com/GloriousEggroll/proton-ge-custom?tab=readme-ov-file#modification - # There aren't yet documented in the README: - # PROTON_MEDIA_USE_GST=1 will tell proton to use the winegstreamer backend instead of the default winedmo backend (the winedmo backend was introduced in Proton 10 and is the current preferred video playback method). This can be useful for games with videos that may have worked in Proton 9 but regressed in Proton 10. - # PROTON_GST_VIDEO_ORIENTATION= can be any of the following: vertical-flip, horizontal-flip, rotate-180, automatic. This is useful if some games have videos that are upside down or otherwise not oriented correctly. - # https://simpler-website.pages.dev/html/2021/1/wine-environment-variables/#wineesync - home.sessionVariables = { - WINEPREFIX = "~/Games/wine/default"; - PROTONPATH = "GE-Proton"; - PROTON_ENABLE_WAYLAND = "0"; # One day... - }; - - # programs.lutris = { - # enable = true; - # extraPackages = with pkgs; [ mangohud winetricks gamescope gamemode umu-launcher ]; - # protonPackages = [ pkgs.proton-ge-bin ]; - # winePackages = [ pkgs.wineWowPackages.staging ]; - # }; } diff --git a/nixos-update.sh b/nixos-update.sh index a84efc8..ea6ae7f 100755 --- a/nixos-update.sh +++ b/nixos-update.sh @@ -1,2 +1,2 @@ #!/usr/bin/env bash -sudo nixos-rebuild switch --flake "/home/worble/Projects/nixos#$(hostname)" +sudo nixos-rebuild switch --flake "$HOME/Projects/nixos/devices/$(hostname)#$(hostname)"