diff --git a/darwin-configuration.nix b/darwin-configuration.nix index 3b748be..1ea6058 100644 --- a/darwin-configuration.nix +++ b/darwin-configuration.nix @@ -2,12 +2,6 @@ let python = import ./python.nix { inherit pkgs; }; in -let gmp = - if pkgs.stdenv.isDarwin then - import ./gmp.nix { inherit pkgs; } - else pkgs.gmp - ; in - { nix.useDaemon = true; @@ -23,10 +17,9 @@ let gmp = environment.systemPackages = [ pkgs.alacritty - pkgs.rustc - pkgs.cargo + pkgs.rustup + pkgs.libiconv pkgs.clang - #gmp #pkgs.keepassxc python ]; @@ -44,15 +37,19 @@ let gmp = })) ]; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "vscode" + ]; # Auto upgrade nix package and the daemon service. services.nix-daemon.enable = true; - nix.package = pkgs.nix; + nix.package = pkgs.nixFlakes; nix.gc.automatic = true; nix.useSandbox = true; nix.extraOptions = '' auto-optimise-store = true + experimental-features = nix-command flakes ''; # Used for backwards compatibility, please read the changelog before changing. diff --git a/gmp.nix b/gmp.nix deleted file mode 100644 index 6d2bb9b..0000000 --- a/gmp.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ pkgs ? import {} }: - -# If this fails, `chmod -R a+rw /usr/local/opt/gmp/lib` -pkgs.runCommandLocal "gmp-symlink" {} '' -dest="/usr/local/opt/gmp/lib/libgmp.10.dylib" -existing=$(readlink "$dest") -if [ $? -eq 1 ]; then - ln -s ${pkgs.gmp}/lib/libgmp.10.dylib "$dest" && mkdir -p $out && touch $out/done.txt -else - if [[ "$existing" == /nix/store/* ]]; then - ln -fs ${pkgs.gmp}/lib/libgmp.10.dylib "$dest" && mkdir -p $out && touch $out/done.txt - else - echo "Existing symlink is $existing, refusing to overwrite" - exit 1 - fi -fi -'' diff --git a/gmp/default.nix b/gmp/default.nix new file mode 100644 index 0000000..a6cc199 --- /dev/null +++ b/gmp/default.nix @@ -0,0 +1,36 @@ +{ pkgs, config, lib, ... }: + + +let link = ./link.sh; in +let gmp-symlink = + pkgs.stdenv.mkDerivation { + + name = "gmp-symlink"; + src = ./link.sh; + phases = [ "unpackPhase" ]; + unpackPhase = '' + mkdir -p "$out" + cp ${link} "$out/link.sh" + chmod u+x "$out/link.sh" + sed -i 's_NIX-GMP_${config.gmp-symlink.gmp}_' "$out/link.sh" + ''; + + installPhase = '' + ''; + }; +in + +{ + options = { + gmp-symlink.enable = lib.mkOption { default = false; }; + gmp-symlink.gmp = lib.mkOption { default = pkgs.gmp; }; + }; + + config = lib.mkIf config.gmp-symlink.enable { + home.activation.gmp-symlink = lib.hm.dag.entryAfter [ "writeBoundary" ] '' +${gmp-symlink}/link.sh + ''; + }; + +} + diff --git a/gmp/link.sh b/gmp/link.sh new file mode 100644 index 0000000..36fb524 --- /dev/null +++ b/gmp/link.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +dest="/usr/local/opt/gmp/lib/libgmp.10.dylib" +sudo mkdir -p "$(dirname "$dest")" +existing=$(readlink "$dest") +if [ $? -eq 1 ]; then + sudo ln -s "NIX-GMP/lib/libgmp.10.dylib" "$dest" +else + if [[ "$existing" == /nix/store/* ]]; then + sudo ln -fs "NIX-GMP/lib/libgmp.10.dylib" "$dest" + else + echo "Existing symlink is $existing, refusing to overwrite" + exit 1 + fi +fi diff --git a/home.nix b/home.nix index 887d00e..4f90fc7 100644 --- a/home.nix +++ b/home.nix @@ -4,9 +4,10 @@ let username = "Patrick"; in let dotnet = pkgs.dotnet-sdk_6; in { - imports = [ ./rider ]; + imports = [ ./rider ./gmp ]; rider = { enable = true; username = username; dotnet = dotnet; }; + gmp-symlink = { enable = true; }; # Let Home Manager install and manage itself. programs.home-manager.enable = true; @@ -32,6 +33,7 @@ let dotnet = pkgs.dotnet-sdk_6; in pkgs.wget pkgs.youtube-dl pkgs.cmake + pkgs.gnumake pkgs.gcc pkgs.gdb pkgs.hledger @@ -39,22 +41,21 @@ let dotnet = pkgs.dotnet-sdk_6; in dotnet pkgs.docker pkgs.jitsi-meet - pkgs.protonmail-bridge - pkgs.handbrake + #pkgs.handbrake pkgs.ripgrep pkgs.elan pkgs.coreutils-prefixed pkgs.shellcheck pkgs.html-tidy pkgs.hugo - pkgs.agda + #pkgs.agda pkgs.pijul - #pkgs.anki-bin + pkgs.universal-ctags ]; programs.vscode = { enable = true; - package = pkgs.vscodium; + package = pkgs.vscode; extensions = import ./vscode-extensions.nix { inherit pkgs; }; userSettings = { workbench.colorTheme = "Default High Contrast"; @@ -85,18 +86,20 @@ let dotnet = pkgs.dotnet-sdk_6; in }; oh-my-zsh = { enable = true; - plugins = [ "git" "osx" "dircycle" "timer" ]; + plugins = [ "git" "macos" "dircycle" "timer" ]; theme = "robbyrussell"; }; sessionVariables = { EDITOR = "vim"; LC_ALL = "en_US.UTF-8"; LC_CTYPE = "en_US.UTF-8"; + RUSTFLAGS = "-L ${pkgs.libiconv}/lib"; }; shellAliases = { vim = "nvim"; view = "vim -R"; nix-upgrade = "sudo -i sh -c 'nix-channel --update && nix-env -iA nixpkgs.nix && launchctl remove org.nixos.nix-daemon && launchctl load /Library/LaunchDaemons/org.nixos.nix-daemon.plist'"; + cmake = "cmake -DCMAKE_MAKE_PROGRAM=${pkgs.gnumake}/bin/make"; }; }; @@ -136,6 +139,7 @@ let dotnet = pkgs.dotnet-sdk_6; in programs.neovim.enable = true; programs.neovim.plugins = with pkgs.vimPlugins; [ molokai + tagbar { plugin = rust-vim; config = "let g:rustfmt_autosave = 1"; } { plugin = syntastic; diff --git a/rider/default.nix b/rider/default.nix index b67915d..8e6dde6 100644 --- a/rider/default.nix +++ b/rider/default.nix @@ -35,7 +35,9 @@ in home.activation.jetbrains-rider-settings = lib.hm.dag.entryAfter [ "writeBoundary" ] '' dest="/Users/${config.rider.username}/Library/Application Support/JetBrains" -find "$dest" -type d -maxdepth 1 -name 'Rider*' -exec sh -c '${riderconfig}/link.sh "$0"' {} \; +if [ -e "$dest" ]; then + find "$dest" -type d -maxdepth 1 -name 'Rider*' -exec sh -c '${riderconfig}/link.sh "$0"' {} \; +fi ''; }; diff --git a/ssh.config b/ssh.config index f655ca4..413e531 100644 --- a/ssh.config +++ b/ssh.config @@ -1,12 +1,5 @@ IgnoreUnknown AddKeysToAgent,UseKeychain -Host github.com - AddKeysToAgent yes - IgnoreUnknown UseKeychain - UseKeychain yes - IdentityFile ~/.ssh/github_rsa - HostName github.com - Host * AddKeysToAgent yes IgnoreUnknown UseKeychain