From 6e0c1d55b2e1c5c42891824bd668b16813e18f02 Mon Sep 17 00:00:00 2001 From: Arun Udayashankar Date: Mon, 15 May 2023 14:25:53 -0400 Subject: [PATCH] Initial commit --- .gitignore | 1 + README.md | 21 ++++++ flake.lock | 105 ++++++++++++++++++++++++++ flake.nix | 38 ++++++++++ hosts/Adelaide/default.nix | 53 +++++++++++++ modules/darwin/default.nix | 56 ++++++++++++++ modules/home-manager/default.nix | 42 +++++++++++ modules/home-manager/dotfiles/inputrc | 11 +++ 8 files changed, 327 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 hosts/Adelaide/default.nix create mode 100644 modules/darwin/default.nix create mode 100644 modules/home-manager/default.nix create mode 100644 modules/home-manager/dotfiles/inputrc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2be92b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +result diff --git a/README.md b/README.md new file mode 100644 index 0000000..1cc24a5 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# Nix Configuration + +Nix flake based configuration for Darwin/HomeManager + +This flake is used to manage the following: + + - MacOS system defaults + - Fonts + - System & User packages + - MacOS specific packages (not supported by nixpkgs) + - MacOS specific GUI apps (using casks) + - Various application specific configurations: + - zsh + - git + - bat + +## Setup + + +## References + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..05ed800 --- /dev/null +++ b/flake.lock @@ -0,0 +1,105 @@ +{ + "nodes": { + "darwin": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1684148371, + "narHash": "sha256-CEVaArsziqantqU418XXruNDjPZN/HC3x1rqr2D4g+o=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "0dbf1c2fb1a5a0372a324eff1ba44f9da66febd2", + "type": "github" + }, + "original": { + "owner": "lnl7", + "ref": "master", + "repo": "nix-darwin", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1684061181, + "narHash": "sha256-EJpZ+Drpt3aHpowddpsQFBWsqLSJHyP6dnremTVMdWw=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "e4272987f785a8848205263abb4911b922c21e1b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1684049129, + "narHash": "sha256-7WB9LpnPNAS8oI7hMoHeKLNhRX7k3CI9uWBRSfmOCCE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0470f36b02ef01d4f43c641bbf07020bcab71bf1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1683928319, + "narHash": "sha256-maz0DRKixJVcNRMiAMWlJniiF8IuQ+WbfmlJJ8D+jfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9656e85a15a0fe67847ee8cdb99a20d8df499962", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1684049129, + "narHash": "sha256-7WB9LpnPNAS8oI7hMoHeKLNhRX7k3CI9uWBRSfmOCCE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0470f36b02ef01d4f43c641bbf07020bcab71bf1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "darwin": "darwin", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixpkgs-stable": "nixpkgs-stable", + "nixpkgs-unstable": "nixpkgs-unstable" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..229df6b --- /dev/null +++ b/flake.nix @@ -0,0 +1,38 @@ +{ + description = "Arun's Nix Configuration Flake"; + + inputs = { + nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-22.11"; + nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + #... Declarative configuration of user speficic packages and dotfiles + home-manager.url = "github:nix-community/home-manager/master"; # release-22.11 + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + + #... MacOS system level settings + darwin.url = "github:lnl7/nix-darwin/master"; + darwin.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = inputs@{ nixpkgs, home-manager, darwin, ... }: { + + darwinConfigurations = let + system = "aarch64-darwin"; #... "x86_64-darwin" for intel based Macs + in { + Adelaide = darwin.lib.darwinSystem { + pkgs = import nixpkgs { inherit system; }; + modules = [ + ./modules/darwin/default.nix + home-manager.darwinModules.home-manager { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.arun.imports = [ ./modules/home-manager/default.nix ]; + }; + } + ]; + }; + }; + }; +} diff --git a/hosts/Adelaide/default.nix b/hosts/Adelaide/default.nix new file mode 100644 index 0000000..6354d4d --- /dev/null +++ b/hosts/Adelaide/default.nix @@ -0,0 +1,53 @@ +{ pkgs, ... }: +{ + services.nix-daemon.enable = true; #... Make sure the nix daemon always runs + + programs.zsh.enable = true; + + environment = { + shells = with pkgs; [ bashInteractive zsh ] + loginShell = pkgs.zsh; + systemPackages = with pkgs; [ cachix ] + systemPath = [ "/opt/homebrew/bin" ] + pathsToLink = [ "/Applications" ] + } + + system.stateVersion = 4; #... This is here for backwards compatibility, don't change + + system.defaults = { + finder.AppleShowAllExtensions = true; + finder._FXShowPosixPathInTitle = true; + + dock.autohide = true; + + NSGlobalDomain.AppleShowAllExtensions = true; + NSGlobalDomain.InitialKeyRepeat = 14; + NSGlobalDomain.KeyRepeat = 1; + } + + homebrew = { + enable = true; #... nix-darwin to manage installing/updating/uprading Homebrew taps + onActivation = { + autoUpdate = false; + upgrade = false; + cleanup = "zap"; #... "uninstall" or "zap" + }; + global.brewfile = true; + + #... List of Homebrew formula repositories to tap + taps = [ + ]; + + #... List of Homebrew Formulae to install + brews = [ + ]; + + #... List of Homebrew Casks to install + casks = [ + ]; + + #... List of application to install from the offical Mac App Store (using mas) + masApps = { + }; + } +} diff --git a/modules/darwin/default.nix b/modules/darwin/default.nix new file mode 100644 index 0000000..83a4d29 --- /dev/null +++ b/modules/darwin/default.nix @@ -0,0 +1,56 @@ +{ pkgs, ... }: +{ + services.nix-daemon.enable = true; #... Make sure the nix daemon always runs & manage the service + nix.extraOptions = '' + experimental-features = nix-command flakes + ''; + + programs.zsh.enable = true; + + environment = { + shells = with pkgs; [ bashInteractive zsh ]; + loginShell = pkgs.zsh; + systemPackages = with pkgs; [ cachix ]; + systemPath = [ "/opt/homebrew/bin" ]; + pathsToLink = [ "/Applications" ]; + }; + + system.stateVersion = 4; #... This is here for backwards compatibility, don't change + + system.defaults = { + finder.AppleShowAllExtensions = true; + finder._FXShowPosixPathInTitle = true; + + dock.autohide = true; + + NSGlobalDomain.AppleShowAllExtensions = true; + NSGlobalDomain.InitialKeyRepeat = 15; + NSGlobalDomain.KeyRepeat = 2; + }; + + homebrew = { + enable = true; #... nix-darwin to manage installing/updating/uprading Homebrew taps + onActivation = { + autoUpdate = false; + upgrade = false; + cleanup = "zap"; #... "uninstall" or "zap" + }; + global.brewfile = true; + + #... List of Homebrew formula repositories to tap + taps = [ + ]; + + #... List of Homebrew Formulae to install + brews = [ + ]; + + #... List of Homebrew Casks to install + casks = [ + ]; + + #... List of application to install from the offical Mac App Store (using mas) + masApps = { + }; + }; +} diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix new file mode 100644 index 0000000..28dfcc6 --- /dev/null +++ b/modules/home-manager/default.nix @@ -0,0 +1,42 @@ +{ pkgs, ... }: +{ + home.stateVersion = "22.11"; #... This is here for backwards compatibility, don't change + + home.packages = with pkgs; [ + ]; + + home.sessionVariables = { + PAGER = "less"; + EDITOR = "vim"; + }; + + home.file.".inputrc".source = ./dotfiles/inputrc; + + programs.bat.enable = true; + programs.bat.config.theme = "Solarized (light)"; + + programs.zsh = { + enable = true; + enableCompletion = true; + enableAutosuggestions = true; + enableSyntaxHighlighting = true; + + history = { + save = 10000; #... Save 10K lines of history + expireDuplicatesFirst = true; + ignoreSpace = true; + }; + + defaultKeymap = "viins"; + }; + + programs.git = { + enable = true; + userName = "Arun Udayashankar"; + userEmail = "arunkumar.u@gmail.com"; + + extraConfig = { + github.user = "uarun"; + }; + }; +} diff --git a/modules/home-manager/dotfiles/inputrc b/modules/home-manager/dotfiles/inputrc new file mode 100644 index 0000000..c8d151b --- /dev/null +++ b/modules/home-manager/dotfiles/inputrc @@ -0,0 +1,11 @@ +set show-all-if-ambigious on +set completion-ignore-case on +set mark-directories on +set mark-symlinked-directories on +set colored-stats on +set visible-stats on + + +set keymap vi +set editing-mode vi-insert +