diff --git a/flake.lock b/flake.lock index e0fdea9..e491b4c 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1743265529, - "narHash": "sha256-QbjP15/2N+VJl0b5jxrrTc+VOt39aU4XrDvtP0Lz5ik=", + "lastModified": 1744289235, + "narHash": "sha256-ZFkHLdimtFzQACsVVyZkZlfYdj4iNy3PkzXfrwmlse8=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "1d2dbd72c2bbaceab031c592d4810f744741d203", + "rev": "c8282f4982b56dfa5e9b9f659809da93f8d37e7a", "type": "github" }, "original": { @@ -61,11 +61,11 @@ ] }, "locked": { - "lastModified": 1743496612, - "narHash": "sha256-emPWa5lmKbnyuj8c1mSJUkzJNT+iJoU9GMcXwjp2oVM=", + "lastModified": 1744478979, + "narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "73d59580d01e9b9f957ba749f336a272869c42dd", + "rev": "43975d782b418ebf4969e9ccba82466728c2851b", "type": "github" }, "original": { @@ -161,24 +161,6 @@ "inputs": { "systems": "systems_3" }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_4" - }, "locked": { "lastModified": 1731533236, "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", @@ -193,9 +175,9 @@ "type": "github" } }, - "flake-utils_4": { + "flake-utils_3": { "inputs": { - "systems": "systems_5" + "systems": "systems_4" }, "locked": { "lastModified": 1705309234, @@ -211,9 +193,9 @@ "type": "github" } }, - "flake-utils_5": { + "flake-utils_4": { "inputs": { - "systems": "systems_6" + "systems": "systems_5" }, "locked": { "lastModified": 1710146030, @@ -229,9 +211,9 @@ "type": "github" } }, - "flake-utils_6": { + "flake-utils_5": { "inputs": { - "systems": "systems_7" + "systems": "systems_6" }, "locked": { "lastModified": 1705309234, @@ -313,11 +295,11 @@ ] }, "locked": { - "lastModified": 1743998782, - "narHash": "sha256-gckmtwW/H0jEM1Y8G3wBLfr2nJvwBdjuqnjKNV0lcQY=", + "lastModified": 1745128386, + "narHash": "sha256-xnNxL9lZC5Ez8AxTgHZZu8pYSNM34+5GD5jGSs8Vq4M=", "owner": "nix-community", "repo": "home-manager", - "rev": "c15ab0ce0dbe64843358a3081b09ed35144dfd65", + "rev": "f98314bb064cf8f8446c44afbadaaad2505875a7", "type": "github" }, "original": { @@ -332,11 +314,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1743896382, - "narHash": "sha256-yYLBCDGOpsrMW1cMYUd1B0AWx86puv75Bn+T+TGsyRU=", + "lastModified": 1744900124, + "narHash": "sha256-2l+0DOQkro1XqokQCQYJVy0RLULxLvRdfd+KLvx2E+I=", "owner": "StevenBlack", "repo": "hosts", - "rev": "37a200a82d7a7d9a6598d870825a30f581632016", + "rev": "8c73d7423883d1e9992eb74aabc17f0780b65c8b", "type": "github" }, "original": { @@ -390,11 +372,11 @@ ] }, "locked": { - "lastModified": 1739049071, - "narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=", + "lastModified": 1743953322, + "narHash": "sha256-prQ5JKopXtzCMX2eT3dXbaVvGmzjMRE2bXStQDdazpM=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73", + "rev": "9d7f2687c84c729afbc3b13f7937655570f2978d", "type": "github" }, "original": { @@ -419,11 +401,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1743975687, - "narHash": "sha256-k21wOvAEzCLHIUsVG551y6cMxmQ7sXQLOtlxQXV09xk=", + "lastModified": 1745164468, + "narHash": "sha256-JOza51SDXsdHIuIR40wdFTzjZdSIq8RwFpCacDNURgk=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "51838fb5f5b5b03bca99b324fb1f6494d3854f89", + "rev": "9b4060f09be06250e859b27d6dd3ded5349f5546", "type": "github" }, "original": { @@ -449,11 +431,11 @@ ] }, "locked": { - "lastModified": 1743950622, - "narHash": "sha256-8qjDapcQeDqxQUIm5gA0x6XZtowV/14bOs3K0tCSMoU=", + "lastModified": 1745156469, + "narHash": "sha256-3PK27C3XcPoOkEIQnaPi3cdvh7XjIGqkcQ6MeZMvy2E=", "owner": "hyprwm", "repo": "hyprland-plugins", - "rev": "be6b9875dd5c586fb401d294bb98c31973849651", + "rev": "faa4e782753ab994333666b7e686b038d420c22f", "type": "github" }, "original": { @@ -571,11 +553,11 @@ ] }, "locked": { - "lastModified": 1741191527, - "narHash": "sha256-kM+11Nch47Xwfgtw2EpRitJuORy4miwoMuRi5tyMBDY=", + "lastModified": 1744468525, + "narHash": "sha256-9HySx+EtsbbKlZDlY+naqqOV679VdxP6x6fP3wxDXJk=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "72df3861f1197e41b078faa3e38eedd60e00018d", + "rev": "f1000c54d266e6e4e9d646df0774fac5b8a652df", "type": "github" }, "original": { @@ -651,15 +633,14 @@ "flake-utils": "flake-utils", "nixpkgs": [ "nixpkgs" - ], - "pnpm2nix": "pnpm2nix" + ] }, "locked": { - "lastModified": 1743984107, - "narHash": "sha256-4847SrchEPDB9CEZME64E41adIygA/pkoQyRGXNymq0=", + "lastModified": 1744754672, + "narHash": "sha256-FmQS8DqjgOyfEth8tpUlJoduo6rAv28PwLGv90J3rcM=", "owner": "moonlight-mod", "repo": "moonlight", - "rev": "f3eb24ebb4c68becb4d28a88ae95bcbd50ec8b66", + "rev": "cbcf4afc43f9bb2347b822fe1f6a2bf74075d927", "type": "github" }, "original": { @@ -695,11 +676,11 @@ ] }, "locked": { - "lastModified": 1744518957, - "narHash": "sha256-RLBSWQfTL0v+7uyskC5kP6slLK1jvIuhaAh8QvB75m4=", + "lastModified": 1745120797, + "narHash": "sha256-owQ0VQ+7cSanTVPxaZMWEzI22Q4bGnuvhVjLAJBNQ3E=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "4fc9ea78c962904f4ea11046f3db37c62e8a02fd", + "rev": "69716041f881a2af935021c1182ed5b0cc04d40e", "type": "github" }, "original": { @@ -710,9 +691,9 @@ }, "nix-options-search": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_2", "gitignore": "gitignore_2", - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1743876182, @@ -738,11 +719,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1743949616, - "narHash": "sha256-L7rN47O8cc/LrYlWtZOKuVYuYQ8VWPlUeAaMVhxQu5o=", + "lastModified": 1745147300, + "narHash": "sha256-PvzBVmB8qRxGnccAaBxPKG9oElAQxac2HbFOGyQuuJU=", "owner": "lilyinstarlight", "repo": "nixos-cosmic", - "rev": "e765d8c0340d38c1544dcfc6cae829ed2582075e", + "rev": "5a4d2109cf5a3eb18a0afa361a017643a57f9454", "type": "github" }, "original": { @@ -754,8 +735,8 @@ "nixpkgs": { "locked": { "lastModified": 0, - "narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=", - "path": "/nix/store/9qd2bi98nh9yd4axm9zr16zln01w62q3-source", + "narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=", + "path": "/nix/store/inbabfz8n7fxflkis0a05zcli4a1q2bp-source", "type": "path" }, "original": { @@ -765,11 +746,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1743703532, - "narHash": "sha256-s1KLDALEeqy+ttrvqV3jx9mBZEvmthQErTVOAzbjHZs=", + "lastModified": 1744440957, + "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bdb91860de2f719b57eef819b5617762f7120c70", + "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "type": "github" }, "original": { @@ -796,11 +777,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1743827369, - "narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=", + "lastModified": 1744932701, + "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "42a1c966be226125b48c384171c44c651c236c22", + "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef", "type": "github" }, "original": { @@ -811,22 +792,6 @@ } }, "nixpkgs_3": { - "locked": { - "lastModified": 1736344531, - "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { "locked": { "lastModified": 1736012469, "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", @@ -842,13 +807,13 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { - "lastModified": 1743827369, - "narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=", + "lastModified": 1744932701, + "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "42a1c966be226125b48c384171c44c651c236c22", + "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef", "type": "github" }, "original": { @@ -857,7 +822,7 @@ "type": "indirect" } }, - "nixpkgs_6": { + "nixpkgs_5": { "locked": { "lastModified": 1708161998, "narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=", @@ -873,7 +838,7 @@ "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_6": { "locked": { "lastModified": 1717696253, "narHash": "sha256-1+ua0ggXlYYPLTmMl3YeYYsBXDSCqT+Gw3u6l4gvMhA=", @@ -889,25 +854,6 @@ "type": "github" } }, - "pnpm2nix": { - "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1736457458, - "narHash": "sha256-eiw+hAsxavEgBfhwrktNI2hwvgeVDzBDYClx/yqka78=", - "owner": "NotNite", - "repo": "pnpm2nix-nzbr", - "rev": "4ac61c6a50623da937dca005e3dbcb8862aafb83", - "type": "github" - }, - "original": { - "owner": "NotNite", - "repo": "pnpm2nix-nzbr", - "type": "github" - } - }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -944,7 +890,7 @@ "nix-index-database": "nix-index-database", "nix-options-search": "nix-options-search", "nixos-cosmic": "nixos-cosmic", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "nixpkgs-stable": "nixpkgs-stable_2", "rust-overlay": "rust-overlay_2", "zig": "zig", @@ -959,11 +905,11 @@ ] }, "locked": { - "lastModified": 1743906877, - "narHash": "sha256-Thah1oU8Vy0gs9bh5QhNcQh1iuQiowMnZPbrkURonZA=", + "lastModified": 1745116541, + "narHash": "sha256-5xzA6dTfqCfTTDCo3ipPZzrg3wp01xmcr73y4cTNMP8=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "9d00c6b69408dd40d067603012938d9fbe95cfcd", + "rev": "e2142ef330a61c02f274ac9a9cb6f8487a5d0080", "type": "github" }, "original": { @@ -979,11 +925,11 @@ ] }, "locked": { - "lastModified": 1743993291, - "narHash": "sha256-u8GHvduU1gCtoFXvTS/wGjH1ouv5S/GRGq6MAT+sG/k=", + "lastModified": 1745116541, + "narHash": "sha256-5xzA6dTfqCfTTDCo3ipPZzrg3wp01xmcr73y4cTNMP8=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "0cb3c8979c65dc6a5812dfe67499a8c7b8b4325b", + "rev": "e2142ef330a61c02f274ac9a9cb6f8487a5d0080", "type": "github" }, "original": { @@ -1082,21 +1028,6 @@ "type": "github" } }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "xdph": { "inputs": { "hyprland-protocols": [ @@ -1125,11 +1056,11 @@ ] }, "locked": { - "lastModified": 1741934139, - "narHash": "sha256-ZhTcTH9FoeAtbPfWGrhkH7RjLJZ7GeF18nygLAMR+WE=", + "lastModified": 1744644585, + "narHash": "sha256-p0D/e4J6Sv6GSb+9u8OQcVHSE2gPNYB5ygIfGDyEiXQ=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "150b0b6f52bb422a1b232a53698606fe0320dde0", + "rev": "be6771e754345f18244fb00aae5c9e5ab21ccc26", "type": "github" }, "original": { @@ -1141,15 +1072,15 @@ "zig": { "inputs": { "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_6" + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1743899701, - "narHash": "sha256-qbaGVwPyUGmmRh+u1EY+bFKKiBC2CDfuE7E9uGj1Iuk=", + "lastModified": 1744978344, + "narHash": "sha256-wY5oeCJDKBlEodTR8d7GbH1rzgiPZeb0x/1z/2GvFvs=", "owner": "mitchellh", "repo": "zig-overlay", - "rev": "51f156aa0220947c6712b5846bf440136fd551db", + "rev": "028c99db16ef26fcc3cf138a2759b3cac3a19ae1", "type": "github" }, "original": { @@ -1161,7 +1092,7 @@ "zig-overlay": { "inputs": { "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_6", + "flake-utils": "flake-utils_5", "nixpkgs": [ "zls", "nixpkgs" @@ -1183,10 +1114,10 @@ }, "zls": { "inputs": { - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_4", "gitignore": "gitignore_3", "langref": "langref", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_6", "zig-overlay": "zig-overlay" }, "locked": { diff --git a/flake.nix b/flake.nix index f5cefbb..ea46e4e 100644 --- a/flake.nix +++ b/flake.nix @@ -72,22 +72,33 @@ inputs.nh.overlays.default ]; - mkSystem = import ./lib/mkSystem.nix { - inherit overlays nixpkgs inputs; + # ----- USER SETTINGS ----- # + userSettings = rec { + username = "nmarks"; # username + name = "Natalie"; # name/identifier + email = "nmarks413@gmail.com"; # email (used for certain configurations) + dotfilesDir = "~/.dotfiles"; # absolute path of the local repo + browser = "firefox"; # Default browser; must select one from ./user/app/browser/ + term = "ghostty"; # Default terminal command; + font = "iosevka Nerd Font"; # Selected font + editor = "neovim"; # Default editor; + spawnEditor = "exec" + term + " -e " + editor; + timeZone = "America/Los_Angeles"; + sexuality = "bisexual"; }; - user = "nmarks"; + mkSystem = import ./lib/mkSystem.nix { + inherit overlays nixpkgs inputs userSettings; + }; in { nixosConfigurations.nixos = mkSystem "nixos" { system = "x86_64-linux"; - inherit user; extraModules = [ nixos-cosmic.nixosModules.default ]; }; darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" { system = "aarch64-darwin"; - inherit user; darwin = true; }; }; diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix index c27dccf..658e2ba 100644 --- a/hosts/desktop/configuration.nix +++ b/hosts/desktop/configuration.nix @@ -3,6 +3,7 @@ inputs, config, pkgs, + userSettings, ... }: { imports = [ @@ -11,57 +12,90 @@ ../../modules/nixos/nvidia.nix ../../modules/nixos/boot.nix + ../../modules/nixos/ld.nix + ../../modules/nixos/services.nix ]; - programs.gamemode.enable = true; + programs = { + gamemode.enable = true; - programs._1password.enable = true; - programs._1password-gui = { - enable = true; - # Certain features, including CLI integration and system authentication support, - # require enabling PolKit integration on some desktop environments (e.g. Plasma). - polkitPolicyOwners = ["nmarks"]; + _1password.enable = true; + _1password-gui = { + enable = true; + # Certain features, including CLI integration and system authentication support, + # require enabling PolKit integration on some desktop environments (e.g. Plasma). + polkitPolicyOwners = [userSettings.username]; + }; + + noisetorch.enable = true; + + hyprland.enable = true; + + fish.enable = true; + virt-manager.enable = true; + + nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 4d --keep 3"; + flake = "/home/nmarks/.dotfiles"; + }; + + neovim = { + enable = true; + defaultEditor = true; + }; + + steam = { + enable = true; + package = with pkgs; steam.override {extraPkgs = pkgs: [attr];}; + }; + + git = { + enable = true; + lfs.enable = true; + }; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + mtr.enable = true; + gnupg.agent = { + enable = true; + enableSSHSupport = true; + pinentryPackage = pkgs.pinentry-curses; + }; + + kdeconnect.enable = true; }; hardware.bluetooth.enable = true; - services = { - }; - - programs.noisetorch.enable = true; - xdg.portal = { enable = true; extraPortals = with pkgs; [xdg-desktop-portal-gtk]; }; + virtualisation = { + containers.enable = true; + podman = { + enable = true; + # dockerCompat = true; + }; + docker.enable = true; - virtualisation.containers.enable = true; - virtualisation.podman = { - enable = true; - # dockerCompat = true; - }; - virtualisation.docker.enable = true; - - nix.settings.trusted-users = ["root" "nmarks"]; - - programs.hyprland.enable = true; - - programs.fish.enable = true; - - virtualisation.libvirtd.enable = true; - programs.virt-manager.enable = true; - - systemd.targets = { - sleep.enable = false; - suspend.enable = false; - hibernate.enable = false; - hybrid-sleep.enable = false; + libvirtd.enable = true; }; - programs.nh = { - enable = true; - clean.enable = true; - clean.extraArgs = "--keep-since 4d --keep 3"; - flake = "/home/nmarks/.dotfiles"; + nix.settings.trusted-users = ["root" userSettings.username]; + systemd = { + targets = { + sleep.enable = false; + suspend.enable = false; + hibernate.enable = false; + hybrid-sleep.enable = false; + }; + + packages = [pkgs.observatory]; + + services.monitord.wantedBy = ["multi-user.target"]; }; i18n = { @@ -95,16 +129,8 @@ ]; }; }; - ### Cosmic stuff - - environment.sessionVariables.COSMIC_DATA_CONTROL_ENABLED = 1; - - systemd.packages = [pkgs.observatory]; - - systemd.services.monitord.wantedBy = ["multi-user.target"]; # Enable sound with pipewire. - # services.pulseaudio.enable = true; security.rtkit.enable = true; # Enable touchpad support (enabled default in most desktopManager). @@ -112,7 +138,7 @@ # Define a user account. Don't forget to set a password with ‘passwd’. users.defaultUserShell = pkgs.fish; - users.users.nmarks = { + users.users.${userSettings.username} = { isNormalUser = true; description = "Natalie Marks"; extraGroups = ["networkmanager" "wheel" "docker"]; @@ -125,40 +151,17 @@ # thunderbird ]; }; + environment = { + sessionVariables.COSMIC_DATA_CONTROL_ENABLED = 1; + variables.EDITOR = "nvim"; - programs.neovim = { - enable = true; - defaultEditor = true; + systemPackages = with pkgs; [ + vim + ]; }; - environment.variables.EDITOR = "nvim"; - - programs.steam = { - enable = true; - package = with pkgs; steam.override {extraPkgs = pkgs: [attr];}; - }; - - programs.git = { - enable = true; - lfs.enable = true; - }; - - environment.systemPackages = with pkgs; [ - vim - ]; - - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - programs.mtr.enable = true; - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - pinentryPackage = pkgs.pinentry-curses; - }; - - programs.kdeconnect.enable = true; networking = { - hostName = "nixos"; # Define your hostname. + hostName = userSettings.hostname; # Define your hostname. # wireless.enable = true; # Enables wireless support via wpa_supplicant. networkmanager.enable = true; firewall = { @@ -171,89 +174,6 @@ }; }; - programs.nix-ld.enable = true; - - # "minimum" amount of libraries needed for most games to run without steam-run - programs.nix-ld.libraries = with pkgs; [ - # common requirement for several games - stdenv.cc.cc.lib - - # from https://github.com/NixOS/nixpkgs/blob/nixos-23.05/pkgs/games/steam/fhsenv.nix#L72-L79 - xorg.libXcomposite - xorg.libXtst - xorg.libXrandr - xorg.libXext - xorg.libX11 - xorg.libXfixes - libGL - libva - - # from https://github.com/NixOS/nixpkgs/blob/nixos-23.05/pkgs/games/steam/fhsenv.nix#L124-L136 - fontconfig - freetype - xorg.libXt - xorg.libXmu - libogg - libvorbis - SDL - SDL2_image - glew110 - libdrm - libidn - tbb - zlib - alsa-lib - at-spi2-atk - at-spi2-core - atk - cairo - cups - curl - dbus - expat - fontconfig - freetype - fuse3 - gdk-pixbuf - glib - gtk3 - icu - libGL - libappindicator-gtk3 - libdrm - libglvnd - libnotify - libpulseaudio - libunwind - libusb1 - libuuid - libxkbcommon - libxml2 - mesa - nspr - nss - openssl - pango - # pipewire - stdenv.cc.cc - systemd - vulkan-loader - xorg.libX11 - xorg.libXScrnSaver - xorg.libXcomposite - xorg.libXcursor - xorg.libXdamage - xorg.libXext - xorg.libXfixes - xorg.libXi - xorg.libXrandr - xorg.libXrender - xorg.libXtst - xorg.libxcb - xorg.libxkbfile - xorg.libxshmfence - zlib - ]; # Open ports in the firewall. # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix index 24f59ec..e9912e7 100644 --- a/hosts/desktop/home.nix +++ b/hosts/desktop/home.nix @@ -4,22 +4,11 @@ pkgs, lib, zls, - nix-options-search, ... }: let shared-programs = import ../shared/home-programs.nix {inherit inputs config pkgs lib;}; in { home = { - username = "nmarks"; - homeDirectory = "/home/nmarks"; - - # This value determines the Home Manager release that your configuration is - # compatible with. This helps avoid breakage when a new Home Manager release - # introduces backwards incompatible changes. - # - # You should not change this value, even if you update Home Manager. If you do - # want to update the value, then make sure to first check the Home Manager - # release notes. stateVersion = "23.05"; # Please read the comment before changing. packages = with pkgs; let @@ -31,6 +20,7 @@ in { ghostty stremio julia + qbittorrent #gaming bottles @@ -67,16 +57,9 @@ in { rust-bin.stable.latest.default ]; # programs.mangohud.enable = true; - - sessionVariables = { - EDITOR = "nvim"; - VISUAL = "nvim"; - TERMINAL = "ghostty"; - BROWSER = "firefox"; - }; }; programs = shared-programs; - xdg.mimeApps.defaultApplications."inode/directory" = "dolphin.desktop"; + # xdg.mimeApps.defaultApplications."inode/directory" = "dolphin.desktop"; } diff --git a/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix index add1619..ddbb9c0 100644 --- a/hosts/laptop/configuration.nix +++ b/hosts/laptop/configuration.nix @@ -3,6 +3,7 @@ config, pkgs, lib, + userSettings, ... }: { imports = [ @@ -10,20 +11,12 @@ ../../modules/macos/homebrew.nix ]; - environment.systemPackages = with pkgs; [ - neovim - pinentry_mac - ]; - - # environment.customIcons = { - # enable = true; - # icons = [ - # { - # path = "/Applications/Zen.app"; - # icon = "/Users/nmarks/.dotfiles/icons/Zen_icons/firefox.icns"; - # } - # ]; - # }; + environment.systemPackages = with pkgs; + [ + neovim + pinentry_mac + ] + ++ callPackage ../shared/packages.nix {}; # Use a custom configuration.nix location. #environment.darwinConfig = "$HOME/.dotfiles/hosts/laptop"; @@ -34,6 +27,7 @@ zsh.enable = true; # default shell on catalina }; + # When opening an interactive shell that isnt fish move into fish programs.zsh = { interactiveShellInit = '' if [[ $(${pkgs.procps}/bin/ps -p $PPID -o comm) != "fish" && -z ''${ZSH_EXUCTION_STRING} ]] @@ -44,6 +38,7 @@ ''; }; + #Use touchid or watch to activate sudo security.pam.services.sudo_local = { enable = true; reattach = true; @@ -57,12 +52,15 @@ stateVersion = 6; defaults = { + # Turn quaranite off LaunchServices = { LSQuarantine = false; }; NSGlobalDomain = { + # Show extensions in finder AppleShowAllExtensions = true; + #Turn off the hold and press to input special chars ApplePressAndHoldEnabled = false; # 120, 90, 60, 30, 12, 6, 2 @@ -71,6 +69,7 @@ # 120, 94, 68, 35, 25, 15 InitialKeyRepeat = 15; + #Turn off beep noise in terminal "com.apple.mouse.tapBehavior" = 1; "com.apple.sound.beep.volume" = 0.0; "com.apple.sound.beep.feedback" = 0; @@ -89,7 +88,8 @@ # minimal dock dock = { autohide = true; - autohide-time-modifier = 0; + #instant hide and show + autohide-time-modifier = 0.0; show-process-indicators = true; expose-group-apps = true; @@ -97,11 +97,12 @@ show-recents = true; static-only = true; + # Scale instead of shrink mineffect = "scale"; orientation = "bottom"; }; - # a finder that tells me what I want to know and lets me work + # Better finder settings finder = { _FXShowPosixPathInTitle = true; FXDefaultSearchScope = "SCcf"; @@ -115,6 +116,8 @@ }; }; }; + + # Bind caps to escape for better normal mode stuff keyboard = { enableKeyMapping = true; remapCapsLockToEscape = true; diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index 8c88b3d..5c76af0 100644 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -3,38 +3,22 @@ config, pkgs, lib, - user, + userSettings, + systemSettings, ... }: { - programs = import ../shared/home-programs.nix {inherit inputs config pkgs lib;}; + programs = import ../shared/home-programs.nix {inherit inputs config pkgs lib userSettings;}; home = { - username = user; - homeDirectory = "/Users/nmarks/"; + inherit (userSettings) username; + # homeDirectory = systemSettings.homeConfig; # shell = pkgs.fish; - # Home Manager needs a bit of information about you and the paths it should - # manage. - # This value determines the Home Manager release that your configuration is - # compatible with. This helps avoid breakage when a new Home Manager release - # introduces backwards incompatible changes. - # - # You should not change this value, even if you update Home Manager. If you do - # want to update the value, then make sure to first check the Home Manager - # release notes. stateVersion = "23.05"; # Please read the comment before changing. - packages = pkgs.callPackage ../shared/packages.nix {}; + # packages = pkgs.callPackage ../shared/packages.nix {}; - sessionVariables = { - EDITOR = "nvim"; - VISUAL = "nvim"; - TERMINAL = "ghostty"; - BROWSER = "firefox"; - }; sessionPath = [ "$HOME/.emacs.d/bin" ]; }; - - # Let Home Manager install and manage itself. } diff --git a/hosts/shared/home-programs.nix b/hosts/shared/home-programs.nix index 02f8bbc..8e6f0f6 100644 --- a/hosts/shared/home-programs.nix +++ b/hosts/shared/home-programs.nix @@ -3,6 +3,7 @@ config, pkgs, lib, + userSettings, ... }: { nix-index.enable = true; @@ -51,7 +52,7 @@ enable = true; settings = { backend = "fastfetch"; - preset = "bisexual"; + preset = userSettings.sexuality; mode = "rgb"; light_dark = "dark"; lightness = { @@ -85,7 +86,7 @@ reboot-windows = "sudo efibootmgr --bootnext 0000; sudo reboot -h now"; }; shellInit = '' - test -r '/Users/nmarks/.opam/opam-init/init.fish' && source '/Users/nmarks/.opam/opam-init/init.fish' > /dev/null 2> /dev/null; or true + test -r '/Users/${userSettings.username}/.opam/opam-init/init.fish' && source '/Users/${userSettings.username}/.opam/opam-init/init.fish' > /dev/null 2> /dev/null; or true batman --export-env | source ''; }; diff --git a/hosts/shared/packages.nix b/hosts/shared/packages.nix index dbda90a..c7f8904 100644 --- a/hosts/shared/packages.nix +++ b/hosts/shared/packages.nix @@ -59,11 +59,10 @@ with pkgs; [ withMoonlight = true; }) vesktop - signal-desktop + signal-desktop-bin #media spotify - qbittorrent #language servers typst-live diff --git a/lib/mkSystem.nix b/lib/mkSystem.nix index d6c7fd6..64f05b2 100644 --- a/lib/mkSystem.nix +++ b/lib/mkSystem.nix @@ -4,85 +4,100 @@ nixpkgs, overlays, inputs, + userSettings, }: name: { system, - user, darwin ? false, extraModules ? [], }: let + # userSettings = rec { + # username = "nmarks"; # username + # name = "Natalie"; # name/identifier + # email = "nmarks413@gmail.com"; # email (used for certain configurations) + # dotfilesDir = "~/.dotfiles"; # absolute path of the local repo + # browser = "firefox"; # Default browser; must select one from ./user/app/browser/ + # term = "ghostty"; # Default terminal command; + # font = "iosevka Nerd Font"; # Selected font + # editor = "neovim"; # Default editor; + # spawnEditor = "exec" + term + "- e " + editor; + # }; nixindex = if darwin then inputs.nix-index-database.darwinModules.nix-index else inputs.nix-index-database.nixosModules.nix-index; - host = - if darwin - then "laptop" - else "desktop"; + systemSettings = rec { + host = + if darwin + then "laptop" + else "desktop"; - # The config files for this system. + # The config files for this system. - hostConfig = ../hosts/${host}/configuration.nix; - homeConfig = ../hosts/${host}/home.nix; + hostConfig = ../hosts/${host}/configuration.nix; + homeConfig = ../hosts/${host}/home.nix; - homeDir = - if darwin - then "/Users/nmarks/" - else "/home/nmarks"; + homeDir = + if darwin + then "/Users/" + userSettings.username + "/" + else "/home/" + userSettings.username + "/"; - # NixOS vs nix-darwin functions - systemFunc = - if darwin - then inputs.darwin.lib.darwinSystem - else nixpkgs.lib.nixosSystem; + # NixOS vs nix-darwin functions + systemFunc = + if darwin + then inputs.darwin.lib.darwinSystem + else nixpkgs.lib.nixosSystem; - hmModules = - if darwin - then inputs.home-manager.darwinModules - else inputs.home-manager.nixosModules; + hmModules = + if darwin + then inputs.home-manager.darwinModules + else inputs.home-manager.nixosModules; + }; in - systemFunc rec { - inherit system; + with systemSettings; + systemFunc rec { + inherit system; - modules = - [ - # Apply our overlays. Overlays are keyed by system type so we have - # to go through and apply our system type. We do this first so - # the overlays are available globally. - {nixpkgs.overlays = overlays;} + modules = + [ + # Apply our overlays. Overlays are keyed by system type so we have + # to go through and apply our system type. We do this first so + # the overlays are available globally. + {nixpkgs.overlays = overlays;} - # Enable caching for nix-index so we dont have to rebuild it + # Enable caching for nix-index so we dont have to rebuild it - #shared modules - ../modules/shared/extras.nix - ../modules/shared/nix.nix + #shared modules + ../modules/shared/extras.nix + ../modules/shared/nix.nix - hostConfig - nixindex - {programs.nix-index-database.comma.enable = true;} - hmModules.home-manager - { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - backupFileExtension = "hm-backup"; - extraSpecialArgs = {inherit inputs user;}; - users.${user} = homeConfig; - }; + hostConfig + nixindex + {programs.nix-index-database.comma.enable = true;} + hmModules.home-manager + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "hm-backup"; + extraSpecialArgs = {inherit inputs userSettings systemSettings;}; + users.${userSettings.username} = homeConfig; + }; - users.users.${user}.home = homeDir; - } + users.users.${userSettings.username}.home = homeDir; + } - # We expose some extra arguments so that our modules can parameterize - # better based on these values. - { - config._module.args = { - currentSystem = system; - currentSystemName = name; - currentSystemUser = user; - inherit inputs; - }; - } - ] - ++ extraModules; - } + # We expose some extra arguments so that our modules can parameterize + # better based on these values. + { + config._module.args = { + currentSystem = system; + # currentSystemName = name; + # currentSystemUser = userSettings.username; + + inherit inputs userSettings systemSettings; + }; + } + ] + ++ extraModules; + } diff --git a/modules/nixos/ld.nix b/modules/nixos/ld.nix new file mode 100644 index 0000000..24cd8c0 --- /dev/null +++ b/modules/nixos/ld.nix @@ -0,0 +1,85 @@ +{pkgs, ...}: { + programs.nix-ld.enable = true; + + # "minimum" amount of libraries needed for most games to run without steam-run + programs.nix-ld.libraries = with pkgs; [ + # common requirement for several games + stdenv.cc.cc.lib + + # from https://github.com/NixOS/nixpkgs/blob/nixos-23.05/pkgs/games/steam/fhsenv.nix#L72-L79 + xorg.libXcomposite + xorg.libXtst + xorg.libXrandr + xorg.libXext + xorg.libX11 + xorg.libXfixes + libGL + libva + + # from https://github.com/NixOS/nixpkgs/blob/nixos-23.05/pkgs/games/steam/fhsenv.nix#L124-L136 + fontconfig + freetype + xorg.libXt + xorg.libXmu + libogg + libvorbis + SDL + SDL2_image + glew110 + libdrm + libidn + tbb + zlib + alsa-lib + at-spi2-atk + at-spi2-core + atk + cairo + cups + curl + dbus + expat + fontconfig + freetype + fuse3 + gdk-pixbuf + glib + gtk3 + icu + libGL + libappindicator-gtk3 + libdrm + libglvnd + libnotify + libpulseaudio + libunwind + libusb1 + libuuid + libxkbcommon + libxml2 + mesa + nspr + nss + openssl + pango + # pipewire + stdenv.cc.cc + systemd + vulkan-loader + xorg.libX11 + xorg.libXScrnSaver + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrandr + xorg.libXrender + xorg.libXtst + xorg.libxcb + xorg.libxkbfile + xorg.libxshmfence + zlib + ]; +} diff --git a/modules/nixos/services.nix b/modules/nixos/services.nix index c980d52..c65f724 100644 --- a/modules/nixos/services.nix +++ b/modules/nixos/services.nix @@ -26,10 +26,14 @@ }; }; - desktopManager.cosmic.enable = true; displayManager.cosmic-greeter.enable = true; + # Auto mount devices + udiskie = { + enable = true; + }; + # Configure keymap in X11 xserver = { xkb.layout = "us"; @@ -39,7 +43,10 @@ tailscale.enable = true; # Enable CUPS to print documents. - printing.enable = true; + printing = { + enable = true; + drivers = [pkgs.brlaser]; # Brother printer driver + }; pipewire = { enable = true; diff --git a/modules/shared/extras.nix b/modules/shared/extras.nix index 619559a..272244b 100644 --- a/modules/shared/extras.nix +++ b/modules/shared/extras.nix @@ -2,6 +2,7 @@ pkgs, config, inputs, + userSettings, ... }: { services.tailscale.enable = true; @@ -9,7 +10,6 @@ networking = { }; fonts.packages = with pkgs; [ - # alibaba-fonts nerd-fonts.fira-code nerd-fonts.iosevka iosevka @@ -18,5 +18,12 @@ ]; # Set your time zone. - time.timeZone = "America/Los_Angeles"; + time.timeZone = userSettings.timeZone; + + home-manager.users.${userSettings.username}.home.sessionVariables = { + EDITOR = userSettings.editor; + VISUAL = userSettings.editor; + TERMINAL = userSettings.term; + BROWSER = userSettings.browser; + }; } diff --git a/modules/shared/home-manager.nix b/modules/shared/home-manager.nix new file mode 100644 index 0000000..4d18f17 --- /dev/null +++ b/modules/shared/home-manager.nix @@ -0,0 +1,8 @@ +{ + config, + pkgs, + lib, + ... +}: { + +} diff --git a/modules/shared/nix.nix b/modules/shared/nix.nix index 292a9aa..c721fe2 100644 --- a/modules/shared/nix.nix +++ b/modules/shared/nix.nix @@ -24,11 +24,13 @@ "https://nix-community.cachix.org" "https://cosmic.cachix.org/" + # For haskell "https://cache.iog.io" ]; trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" + # For haskell "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" ]; };