Compare commits

...

4 Commits

Author SHA1 Message Date
Abhinav Sarkar 0d4776105a flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/3df2a80f3f85f91ea06e5e91071fa74ba92e5084' (2024-01-23)
  → 'github:nix-community/home-manager/d634c3abafa454551f2083b054cd95c3f287be61' (2024-01-28)
• Updated input 'nix-darwin':
    'github:LnL7/nix-darwin/4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d' (2023-11-24)
  → 'github:LnL7/nix-darwin/91b9daf672c957ef95a05491a75f62e6a01d5aaf' (2024-01-30)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/5f5210aa20e343b7e35f40c033000db0ef80d7b9' (2024-01-22)
  → 'github:nixos/nixpkgs/222c1940fafeda4dea161858ffe6ebfc853d3db5' (2024-01-30)
2024-01-31 16:02:50 +05:30
Abhinav Sarkar 006d6bdd91 Adds Homebrew support and packages 2024-01-31 16:00:03 +05:30
Abhinav Sarkar 3456978b5f Adds nix-darwin 2023-11-25 16:13:20 +05:30
Abhinav Sarkar 3f4264f030 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/93e804e7f8a1eb88bde6117cd5046501e66aa4bd' (2024-01-11)
  → 'github:nix-community/home-manager/3df2a80f3f85f91ea06e5e91071fa74ba92e5084' (2024-01-23)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/eabe8d3eface69f5bb16c18f8662a702f50c20d5' (2024-01-09)
  → 'github:nixos/nixpkgs/5f5210aa20e343b7e35f40c033000db0ef80d7b9' (2024-01-22)
2024-01-24 10:46:56 +05:30
9 changed files with 218 additions and 70 deletions

46
configuration.nix Normal file
View File

@ -0,0 +1,46 @@
{ pkgs, inputs, ... }:
{
imports = [./nix.nix];
security.pam.enableSudoTouchIdAuth = true;
system = {
defaults = {
dock = {
appswitcher-all-displays = false;
autohide = true;
magnification = true;
mru-spaces = false;
orientation = "bottom";
wvous-bl-corner = 13;
wvous-br-corner = 14;
wvous-tl-corner = 2;
wvous-tr-corner = 3;
};
finder = {
AppleShowAllExtensions = true;
FXPreferredViewStyle = "Nlsv";
};
NSGlobalDomain = {
AppleEnableMouseSwipeNavigateWithScrolls = true;
AppleEnableSwipeNavigateWithScrolls = true;
AppleICUForce24HourTime = true;
AppleInterfaceStyle = "Dark";
AppleInterfaceStyleSwitchesAutomatically = false;
NSAutomaticCapitalizationEnabled = false;
NSAutomaticDashSubstitutionEnabled = true;
NSAutomaticSpellingCorrectionEnabled = false;
NSAutomaticPeriodSubstitutionEnabled = false;
NSAutomaticQuoteSubstitutionEnabled = true;
_HIHideMenuBar = true;
};
trackpad = {
Clicking = true;
TrackpadRightClick = true;
};
};
keyboard = {
enableKeyMapping = true;
remapCapsLockToControl = true;
};
stateVersion = 4;
};
}

View File

@ -71,11 +71,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1704980804, "lastModified": 1706473109,
"narHash": "sha256-lPNNKdPqIYcjhhYIVwlajNt/HqVWbMOoSdNnwCvOP04=", "narHash": "sha256-iyuAvpKTsq2u23Cr07RcV5XlfKExrG8gRpF75hf1uVc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "93e804e7f8a1eb88bde6117cd5046501e66aa4bd", "rev": "d634c3abafa454551f2083b054cd95c3f287be61",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -101,19 +101,39 @@
"type": "github" "type": "github"
} }
}, },
"nix-darwin": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1706581965,
"narHash": "sha256-1H7dRdK9LJ7+2X1XQtbwXr+QMqtVVo/ZF0/LIvkjdK8=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "91b9daf672c957ef95a05491a75f62e6a01d5aaf",
"type": "github"
},
"original": {
"owner": "LnL7",
"repo": "nix-darwin",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1704842529, "lastModified": 1706589919,
"narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", "narHash": "sha256-pNHnDITxSI3a17GOF1RUF3jBO1OiNYTRH2yV/cJG4m4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", "rev": "222c1940fafeda4dea161858ffe6ebfc853d3db5",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5",
"type": "github" "type": "github"
} }
}, },
@ -125,6 +145,7 @@
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"home-manager": "home-manager", "home-manager": "home-manager",
"monaspace-font": "monaspace-font", "monaspace-font": "monaspace-font",
"nix-darwin": "nix-darwin",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }
} }

View File

@ -1,8 +1,12 @@
{ {
description = "Home Manager configuration of Abhinav Sarkar"; description = "Nix Darwin + Home Manager configuration of Abhinav Sarkar";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs?rev=eabe8d3eface69f5bb16c18f8662a702f50c20d5"; nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nix-darwin = {
url = "github:LnL7/nix-darwin";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -29,25 +33,34 @@
}; };
}; };
outputs = inputs@{ nixpkgs, home-manager, ... }: outputs = inputs@{ self, nixpkgs, nix-darwin, home-manager, ... }:
let let
system = "x86_64-darwin"; system = "x86_64-darwin";
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit system; inherit system;
config = { allowUnfree = true; }; config = { allowUnfree = true; };
}; };
in { in
homeConfigurations.abhinav = home-manager.lib.homeManagerConfiguration { {
inherit pkgs; darwinConfigurations."Abhinavs-MacBook-Pro" = nix-darwin.lib.darwinSystem {
modules = [ ./home.nix ]; inherit system;
extraSpecialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
modules = [
./configuration.nix
./homebrew.nix
home-manager.darwinModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.abhinav = import ./home.nix;
home-manager.extraSpecialArgs = { inherit inputs; };
}
];
}; };
devShells.${system}.default = pkgs.mkShell { devShells.${system}.default = pkgs.mkShell {
buildInputs = with pkgs; [ (import home-manager { inherit pkgs; }).home-manager just ]; buildInputs = with pkgs; [ (import home-manager { inherit pkgs; }).home-manager just ];
shellHook = '' shellHook = ''
export NIX_PATH=$HOME/.hm-nixchannels; export NIXPKGS_PATH=${pkgs.path};
mkdir -p $NIX_PATH;
ln -f -s ${pkgs.path} -T $NIX_PATH/nixpkgs;
''; '';
}; };
}; };

View File

@ -1,11 +1,12 @@
{ config, pkgs, ... }: { config, pkgs, lib, ... }:
{ let username = config.home.username;
imports = [ ./programs ./scripts ./launchd.nix ./nix.nix ]; in {
imports = [ ./programs ./scripts ./launchd.nix ];
home = { home = {
username = "abhinav"; username = "abhinav";
homeDirectory = "/Users/abhinav"; homeDirectory = lib.mkForce "/Users/${username}";
stateVersion = "22.05"; stateVersion = "22.05";
enableNixpkgsReleaseCheck = true; enableNixpkgsReleaseCheck = true;
@ -23,7 +24,7 @@
sessionVariables = { sessionVariables = {
EDITOR = "micro"; EDITOR = "micro";
NIX_PATH = "$HOME/.hm-nixchannels"; NIX_PATH = "/nix/var/nix/profiles/per-user/${username}/channels";
}; };
file."Applications/Home Manager Apps".source = let file."Applications/Home Manager Apps".source = let

43
homebrew.nix Normal file
View File

@ -0,0 +1,43 @@
{ ... }: {
homebrew = {
enable = true;
onActivation = {
autoUpdate = false;
cleanup = "uninstall";
upgrade = false;
};
global = {
autoUpdate = false;
brewfile = true;
};
casks = [
"amethyst"
"calibre"
"dropbox"
"fanny"
"firefox"
"garmin-express"
"google-chrome"
"homebrew/cask/handbrake"
"spotify"
"telegram"
"utm"
"vlc"
];
masApps = {
Amphetamine = 937984704;
Bear = 1091189122;
GarageBand = 682658836;
iMovie = 408981434;
Ivory = 6444602274;
Keynote = 409183694;
Kindle = 302584613;
NextDNS = 1464122853;
Numbers = 409203825;
Pages = 409201541;
Reeder = 1449412482;
TestFlight = 899247664;
Xcode = 497799835;
};
};
}

View File

@ -1,5 +1,6 @@
in_nix_shell := env_var_or_default("IN_NIX_SHELL", "false") in_nix_shell := env_var_or_default("IN_NIX_SHELL", "false")
root_dir := justfile_directory() root_dir := justfile_directory()
hostname := `scutil --get LocalHostName`
# choose a just command to run # choose a just command to run
default: default:
@ -18,24 +19,26 @@ _run cmd:
fi fi
_build: _build:
home-manager -v build --flake "{{ root_dir }}#abhinav" nix build {{ root_dir }}#darwinConfigurations.{{ hostname }}.system
# build latest home-manager generation # build latest home-manager generation
build: (_run "_build") build: (_run "_build")
_switch: _switch: _build
home-manager -v switch --flake "{{ root_dir }}#abhinav" ./result/sw/bin/darwin-rebuild -v switch --flake "{{ root_dir }}"
report-hm-changes
# switch to latest home-manager generation # switch to latest home-manager generation
switch: (_run "_switch") switch: (_run "_switch")
_update-vscode-extensions: _update: && _switch _brew-update
$NIX_PATH/nixpkgs/pkgs/applications/editors/vscode/extensions/update_installed_exts.sh > \ nix flake update --commit-lock-file "{{ root_dir }}"
$NIXPKGS_PATH/pkgs/applications/editors/vscode/extensions/update_installed_exts.sh > \
{{ root_dir }}/programs/vscode/extensions.nix {{ root_dir }}/programs/vscode/extensions.nix
_update: _update-vscode-extensions && _switch _brew-update:
nix flake update --commit-lock-file "{{ root_dir }}" brew update
brew upgrade
mas upgrade
# update packages and switch # update packages and switch
update: (_run "_update") update: (_run "_update")
@ -43,4 +46,5 @@ update: (_run "_update")
# clean up nix garbage # clean up nix garbage
clean: clean:
home-manager expire-generations "-7 days" home-manager expire-generations "-7 days"
nix-collect-garbage -d --delete-old sudo nix-collect-garbage -d --delete-older-than 7d
brew cleanup --prune 7

49
nix.nix
View File

@ -1,19 +1,36 @@
{ config, pkgs, ... }: { config, pkgs, inputs, ... }:
{ {
nixpkgs.config.allowUnfree = true; services.nix-daemon.enable = true;
nix.package = pkgs.nixStable; nix = {
nix.settings = { package = pkgs.nixFlakes;
experimental-features = [ "nix-command" "flakes" "repl-flake" ]; registry.nixpkgs.flake = inputs.nixpkgs;
max-jobs = 6; nixPath = [{ nixpkgs = inputs.nixpkgs.outPath; }];
cores = 2; extraOptions = ''
auto-optimise-store = true; keep-outputs = true
connect-timeout = 5; keep-derivations = true
log-lines = 25; '';
min-free = 128000000; gc = {
max-free = 1000000000; automatic = true;
fallback = true; interval.Day = 1;
warn-dirty = false; options = "--delete-older-than 7d";
keep-outputs = true; };
settings = {
auto-optimise-store = true;
connect-timeout = 5;
cores = 2;
experimental-features = [ "nix-command" "flakes" "repl-flake" ];
fallback = true;
keep-outputs = true;
log-lines = 25;
max-free = 1000000000;
max-jobs = 6;
min-free = 128000000;
warn-dirty = false;
trusted-users = ["@admin"];
};
};
nixpkgs = {
hostPlatform = "x86_64-darwin";
config.allowUnfree = true;
}; };
} }

View File

@ -1,6 +1,7 @@
{ inputs, config, pkgs, ... }: { inputs, config, pkgs, ... }:
{ let username = config.home.username;
in {
programs.fish = { programs.fish = {
enable = true; enable = true;
@ -29,7 +30,9 @@
shellInit = '' shellInit = ''
# nix # nix
fenv source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh fenv source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
fish_add_path -m ~/.local/bin ~/.cabal/bin fenv source /etc/profiles/per-user/${username}/etc/profile.d/hm-session-vars.sh
fish_add_path -m ~/.local/bin ~/.cabal/bin /etc/profiles/per-user/${username}/bin
eval "$(/usr/local/bin/brew shellenv)"
''; '';
}; };
} }

View File

@ -20,8 +20,8 @@
{ {
name = "vscode-markdownlint"; name = "vscode-markdownlint";
publisher = "DavidAnson"; publisher = "DavidAnson";
version = "0.53.0"; version = "0.54.0";
sha256 = "1jd2bgzmk11jgv897605ibfl38lr0yssmic6yv6mrrwcgvmrg402"; sha256 = "171qw6mymc9hmm8xin3gwr8r2ac8yfr3s8agagsqq9193cawbcq6";
} }
{ {
name = "mustache"; name = "mustache";
@ -44,32 +44,32 @@
{ {
name = "copilot"; name = "copilot";
publisher = "GitHub"; publisher = "GitHub";
version = "1.148.0"; version = "1.156.683";
sha256 = "1va6r2flp031nvxka2kghkzmpj5i3rmb43zb5dqa6cd8ij9n1q22"; sha256 = "0hks2vav7xxcrrwqrpg6lckanxh8qd0a5zzhywn72i8r18a14jl2";
} }
{ {
name = "copilot-chat"; name = "copilot-chat";
publisher = "GitHub"; publisher = "GitHub";
version = "0.12.2024011101"; version = "0.12.2024013003";
sha256 = "0i20x7yl6xcp3abv36lzr1agfxmmvqc56mvvc1y3a8wa2g412i27"; sha256 = "0k5mqhx1acf41sf2qn5fnw5icah2awvivgpqgfrkxn98b5adc2p0";
} }
{ {
name = "go"; name = "go";
publisher = "golang"; publisher = "golang";
version = "0.40.1"; version = "0.40.3";
sha256 = "0844kxbi7qi79wal0cqcd4wiygc42fyhamn33lsx2ms4yj5jxri9"; sha256 = "15kicpv9xpn7l3w9mbmsjdzjmavh88p3skkim0a9prg9p40bsq0m";
} }
{ {
name = "haskell"; name = "haskell";
publisher = "haskell"; publisher = "haskell";
version = "2.5.1"; version = "2.5.2";
sha256 = "1gy2s9pzwsiwjk2b3sqn9hp3zbcg1jxbf4zl9hcqan3q6v96m7dz"; sha256 = "09pr3ya77ryj5n80k5srwaxmr0j77f6xp67w0kz324i6fhjd12bq";
} }
{ {
name = "gruvbox"; name = "gruvbox";
publisher = "jdinhlife"; publisher = "jdinhlife";
version = "1.17.0"; version = "1.18.0";
sha256 = "1w9h4ygvgbj71npwlkg39rsw63pdz28g2msifa1hmf4y543ii069"; sha256 = "07iy4649vjqif40agvp2ck9695vl1kv4zv69rn4j6hi0jra8dhg2";
} }
{ {
name = "plantuml"; name = "plantuml";
@ -110,8 +110,8 @@
{ {
name = "black-formatter"; name = "black-formatter";
publisher = "ms-python"; publisher = "ms-python";
version = "2023.7.13471009"; version = "2023.9.10291927";
sha256 = "18gdvmpnq5v6dp6v63vk43x27r1q5y8mzm516mr4rzvvgciyakqp"; sha256 = "1alh8j35qidgmbb293ar02x5xbigqcv7khq1bp7blsffisdxdqm4";
} }
{ {
name = "debugpy"; name = "debugpy";
@ -122,14 +122,14 @@
{ {
name = "python"; name = "python";
publisher = "ms-python"; publisher = "ms-python";
version = "2023.25.10111009"; version = "2023.25.10292213";
sha256 = "0bzxdkhxg9yz8ml9xhbghg4cc656gplwbjj969qqhdf60rsyl7il"; sha256 = "09r82h3px2nlkyd3h5y8p6xcz9pccayvfnrnymlkiy9n2j2889sy";
} }
{ {
name = "vscode-pylance"; name = "vscode-pylance";
publisher = "ms-python"; publisher = "ms-python";
version = "2023.12.103"; version = "2024.1.102";
sha256 = "1lkh94vyx9k23yw7i6sl1yy5f5wf3kjm8c5ljybzvy1lbi831lyf"; sha256 = "05wikxrc7bw2m71gp2n4myfqdk7gk8y474v2fhg0qrxz5hafkyx6";
} }
{ {
name = "vscode-cljfmt"; name = "vscode-cljfmt";
@ -140,8 +140,8 @@
{ {
name = "rust-analyzer"; name = "rust-analyzer";
publisher = "rust-lang"; publisher = "rust-lang";
version = "0.4.1802"; version = "0.4.1825";
sha256 = "0i4lmxx61hixnkcn37932q53g6a7gdzxknn6klln7xkibxzy1840"; sha256 = "19yqnrxf5c8wm330g13i3vyjbabakw2ary4c6z0j74fh4f1xniz8";
} }
{ {
name = "just"; name = "just";