mirror of
https://github.com/Smaug123/nix-dotfiles
synced 2025-12-16 07:45:41 +00:00
Compare commits
13 Commits
before-gmp
...
update-ext
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e603de3347 | ||
|
|
fc0987c71e | ||
|
|
76b0a99899 | ||
|
|
9071035ba2 | ||
|
|
2463b3275b | ||
|
|
278ef5278d | ||
|
|
cf971dbbb9 | ||
|
|
73539bc753 | ||
|
|
4cdf00f879 | ||
|
|
49b4432235 | ||
|
|
135a036dd8 | ||
|
|
4e0ed30fbf | ||
|
|
40c8093b49 |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1 +1,4 @@
|
||||
result/
|
||||
result
|
||||
.idea/
|
||||
bin/
|
||||
obj/
|
||||
|
||||
16
VsCodeExtensions.sln
Normal file
16
VsCodeExtensions.sln
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "VsCodeExtensions", "VsCodeExtensions\VsCodeExtensions.fsproj", "{5BD60C47-954A-42E3-9863-9B6ED29AC112}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{5BD60C47-954A-42E3-9863-9B6ED29AC112}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5BD60C47-954A-42E3-9863-9B6ED29AC112}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5BD60C47-954A-42E3-9863-9B6ED29AC112}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5BD60C47-954A-42E3-9863-9B6ED29AC112}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
176
VsCodeExtensions/Program.fs
Normal file
176
VsCodeExtensions/Program.fs
Normal file
@@ -0,0 +1,176 @@
|
||||
open System.IO
|
||||
open System.Net.Http
|
||||
open System.Text.Json
|
||||
|
||||
type Extension =
|
||||
{
|
||||
Name : string
|
||||
Publisher : string
|
||||
Version : string
|
||||
Sha256 : string
|
||||
}
|
||||
override this.ToString () =
|
||||
[
|
||||
"{"
|
||||
$" name = \"{this.Name}\";"
|
||||
$" publisher = \"{this.Publisher}\";"
|
||||
$" version = \"{this.Version}\";"
|
||||
$" sha256 = \"{this.Sha256}\";"
|
||||
"}"
|
||||
]
|
||||
|> String.concat "\n"
|
||||
|
||||
static member Parse (s : string list) : Extension =
|
||||
let collection =
|
||||
s
|
||||
|> List.fold (fun fields s ->
|
||||
match s.Split "=" |> List.ofArray with
|
||||
| field :: rest when not <| rest.IsEmpty ->
|
||||
Map.add (field.Trim ()) ((String.concat "=" rest).Split('"').[1].TrimEnd(';')) fields
|
||||
| _ -> fields
|
||||
) Map.empty
|
||||
|
||||
{
|
||||
Name = collection.["name"]
|
||||
Publisher = collection.["publisher"]
|
||||
Version = collection.["version"]
|
||||
Sha256 = collection.["sha256"]
|
||||
}
|
||||
|
||||
type Skipped =
|
||||
{
|
||||
NixpkgsRef : string
|
||||
Reason : string
|
||||
}
|
||||
override this.ToString () =
|
||||
[
|
||||
$"# {this.Reason}"
|
||||
$"# {this.NixpkgsRef}"
|
||||
]
|
||||
|> String.concat "\n"
|
||||
|
||||
let bimap f g (x, y) = (f x, g y)
|
||||
|
||||
let partition<'a, 'b> (l : List<Choice<'a, 'b>>) : 'a list * 'b list =
|
||||
l
|
||||
|> List.fold (fun (aEntries, bEntries) next ->
|
||||
match next with
|
||||
| Choice1Of2 a -> (a :: aEntries, bEntries)
|
||||
| Choice2Of2 b -> (aEntries, b :: bEntries)
|
||||
) ([], [])
|
||||
|> bimap List.rev List.rev
|
||||
|
||||
type NixFile =
|
||||
{
|
||||
NixpkgsRefs : string list
|
||||
Skipped : Skipped list
|
||||
SpecificVersions : Extension list
|
||||
}
|
||||
override this.ToString () =
|
||||
[
|
||||
yield "{ pkgs }:"
|
||||
yield ""
|
||||
yield "with pkgs.vscode-extensions; ["
|
||||
yield! this.NixpkgsRefs |> List.map (sprintf " %s")
|
||||
yield! this.Skipped |> List.map (sprintf "%O")
|
||||
yield "] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace ["
|
||||
yield! this.SpecificVersions |> List.map (sprintf "%O")
|
||||
yield "]"
|
||||
]
|
||||
|> String.concat "\n"
|
||||
|
||||
static member Parse (s : string) : NixFile =
|
||||
let pre, post =
|
||||
s.Split "\n] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [\n"
|
||||
|> function
|
||||
| [| pre ; post |] -> pre, post
|
||||
| _ -> failwith "Unexpected number of '++'"
|
||||
|
||||
let verbatim, skipped =
|
||||
match pre.Split "\n" |> List.ofArray with
|
||||
| "{ pkgs }:" :: "" :: "with pkgs.vscode-extensions; [" :: rest ->
|
||||
rest
|
||||
|> List.map (fun s ->
|
||||
if s.StartsWith '#' then Choice2Of2 (s.[2..].Trim()) else Choice1Of2 (s.Trim())
|
||||
)
|
||||
|> partition
|
||||
| _ -> failwith $"Unexpected pre:\n{pre}"
|
||||
let pairs (l : 'a list) : ('a * 'a) list =
|
||||
let rec go acc l =
|
||||
match l with
|
||||
| [] -> acc
|
||||
| [singleton] -> failwith $"Expected pair, got {singleton}"
|
||||
| x :: y :: rest -> go ((x, y) :: acc) rest
|
||||
go [] l
|
||||
|> List.rev
|
||||
let skipped =
|
||||
skipped
|
||||
|> pairs
|
||||
|> List.map (fun (comment, link) -> { NixpkgsRef = link ; Reason = comment })
|
||||
|
||||
let specificVersions =
|
||||
post.TrimEnd([| '\n' ; ']'|]).Split "}"
|
||||
|> Array.choose (fun contents ->
|
||||
match contents.Trim([|'\n' ; ' '|]).Split "\n" |> List.ofArray with
|
||||
| "{" :: rest ->
|
||||
Some (Extension.Parse rest)
|
||||
| [] ->
|
||||
failwith $"Expected extension, got:\n{contents}"
|
||||
| [""] -> None
|
||||
| fst :: rest ->
|
||||
failwith $"Expected bracket, got '{fst}'\n {rest}"
|
||||
)
|
||||
|> Array.toList
|
||||
|
||||
{
|
||||
Skipped = skipped
|
||||
NixpkgsRefs = verbatim
|
||||
SpecificVersions = specificVersions
|
||||
}
|
||||
|
||||
type Version =
|
||||
{
|
||||
Version : string
|
||||
TargetPlatform : string
|
||||
}
|
||||
|
||||
let upgradeExtension (client : HttpClient) (e : Extension) : Extension Async =
|
||||
let uri = System.Uri $"https://marketplace.visualstudio.com/items?itemName={e.Publisher}.{e.Name}"
|
||||
async {
|
||||
let! response = client.GetAsync uri |> Async.AwaitTask
|
||||
let! content = response.Content.ReadAsStringAsync () |> Async.AwaitTask
|
||||
let options = JsonSerializerOptions ()
|
||||
options.PropertyNameCaseInsensitive <- true
|
||||
let latestVersion =
|
||||
content.Split("\"Versions\":[").[1].Split("]").[0]
|
||||
|> sprintf "[%s]"
|
||||
|> fun s -> JsonSerializer.Deserialize<Version array> (s, options)
|
||||
|> Seq.head
|
||||
return { e with Version = latestVersion.Version }
|
||||
}
|
||||
|
||||
let upgrade (nixFile : NixFile) : NixFile =
|
||||
use client = new HttpClient ()
|
||||
{ nixFile with
|
||||
SpecificVersions =
|
||||
nixFile.SpecificVersions
|
||||
|> List.map (upgradeExtension client)
|
||||
|> Async.Parallel
|
||||
|> Async.RunSynchronously
|
||||
|> List.ofArray
|
||||
}
|
||||
|
||||
module Program =
|
||||
|
||||
[<EntryPoint>]
|
||||
let main args =
|
||||
let sourceFile =
|
||||
if args.Length = 0 then "vscode-extensions.nix" else args.[0]
|
||||
|
||||
File.ReadAllText sourceFile
|
||||
|> NixFile.Parse
|
||||
|> upgrade
|
||||
|> sprintf "%O"
|
||||
|> fun s -> File.WriteAllText (sourceFile, s)
|
||||
|
||||
0
|
||||
12
VsCodeExtensions/VsCodeExtensions.fsproj
Normal file
12
VsCodeExtensions/VsCodeExtensions.fsproj
Normal file
@@ -0,0 +1,12 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.fs"/>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,16 +1,10 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{ pkgs, ... }:
|
||||
|
||||
let python = import ./python.nix { inherit pkgs; }; in
|
||||
|
||||
{
|
||||
|
||||
nix.useDaemon = true;
|
||||
|
||||
imports = [ <home-manager/nix-darwin> ];
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.Patrick = import ./home.nix;
|
||||
|
||||
# List packages installed in system profile. To search by name, run:
|
||||
# $ nix-env -qaP | grep wget
|
||||
|
||||
@@ -31,25 +25,22 @@ let python = import ./python.nix { inherit pkgs; }; in
|
||||
# $ darwin-rebuild switch -I darwin-config=$HOME/.config/nixpkgs/darwin/configuration.nix
|
||||
environment.darwinConfig = "$HOME/.nixpkgs/darwin-configuration.nix";
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(import (builtins.fetchTarball {
|
||||
url = https://github.com/nix-community/emacs-overlay/archive/25dd5297f613fd13971e4847e82d1097077eeb53.tar.gz;
|
||||
}))
|
||||
];
|
||||
|
||||
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.nixFlakes;
|
||||
nix.gc.automatic = true;
|
||||
nix.useSandbox = true;
|
||||
|
||||
# Sandbox causes failure: https://github.com/NixOS/nix/issues/4119
|
||||
nix.useSandbox = false;
|
||||
|
||||
nix.extraOptions = ''
|
||||
auto-optimise-store = true
|
||||
experimental-features = nix-command flakes
|
||||
max-jobs = auto # Allow building multiple derivations in parallel
|
||||
keep-outputs = true # Do not garbage-collect build time-only dependencies (e.g. clang)
|
||||
# Allow fetching build results from the Lean Cachix cache
|
||||
trusted-substituters = https://lean4.cachix.org/
|
||||
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= lean4.cachix.org-1:mawtxSxcaiWE24xCXXgh3qnvlTkyU7evRRnGeAhD4Wk=
|
||||
'';
|
||||
|
||||
# Used for backwards compatibility, please read the changelog before changing.
|
||||
|
||||
86
flake.lock
generated
Normal file
86
flake.lock
generated
Normal file
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"nodes": {
|
||||
"darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1645007752,
|
||||
"narHash": "sha256-FQZMiVP/1vgR7x+TWonMf0NZczrZ4ZjhSTj3rM+kglY=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "c944b5ee82a829ddf7fa6bd9300bc2fe3d005fa1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lnl7",
|
||||
"ref": "master",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"emacs": {
|
||||
"locked": {
|
||||
"lastModified": 1644143491,
|
||||
"narHash": "sha256-ld5MzYesjOE8Ml5uvjFUFaxAozJEl48svwWQ3i7oggc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "4c7e0980a5f23684ca3ea772d4f62b0da4f55e3c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1645140957,
|
||||
"narHash": "sha256-WTJzLSCDLBI537o2L/3kRyqEV5YRT7+1QSGryeKReHE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "4f4165a8b9108818ab0193bbd1a252106870b2a2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1644972330,
|
||||
"narHash": "sha256-hEDWZcTDopnz4jRDhCmnH9VztdKSfR6mrudSM8+Jfco",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1a5ff5ea0297dc8ec5a33b87dfb4fc78687068e6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"darwin": "darwin",
|
||||
"emacs": "emacs",
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
46
flake.nix
Normal file
46
flake.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
description = "Patrick's Darwin Nix setup";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
darwin = {
|
||||
url = "github:lnl7/nix-darwin/master";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
emacs = {
|
||||
url = "github:nix-community/emacs-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, darwin, emacs, nixpkgs, home-manager, ... }@inputs:
|
||||
let system = "aarch64-darwin"; in
|
||||
let config = {
|
||||
allowUnfreePredicate = pkg: builtins.elem (nixpkgs.lib.getName pkg) [
|
||||
"vscode"
|
||||
];
|
||||
}; in
|
||||
let overlays = [ emacs.overlay ] ++ import ./overlays.nix; in
|
||||
let pkgs = (import nixpkgs { inherit system config overlays; }); in
|
||||
{
|
||||
darwinConfigurations = {
|
||||
nixpkgs = pkgs;
|
||||
patrick = darwin.lib.darwinSystem {
|
||||
system = system;
|
||||
modules = [
|
||||
./darwin-configuration.nix
|
||||
home-manager.darwinModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.Patrick = import ./home.nix { nixpkgs = pkgs; };
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
{ 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
|
||||
'';
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
15
gmp/link.sh
15
gmp/link.sh
@@ -1,15 +0,0 @@
|
||||
#!/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
|
||||
166
home.nix
166
home.nix
@@ -1,13 +1,19 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let username = "Patrick"; in
|
||||
let dotnet = pkgs.dotnet-sdk_6; in
|
||||
|
||||
{
|
||||
imports = [ ./rider ./gmp ];
|
||||
nixpkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
username = "Patrick";
|
||||
in let
|
||||
dotnet = nixpkgs.dotnet-sdk_6;
|
||||
in {
|
||||
imports = [./rider];
|
||||
|
||||
rider = { enable = true; username = username; dotnet = dotnet; };
|
||||
gmp-symlink = { enable = true; };
|
||||
rider = {
|
||||
enable = true;
|
||||
username = username;
|
||||
dotnet = dotnet;
|
||||
};
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
@@ -24,60 +30,64 @@ let dotnet = pkgs.dotnet-sdk_6; in
|
||||
# You can update Home Manager without changing this value. See
|
||||
# the Home Manager release notes for a list of state version
|
||||
# changes in each release.
|
||||
home.stateVersion = "21.11";
|
||||
home.stateVersion = "22.05";
|
||||
|
||||
home.packages =
|
||||
[
|
||||
pkgs.rust-analyzer
|
||||
pkgs.tmux
|
||||
pkgs.wget
|
||||
pkgs.youtube-dl
|
||||
pkgs.cmake
|
||||
pkgs.gnumake
|
||||
pkgs.gcc
|
||||
pkgs.gdb
|
||||
pkgs.hledger
|
||||
pkgs.hledger-web
|
||||
nixpkgs.rust-analyzer
|
||||
nixpkgs.tmux
|
||||
nixpkgs.wget
|
||||
nixpkgs.youtube-dl
|
||||
nixpkgs.cmake
|
||||
nixpkgs.gnumake
|
||||
nixpkgs.gcc
|
||||
nixpkgs.gdb
|
||||
nixpkgs.hledger
|
||||
nixpkgs.hledger-web
|
||||
dotnet
|
||||
pkgs.docker
|
||||
pkgs.jitsi-meet
|
||||
#pkgs.handbrake
|
||||
pkgs.ripgrep
|
||||
pkgs.elan
|
||||
pkgs.coreutils-prefixed
|
||||
pkgs.shellcheck
|
||||
pkgs.html-tidy
|
||||
pkgs.hugo
|
||||
#pkgs.agda
|
||||
pkgs.pijul
|
||||
pkgs.universal-ctags
|
||||
pkgs.asciinema
|
||||
pkgs.git-lfs
|
||||
nixpkgs.docker
|
||||
nixpkgs.jitsi-meet
|
||||
#nixpkgs.handbrake
|
||||
nixpkgs.ripgrep
|
||||
nixpkgs.elan
|
||||
nixpkgs.coreutils-prefixed
|
||||
nixpkgs.shellcheck
|
||||
nixpkgs.html-tidy
|
||||
nixpkgs.hugo
|
||||
#nixpkgs.agda
|
||||
nixpkgs.pijul
|
||||
nixpkgs.universal-ctags
|
||||
nixpkgs.asciinema
|
||||
nixpkgs.git-lfs
|
||||
nixpkgs.imagemagick
|
||||
nixpkgs.nixpkgs-fmt
|
||||
nixpkgs.rnix-lsp
|
||||
];
|
||||
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscode;
|
||||
extensions = import ./vscode-extensions.nix { inherit pkgs; };
|
||||
userSettings = {
|
||||
workbench.colorTheme = "Default High Contrast";
|
||||
"files.Exclude" = {
|
||||
"**/.git" = true;
|
||||
"**/.DS_Store" = true;
|
||||
"**/Thumbs.db" = true;
|
||||
"**/*.olean" = true;
|
||||
};
|
||||
"git.path" = "${pkgs.git}/bin/git";
|
||||
"update.mode" = "none";
|
||||
"docker.dockerPath" = "${pkgs.docker}/bin/docker";
|
||||
"lean.leanpkgPath" = "/Users/${username}/.elan/toolchains/stable/bin/leanpkg";
|
||||
"lean.executablePath" = "/Users/${username}/.elan/toolchains/stable/bin/lean";
|
||||
"lean.memoryLimit" = 8092;
|
||||
enable = true;
|
||||
package = nixpkgs.vscode;
|
||||
extensions = import ./vscode-extensions.nix { pkgs = nixpkgs; };
|
||||
userSettings = {
|
||||
workbench.colorTheme = "Default High Contrast";
|
||||
"files.Exclude" = {
|
||||
"**/.git" = true;
|
||||
"**/.DS_Store" = true;
|
||||
"**/Thumbs.db" = true;
|
||||
"**/*.olean" = true;
|
||||
"**/result" = true;
|
||||
};
|
||||
"git.path" = "${nixpkgs.git}/bin/git";
|
||||
"update.mode" = "none";
|
||||
"docker.dockerPath" = "${nixpkgs.docker}/bin/docker";
|
||||
#"lean.leanpkgPath" = "/Users/${username}/.elan/toolchains/stable/bin/leanpkg";
|
||||
"lean.executablePath" = "/Users/${username}/.elan/toolchains/lean4/bin/lean";
|
||||
"lean.memoryLimit" = 8092;
|
||||
};
|
||||
};
|
||||
|
||||
programs.tmux = {
|
||||
shell = "\${pkgs.zsh}/bin/zsh";
|
||||
shell = "\${nixpkgs.zsh}/bin/zsh";
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
@@ -90,22 +100,22 @@ let dotnet = pkgs.dotnet-sdk_6; in
|
||||
};
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
plugins = [ "git" "macos" "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";
|
||||
RUSTFLAGS = "-L ${nixpkgs.libiconv}/lib";
|
||||
RUST_BACKTRACE = "full";
|
||||
};
|
||||
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 -DCMAKE_AR=${pkgs.darwin.cctools}/bin/ar -DCMAKE_RANLIB=${pkgs.darwin.cctools}/bin/ranlib -DGMP_INCLUDE_DIR=${pkgs.gmp.dev}/include/ -DGMP_LIBRARIES=${pkgs.gmp}/lib/libgmp.10.dylib";
|
||||
ar = "${pkgs.darwin.cctools}/bin/ar";
|
||||
cmake = "cmake -DCMAKE_MAKE_PROGRAM=${nixpkgs.gnumake}/bin/make -DCMAKE_AR=${nixpkgs.darwin.cctools}/bin/ar -DCMAKE_RANLIB=${nixpkgs.darwin.cctools}/bin/ranlib -DGMP_INCLUDE_DIR=${nixpkgs.gmp.dev}/include/ -DGMP_LIBRARIES=${nixpkgs.gmp}/lib/libgmp.10.dylib";
|
||||
ar = "${nixpkgs.darwin.cctools}/bin/ar";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -115,7 +125,7 @@ let dotnet = pkgs.dotnet-sdk_6; in
|
||||
};
|
||||
|
||||
programs.git = {
|
||||
package = pkgs.gitAndTools.gitFull;
|
||||
package = nixpkgs.gitAndTools.gitFull;
|
||||
enable = true;
|
||||
userName = "Smaug123";
|
||||
userEmail = "patrick+github@patrickstevens.co.uk";
|
||||
@@ -140,26 +150,37 @@ let dotnet = pkgs.dotnet-sdk_6; in
|
||||
addIgnoredFile = false;
|
||||
};
|
||||
"filter \"lfs\"" = {
|
||||
clean = "${pkgs.git-lfs} clean -- %f";
|
||||
smudge = "${pkgs.git-lfs}/bin/git-lfs smudge --skip -- %f";
|
||||
process = "${pkgs.git-lfs}/bin/git-lfs filter-process";
|
||||
required = true;
|
||||
clean = "${nixpkgs.git-lfs} clean -- %f";
|
||||
smudge = "${nixpkgs.git-lfs}/bin/git-lfs smudge --skip -- %f";
|
||||
process = "${nixpkgs.git-lfs}/bin/git-lfs filter-process";
|
||||
required = true;
|
||||
};
|
||||
pull = {
|
||||
twohead = "ort";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.neovim.enable = true;
|
||||
programs.neovim.plugins = with pkgs.vimPlugins; [
|
||||
programs.neovim.plugins = with nixpkgs.vimPlugins; [
|
||||
molokai
|
||||
tagbar
|
||||
{ plugin = rust-vim;
|
||||
config = "let g:rustfmt_autosave = 1"; }
|
||||
{ plugin = syntastic;
|
||||
config = ''let g:syntastic_rust_checkers = ['cargo']
|
||||
let g:syntastic_always_populate_loc_list = 1
|
||||
let g:syntastic_auto_loc_list = 1
|
||||
let g:syntastic_check_on_open = 1
|
||||
let g:syntastic_check_on_wq = 0''; }
|
||||
{
|
||||
plugin = rust-vim;
|
||||
config = "let g:rustfmt_autosave = 1";
|
||||
}
|
||||
{
|
||||
plugin = LanguageClient-neovim;
|
||||
config = "let g:LanguageClient_serverCommands = { 'nix': ['rnix-lsp'] }";
|
||||
}
|
||||
{
|
||||
plugin = syntastic;
|
||||
config = '' let g:syntastic_rust_checkers = ['cargo']
|
||||
let g:syntastic_always_populate_loc_list = 1
|
||||
let g:syntastic_auto_loc_list = 1
|
||||
let g:syntastic_check_on_open = 1
|
||||
let g:syntastic_check_on_wq = 0'';
|
||||
}
|
||||
|
||||
YouCompleteMe
|
||||
tagbar
|
||||
@@ -176,14 +197,13 @@ let g:syntastic_check_on_wq = 0''; }
|
||||
home.file.".ideavimrc".source = ./ideavimrc;
|
||||
|
||||
home.file.".config/youtube-dl/config".source = ./youtube-dl.conf;
|
||||
|
||||
programs.emacs = {
|
||||
enable = true;
|
||||
package = pkgs.emacsGcc;
|
||||
package = nixpkgs.emacsGcc;
|
||||
extraPackages = (epkgs: []);
|
||||
extraConfig = ''
|
||||
(load-file (let ((coding-system-for-read 'utf-8))
|
||||
(shell-command-to-string "agda-mode locate")))
|
||||
(load-file (let ((coding-system-for-read 'utf-8))
|
||||
(shell-command-to-string "agda-mode locate")))
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
10
overlays.nix
Normal file
10
overlays.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
[
|
||||
(self: super: {
|
||||
# https://github.com/NixOS/nixpkgs/issues/153304
|
||||
alacritty = super.alacritty.overrideAttrs (
|
||||
o: rec {
|
||||
doCheck = false;
|
||||
}
|
||||
);
|
||||
})
|
||||
]
|
||||
@@ -9,7 +9,7 @@ in
|
||||
let packageOverrides = self: super: {
|
||||
# Test failures on darwin ("windows-1252"); just skip pytest
|
||||
# (required for elan)
|
||||
beautifulsoup4 = super.beautifulsoup4.overridePythonAttrs(old: { pytestCheckPhase="true"; });
|
||||
beautifulsoup4 = super.beautifulsoup4.overridePythonAttrs (old: { pytestCheckPhase = "true"; });
|
||||
};
|
||||
in
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ in
|
||||
|
||||
dest="/Users/${config.rider.username}/Library/Application Support/JetBrains"
|
||||
if [ -e "$dest" ]; then
|
||||
find "$dest" -type d -maxdepth 1 -name 'Rider*' -exec sh -c '${riderconfig}/link.sh "$0"' {} \;
|
||||
find "$dest" -maxdepth 1 -type d -name 'Rider*' -exec sh -c '${riderconfig}/link.sh "$0"' {} \;
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -1,110 +1,115 @@
|
||||
{ pkgs }:
|
||||
|
||||
with pkgs.vscode-extensions; [
|
||||
{pkgs}:
|
||||
with pkgs.vscode-extensions;
|
||||
[
|
||||
bbenoist.nix
|
||||
haskell.haskell
|
||||
yzhang.markdown-all-in-one
|
||||
james-yu.latex-workshop
|
||||
vscodevim.vim
|
||||
# Doesn't work with vscodium, and unfree
|
||||
# ms-vscode-remote.remote-ssh
|
||||
# Not supported on Darwin, apparently
|
||||
# ms-dotnettools.csharp
|
||||
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
{
|
||||
name = "vscode-docker";
|
||||
publisher = "ms-azuretools";
|
||||
version = "1.14.0";
|
||||
sha256 = "0wc0k3hf9yfjcx7cw9vm528v5f4bk968bgc98h8fwmlx14vhapzp";
|
||||
}
|
||||
{
|
||||
name = "code-gnu-global";
|
||||
publisher = "austin";
|
||||
version = "0.2.2";
|
||||
sha256 = "1fz89m6ja25aif6wszg9h2fh5vajk6bj3lp1mh0l2b04nw2mzhd5";
|
||||
}
|
||||
{
|
||||
name = "rust-analyzer";
|
||||
publisher = "matklad";
|
||||
version = "0.2.792";
|
||||
sha256 = "1m4g6nf5yhfjrjja0x8pfp79v04lxp5lfm6z91y0iilmqbb9kx1q";
|
||||
}
|
||||
{
|
||||
name = "vscode-lldb";
|
||||
publisher = "vadimcn";
|
||||
version = "1.6.8";
|
||||
sha256 = "1c81hs2lbcxshw3fnpajc9hzkpykc76a6hgs7wl5xji57782bckl";
|
||||
}
|
||||
{
|
||||
name = "toml";
|
||||
publisher = "be5invis";
|
||||
version = "0.5.1";
|
||||
sha256 = "1r1y6krqw5rrdhia9xbs3bx9gibd1ky4bm709231m9zvbqqwwq2j";
|
||||
}
|
||||
{
|
||||
name = "Ionide-Paket";
|
||||
publisher = "Ionide";
|
||||
version = "2.0.0";
|
||||
sha256 = "1455zx5p0d30b1agdi1zw22hj0d3zqqglw98ga8lj1l1d757gv6v";
|
||||
}
|
||||
{
|
||||
name = "lean";
|
||||
publisher = "jroesch";
|
||||
version = "0.16.39";
|
||||
sha256 = "0v1w0rmx2z7q6lfrl430fl6aq6n70y14s2fqsp734igdkdhdnvmk";
|
||||
}
|
||||
{
|
||||
name = "language-haskell";
|
||||
publisher = "justusadam";
|
||||
version = "3.4.0";
|
||||
sha256 = "0ab7m5jzxakjxaiwmg0jcck53vnn183589bbxh3iiylkpicrv67y";
|
||||
}
|
||||
{
|
||||
name = "vscode-clang";
|
||||
publisher = "mitaki28";
|
||||
version = "0.2.4";
|
||||
sha256 = "0sys2h4jvnannlk2q02lprc2ss9nkgh0f0kwa188i7viaprpnx23";
|
||||
}
|
||||
{
|
||||
name = "dotnet-interactive-vscode";
|
||||
publisher = "ms-dotnettools";
|
||||
version = "1.0.2309031";
|
||||
sha256 = "0vqlspq3696yyfsv17rpcbsaqs7nm7yvggv700sl1bia817cak10";
|
||||
}
|
||||
{
|
||||
name = "python";
|
||||
publisher = "ms-python";
|
||||
version = "2021.5.926500501";
|
||||
sha256 = "0hpb1z10ykg1sz0840qnas5ddbys9inqnjf749lvakj9spk1syk3";
|
||||
}
|
||||
{
|
||||
name = "remote-containers";
|
||||
publisher = "ms-vscode-remote";
|
||||
version = "0.183.0";
|
||||
sha256 = "12v7037rn46svv6ff2g824hdkk7l95g4gbzrp5zdddwxs0a62jlg";
|
||||
}
|
||||
{
|
||||
name = "mono-debug";
|
||||
publisher = "ms-vscode";
|
||||
version = "0.16.2";
|
||||
sha256 = "10hixqkw5r3cg52xkbky395lv72sb9d9wrngdvmrwx62hkbk5465";
|
||||
}
|
||||
{
|
||||
name = "Theme-MarkdownKit";
|
||||
publisher = "ms-vscode";
|
||||
version = "0.1.4";
|
||||
sha256 = "1im78k2gaj6cri2jcvy727qdy25667v0f7vv3p3hv13apzxgzl0l";
|
||||
}
|
||||
{
|
||||
name = "trailing-spaces";
|
||||
publisher = "shardulm94";
|
||||
version = "0.3.1";
|
||||
sha256 = "0h30zmg5rq7cv7kjdr5yzqkkc1bs20d72yz9rjqag32gwf46s8b8";
|
||||
}
|
||||
{
|
||||
name = "debug";
|
||||
publisher = "webfreak";
|
||||
version = "0.25.1";
|
||||
sha256 = "1l01sv6kwh8dlv3kygkkd0z9m37hahflzd5bx1wwij5p61jg7np9";
|
||||
}
|
||||
]
|
||||
# Not supported on Darwin, apparently
|
||||
# ms-dotnettools.csharp
|
||||
]
|
||||
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
{
|
||||
name = "remote-containers";
|
||||
publisher = "ms-vscode-remote";
|
||||
version = "0.222.0";
|
||||
sha256 = "4Li0sYfHOsJMn5FJtvDTGKoGPcRmoosD9tZ7q9H9DfQ=";
|
||||
}
|
||||
{
|
||||
name = "remote-ssh";
|
||||
publisher = "ms-vscode-remote";
|
||||
version = "0.75.2022021903";
|
||||
sha256 = "hTRfoUHKrIOSV8eZ/62ewaII5291huXjOZ++dRUmKoI=";
|
||||
}
|
||||
{
|
||||
name = "vscode-docker";
|
||||
publisher = "ms-azuretools";
|
||||
version = "1.19.0";
|
||||
sha256 = "UPUfTOc5xJhI5ACm2oyWqtZ4zNxZjy16D6Mf30eHFEI=";
|
||||
}
|
||||
{
|
||||
name = "code-gnu-global";
|
||||
publisher = "austin";
|
||||
version = "0.2.2";
|
||||
sha256 = "1fz89m6ja25aif6wszg9h2fh5vajk6bj3lp1mh0l2b04nw2mzhd5";
|
||||
}
|
||||
{
|
||||
name = "rust-analyzer";
|
||||
publisher = "matklad";
|
||||
version = "0.3.939";
|
||||
sha256 = "t5CCUdFCiSYrMsBHG5eOfg3sXMacFWiR0hmVa7S1i8Y=";
|
||||
}
|
||||
{
|
||||
name = "vscode-lldb";
|
||||
publisher = "vadimcn";
|
||||
version = "1.6.10";
|
||||
sha256 = "CGVVs//jIZM8uX7Wc9gM4aQGwECi88eIpfPqU2hKbeA=";
|
||||
}
|
||||
{
|
||||
name = "toml";
|
||||
publisher = "be5invis";
|
||||
version = "0.6.0";
|
||||
sha256 = "yk7buEyQIw6aiUizAm+sgalWxUibIuP9crhyBaOjC2E=";
|
||||
}
|
||||
{
|
||||
name = "Ionide-Paket";
|
||||
publisher = "Ionide";
|
||||
version = "2.0.0";
|
||||
sha256 = "1455zx5p0d30b1agdi1zw22hj0d3zqqglw98ga8lj1l1d757gv6v";
|
||||
}
|
||||
{
|
||||
name = "lean";
|
||||
publisher = "jroesch";
|
||||
version = "0.16.46";
|
||||
sha256 = "hjflz5JHVr1YWq6QI9DpdNPY1uL7lAuQTMAdwCtLEfY=";
|
||||
}
|
||||
{
|
||||
name = "language-haskell";
|
||||
publisher = "justusadam";
|
||||
version = "3.4.0";
|
||||
sha256 = "0ab7m5jzxakjxaiwmg0jcck53vnn183589bbxh3iiylkpicrv67y";
|
||||
}
|
||||
{
|
||||
name = "vscode-clang";
|
||||
publisher = "mitaki28";
|
||||
version = "0.2.4";
|
||||
sha256 = "0sys2h4jvnannlk2q02lprc2ss9nkgh0f0kwa188i7viaprpnx23";
|
||||
}
|
||||
{
|
||||
name = "dotnet-interactive-vscode";
|
||||
publisher = "ms-dotnettools";
|
||||
version = "1.0.3103011";
|
||||
sha256 = "a3u9NKsqHZKhZkKqJqo+LgJFTL2yhehBepTOFOXE+jY=";
|
||||
}
|
||||
{
|
||||
name = "python";
|
||||
publisher = "ms-python";
|
||||
version = "2022.0.1814523869";
|
||||
sha256 = "hXTVZ7gbu234zyAg0ZrZPUo6oULB98apxe79U2yQHD4=";
|
||||
}
|
||||
{
|
||||
name = "mono-debug";
|
||||
publisher = "ms-vscode";
|
||||
version = "0.16.2";
|
||||
sha256 = "10hixqkw5r3cg52xkbky395lv72sb9d9wrngdvmrwx62hkbk5465";
|
||||
}
|
||||
{
|
||||
name = "Theme-MarkdownKit";
|
||||
publisher = "ms-vscode";
|
||||
version = "0.1.4";
|
||||
sha256 = "1im78k2gaj6cri2jcvy727qdy25667v0f7vv3p3hv13apzxgzl0l";
|
||||
}
|
||||
{
|
||||
name = "trailing-spaces";
|
||||
publisher = "shardulm94";
|
||||
version = "0.3.1";
|
||||
sha256 = "0h30zmg5rq7cv7kjdr5yzqkkc1bs20d72yz9rjqag32gwf46s8b8";
|
||||
}
|
||||
{
|
||||
name = "debug";
|
||||
publisher = "webfreak";
|
||||
version = "0.25.1";
|
||||
sha256 = "1l01sv6kwh8dlv3kygkkd0z9m37hahflzd5bx1wwij5p61jg7np9";
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user