From d44d3919edf11cb432b7544fd49ea66f03800c0c Mon Sep 17 00:00:00 2001 From: Ryan Cao <70191398+ryanccn@users.noreply.github.com> Date: Sun, 13 Aug 2023 18:51:49 +0800 Subject: [PATCH] feat: add nixos (doesn't work yet) --- flake.lock | 18 +++---- flake.nix | 13 +++-- home.nix | 33 +++++++----- nixos.nix | 135 +++++++++++++++++++++++++++++++++++++++++++++++ programs/bat.nix | 1 + programs/go.nix | 10 +++- system.nix | 19 ++++--- 7 files changed, 194 insertions(+), 35 deletions(-) create mode 100644 nixos.nix diff --git a/flake.lock b/flake.lock index 4c63ad4..64627b5 100644 --- a/flake.lock +++ b/flake.lock @@ -145,11 +145,11 @@ ] }, "locked": { - "lastModified": 1691672736, - "narHash": "sha256-HNPA/dKHerA0p4OsToEcW/DtTSXBcK5gFRsy/yPgV/Y=", + "lastModified": 1691882297, + "narHash": "sha256-e1/LAQSGLnBywfA1TfMl0Vj3tvYka73XOZ/D2/CJowE=", "owner": "nix-community", "repo": "home-manager", - "rev": "6e1eff9aac0e8d84bda7f2d60ba6108eea9b7e79", + "rev": "c3ab5ea047e6dc73df530948f7367455749d8906", "type": "github" }, "original": { @@ -180,11 +180,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1691709280, - "narHash": "sha256-zmfH2OlZEXwv572d0g8f6M5Ac6RiO8TxymOpY3uuqrM=", + "lastModified": 1691853136, + "narHash": "sha256-wTzDsRV4HN8A2Sl0SVQY0q8ILs90CD43Ha//7gNZE+E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cf73a86c35a84de0e2f3ba494327cf6fb51c0dfd", + "rev": "f0451844bbdf545f696f029d1448de4906c7f753", "type": "github" }, "original": { @@ -248,11 +248,11 @@ ] }, "locked": { - "lastModified": 1691806075, - "narHash": "sha256-yuq7cNkFOQse4WwLw0rUiXhG58aI6eyXKfcTw5Act/I=", + "lastModified": 1691892594, + "narHash": "sha256-Lt9/WUnI/ZqBYnHOC3n6Lg5jTfd/ZI+39jZx5HmolSQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b87a7db512340dea25e95f444db29e9264ff7a63", + "rev": "c638e10caf94caaa97fb1df74e3bb467dc9b92db", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 3ab8fc1..bc6e113 100644 --- a/flake.nix +++ b/flake.nix @@ -76,16 +76,23 @@ discord-applemusic-rich-presence, ... }: let - configuration = {pkgs, ...}: + darwinConfiguration = {pkgs, ...}: import ./system.nix (nixpkgs.lib.recursiveUpdate inputs {inherit pkgs;}); + linuxConfiguration = {pkgs, ...}: + import ./nixos.nix (nixpkgs.lib.recursiveUpdate inputs {inherit pkgs;}); in { darwinConfigurations.Ryans-MacBook-Pro = nix-darwin.lib.darwinSystem { modules = [ - configuration + darwinConfiguration home-manager.darwinModules.home-manager ]; }; - darwinPackages = self.darwinConfigurations.Ryans-MacBook-Pro.pkgs; + nixosConfigurations.Ryans-MacBook-Pro = nixpkgs.lib.nixosSystem { + modules = [ + linuxConfiguration + home-manager.darwinModules.home-manager + ]; + }; }; } diff --git a/home.nix b/home.nix index f59d1af..9fc3ade 100644 --- a/home.nix +++ b/home.nix @@ -4,20 +4,25 @@ ctpModule, discord-applemusic-rich-presence, ... -}: { +}: let + inherit (pkgs) lib stdenv; +in { home.stateVersion = "23.05"; - imports = [ - ctpModule - discord-applemusic-rich-presence - ./programs/zsh.nix - ./programs/fish.nix - ./programs/starship.nix - ./programs/git.nix - ./programs/bat.nix - ./programs/helix.nix - ./programs/go.nix - ./programs/exa.nix - ]; + imports = + [ + ctpModule + ./programs/zsh.nix + ./programs/fish.nix + ./programs/starship.nix + ./programs/git.nix + ./programs/bat.nix + ./programs/helix.nix + ./programs/go.nix + ./programs/exa.nix + ] + ++ lib.optional stdenv.isDarwin [ + discord-applemusic-rich-presence.overlays.default + ]; programs.home-manager.enable = true; home.packages = with pkgs; [ @@ -25,7 +30,7 @@ ryan-term-bin ]; - services.discord-applemusic-rich-presence = { + services.discord-applemusic-rich-presence = lib.optionalAttrs stdenv.isDarwin { enable = true; logFile = "${config.home.homeDirectory}/Library/Logs/discord-applemusic-rich-presence.log"; }; diff --git a/nixos.nix b/nixos.nix new file mode 100644 index 0000000..0abcd25 --- /dev/null +++ b/nixos.nix @@ -0,0 +1,135 @@ +{ + pkgs, + attic, + catppuccin, + discord-applemusic-rich-presence, + nyoom, + ... +}: { + environment.systemPackages = with pkgs; [ + nil + alejandra + nixpkgs-fmt + attic-client + cachix + direnv + + rustc + cargo + + ccache + deno + fnm + bun + + (python311.withPackages (ps: + with ps; [ + pip + yt-dlp + xkcdpass + ])) + libffi + openssl + + rust-analyzer + nodePackages.typescript-language-server + rustfmt + clippy + + pkgs.nyoom + + age + asciinema + bat + btop + cloudflared + doggo + doppler + du-dust + exiftool + fd + ffmpeg + flyctl + fzf + gh + gen-license + gum + hyperfine + jq + just + spicetify-cli + mkcert + nerdfix + pscale + railway + silicon + tealdeer + tokei + vhs + vivid + xh + zoxide + + typst + packwiz + + catppuccin-catwalk + packwiz + ]; + + services.nix-daemon.enable = true; + nix.package = pkgs.nix; + + nix.settings = { + experimental-features = "nix-command flakes"; + build-users-group = "nixbld"; + trusted-users = ["ryanccn"]; + auto-optimise-store = true; + extra-platforms = ["x86_64-linux" "aarch64-linux"]; + + extra-substituters = [ + "https://nix-community.cachix.org" + ]; + extra-trusted-public-keys = [ + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + }; + + nixpkgs = { + overlays = [ + attic.overlays.default + nyoom.overlays.default + (import ./overlays/ryan-mono-bin.nix) + ]; + + config.allowUnfree = true; + hostPlatform = "x86_64-linux"; + }; + + system.activationScripts.extraActivation = { + text = '' + set -eo pipefail + ${pkgs.lib.getExe pkgs.nvd} --nix-bin-dir=${pkgs.nix}/bin diff /run/current-system "$systemConfig" + ''; + }; + + programs.fish.enable = true; + programs.zsh.enable = true; + + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { + ctpModule = catppuccin.homeManagerModules.catppuccin; + discord-applemusic-rich-presence = discord-applemusic-rich-presence.homeManagerModules.default; + }; + }; + + users.users.ryanccn = { + home = "/home/ryanccn"; + }; + + home-manager.users.ryanccn = import ./home.nix; + + system.stateVersion = 4; +} diff --git a/programs/bat.nix b/programs/bat.nix index c9d5501..8a51187 100644 --- a/programs/bat.nix +++ b/programs/bat.nix @@ -2,6 +2,7 @@ programs.bat = { enable = true; catppuccin.enable = true; + config = { style = "plain"; }; diff --git a/programs/go.nix b/programs/go.nix index 414ffbe..c78eec5 100644 --- a/programs/go.nix +++ b/programs/go.nix @@ -1,10 +1,16 @@ -{...}: { +{ + lib, + stdenv, + ... +}: let + inherit (stdenv) isDarwin; +in { programs.go = { enable = true; goPath = ".go"; }; - home.file."Library/Application Support/go/env".text = '' + home.file."Library/Application Support/go/env".text = lib.optionalString isDarwin '' GOTOOLCHAIN=path GOPROXY=direct ''; diff --git a/system.nix b/system.nix index e4ffc6f..46c61a7 100644 --- a/system.nix +++ b/system.nix @@ -116,8 +116,8 @@ security.pam.enableSudoTouchIdAuth = true; - programs.zsh.enable = true; programs.fish.enable = true; + programs.zsh.enable = true; homebrew = { enable = true; @@ -143,14 +143,19 @@ taps = ["1password/tap"]; }; - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = { - ctpModule = catppuccin.homeManagerModules.catppuccin; - discord-applemusic-rich-presence = discord-applemusic-rich-presence.homeManagerModules.default; + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { + ctpModule = catppuccin.homeManagerModules.catppuccin; + discord-applemusic-rich-presence = discord-applemusic-rich-presence.homeManagerModules.default; + }; + }; + + users.users.ryanccn = { + home = "/Users/ryanccn"; }; - users.users.ryanccn.home = "/Users/ryanccn"; home-manager.users.ryanccn = import ./home.nix; system.stateVersion = 4;