Use flakes (#6)

This commit is contained in:
Patrick Stevens
2022-02-06 14:40:14 +00:00
committed by GitHub
parent 278ef5278d
commit 2463b3275b
8 changed files with 250 additions and 132 deletions

2
.gitignore vendored
View File

@@ -1,4 +1,4 @@
result/ result
.idea/ .idea/
bin/ bin/
obj/ obj/

View File

@@ -1,16 +1,10 @@
{ config, lib, pkgs, ... }: { pkgs, ... }:
let python = import ./python.nix { inherit pkgs; }; in let python = import ./python.nix { inherit pkgs; }; in
{ {
nix.useDaemon = true; 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: # List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget # $ nix-env -qaP | grep wget
@@ -31,12 +25,6 @@ let python = import ./python.nix { inherit pkgs; }; in
# $ darwin-rebuild switch -I darwin-config=$HOME/.config/nixpkgs/darwin/configuration.nix # $ darwin-rebuild switch -I darwin-config=$HOME/.config/nixpkgs/darwin/configuration.nix
environment.darwinConfig = "$HOME/.nixpkgs/darwin-configuration.nix"; environment.darwinConfig = "$HOME/.nixpkgs/darwin-configuration.nix";
nixpkgs.overlays = import ./overlays.nix;
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"vscode"
];
# Auto upgrade nix package and the daemon service. # Auto upgrade nix package and the daemon service.
services.nix-daemon.enable = true; services.nix-daemon.enable = true;
nix.package = pkgs.nixFlakes; nix.package = pkgs.nixFlakes;

86
flake.lock generated Normal file
View File

@@ -0,0 +1,86 @@
{
"nodes": {
"darwin": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1642495030,
"narHash": "sha256-u1ZlFbLWzkM6zOfuZ1tr0tzTuDWucOYwALPWDWLorkE=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "bcdb6022b3a300abf59cb5d0106c158940f5120e",
"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": 1643933104,
"narHash": "sha256-NZPuFxRsZKN8pjRuHPpzlMyt6JQhcjiduBG8bMghSjE=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "63dccc4e60422c1db2c3929b2fd1541f36b7e664",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1643653624,
"narHash": "sha256-+8hLMsQrZ2rkvcEtEId6HMe8GPxVb5ga+Vh1fdsqJDU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a529f0c125a78343b145a8eb2b915b0295e4f459",
"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
View 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; };
}
];
};
};
};
}

138
home.nix
View File

@@ -1,7 +1,7 @@
{ config, pkgs, ... }: { nixpkgs, ... }:
let username = "Patrick"; in let username = "Patrick"; in
let dotnet = pkgs.dotnet-sdk_6; in let dotnet = nixpkgs.dotnet-sdk_6; in
{ {
imports = [ ./rider ]; imports = [ ./rider ];
@@ -23,61 +23,64 @@ let dotnet = pkgs.dotnet-sdk_6; in
# You can update Home Manager without changing this value. See # You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version # the Home Manager release notes for a list of state version
# changes in each release. # changes in each release.
home.stateVersion = "21.11"; home.stateVersion = "22.05";
home.packages = home.packages =
[ [
pkgs.rust-analyzer nixpkgs.rust-analyzer
pkgs.tmux nixpkgs.tmux
pkgs.wget nixpkgs.wget
pkgs.youtube-dl nixpkgs.youtube-dl
pkgs.cmake nixpkgs.cmake
pkgs.gnumake nixpkgs.gnumake
pkgs.gcc nixpkgs.gcc
pkgs.gdb nixpkgs.gdb
pkgs.hledger nixpkgs.hledger
pkgs.hledger-web nixpkgs.hledger-web
dotnet dotnet
pkgs.docker nixpkgs.docker
pkgs.jitsi-meet nixpkgs.jitsi-meet
#pkgs.handbrake #nixpkgs.handbrake
pkgs.ripgrep nixpkgs.ripgrep
pkgs.elan nixpkgs.elan
pkgs.coreutils-prefixed nixpkgs.coreutils-prefixed
pkgs.shellcheck nixpkgs.shellcheck
pkgs.html-tidy nixpkgs.html-tidy
pkgs.hugo nixpkgs.hugo
#pkgs.agda #nixpkgs.agda
pkgs.pijul nixpkgs.pijul
pkgs.universal-ctags nixpkgs.universal-ctags
pkgs.asciinema nixpkgs.asciinema
pkgs.git-lfs nixpkgs.git-lfs
pkgs.imagemagick nixpkgs.imagemagick
nixpkgs.nixpkgs-fmt
nixpkgs.rnix-lsp
]; ];
programs.vscode = { programs.vscode = {
enable = true; enable = true;
package = pkgs.vscode; package = nixpkgs.vscode;
extensions = import ./vscode-extensions.nix { inherit pkgs; }; extensions = import ./vscode-extensions.nix { pkgs = nixpkgs; };
userSettings = { userSettings = {
workbench.colorTheme = "Default High Contrast"; workbench.colorTheme = "Default High Contrast";
"files.Exclude" = { "files.Exclude" = {
"**/.git" = true; "**/.git" = true;
"**/.DS_Store" = true; "**/.DS_Store" = true;
"**/Thumbs.db" = true; "**/Thumbs.db" = true;
"**/*.olean" = true; "**/*.olean" = true;
}; "**/result" = 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/lean4/bin/lean";
"lean.memoryLimit" = 8092;
}; };
"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 = { programs.tmux = {
shell = "\${pkgs.zsh}/bin/zsh"; shell = "\${nixpkgs.zsh}/bin/zsh";
}; };
programs.zsh = { programs.zsh = {
@@ -97,15 +100,15 @@ let dotnet = pkgs.dotnet-sdk_6; in
EDITOR = "vim"; EDITOR = "vim";
LC_ALL = "en_US.UTF-8"; LC_ALL = "en_US.UTF-8";
LC_CTYPE = "en_US.UTF-8"; LC_CTYPE = "en_US.UTF-8";
RUSTFLAGS = "-L ${pkgs.libiconv}/lib"; RUSTFLAGS = "-L ${nixpkgs.libiconv}/lib";
RUST_BACKTRACE = "full"; RUST_BACKTRACE = "full";
}; };
shellAliases = { shellAliases = {
vim = "nvim"; vim = "nvim";
view = "vim -R"; 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'"; 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"; 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 = "${pkgs.darwin.cctools}/bin/ar"; ar = "${nixpkgs.darwin.cctools}/bin/ar";
}; };
}; };
@@ -115,7 +118,7 @@ let dotnet = pkgs.dotnet-sdk_6; in
}; };
programs.git = { programs.git = {
package = pkgs.gitAndTools.gitFull; package = nixpkgs.gitAndTools.gitFull;
enable = true; enable = true;
userName = "Smaug123"; userName = "Smaug123";
userEmail = "patrick+github@patrickstevens.co.uk"; userEmail = "patrick+github@patrickstevens.co.uk";
@@ -140,10 +143,10 @@ let dotnet = pkgs.dotnet-sdk_6; in
addIgnoredFile = false; addIgnoredFile = false;
}; };
"filter \"lfs\"" = { "filter \"lfs\"" = {
clean = "${pkgs.git-lfs} clean -- %f"; clean = "${nixpkgs.git-lfs} clean -- %f";
smudge = "${pkgs.git-lfs}/bin/git-lfs smudge --skip -- %f"; smudge = "${nixpkgs.git-lfs}/bin/git-lfs smudge --skip -- %f";
process = "${pkgs.git-lfs}/bin/git-lfs filter-process"; process = "${nixpkgs.git-lfs}/bin/git-lfs filter-process";
required = true; required = true;
}; };
pull = { pull = {
twohead = "ort"; twohead = "ort";
@@ -152,17 +155,25 @@ let dotnet = pkgs.dotnet-sdk_6; in
}; };
programs.neovim.enable = true; programs.neovim.enable = true;
programs.neovim.plugins = with pkgs.vimPlugins; [ programs.neovim.plugins = with nixpkgs.vimPlugins; [
molokai molokai
tagbar tagbar
{ plugin = rust-vim; {
config = "let g:rustfmt_autosave = 1"; } plugin = rust-vim;
{ plugin = syntastic; 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'] config = ''let g:syntastic_rust_checkers = ['cargo']
let g:syntastic_always_populate_loc_list = 1 let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1 let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1 let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0''; } let g:syntastic_check_on_wq = 0'';
}
YouCompleteMe YouCompleteMe
tagbar tagbar
@@ -179,14 +190,13 @@ let g:syntastic_check_on_wq = 0''; }
home.file.".ideavimrc".source = ./ideavimrc; home.file.".ideavimrc".source = ./ideavimrc;
home.file.".config/youtube-dl/config".source = ./youtube-dl.conf; home.file.".config/youtube-dl/config".source = ./youtube-dl.conf;
programs.emacs = { programs.emacs = {
enable = true; enable = true;
package = pkgs.emacsGcc; package = nixpkgs.emacsGcc;
extraPackages = (epkgs: []); extraPackages = (epkgs: [ ]);
extraConfig = '' extraConfig = ''
(load-file (let ((coding-system-for-read 'utf-8)) (load-file (let ((coding-system-for-read 'utf-8))
(shell-command-to-string "agda-mode locate"))) (shell-command-to-string "agda-mode locate")))
''; '';
}; };
} }

View File

@@ -7,8 +7,4 @@
} }
); );
}) })
(import (builtins.fetchTarball {
url = https://github.com/nix-community/emacs-overlay/archive/9516033899da467b8fcee6536a61ea66ebd0c4fa.tar.gz;
}))
] ]

View File

@@ -9,7 +9,7 @@ in
let packageOverrides = self: super: { let packageOverrides = self: super: {
# Test failures on darwin ("windows-1252"); just skip pytest # Test failures on darwin ("windows-1252"); just skip pytest
# (required for elan) # (required for elan)
beautifulsoup4 = super.beautifulsoup4.overridePythonAttrs(old: { pytestCheckPhase="true"; }); beautifulsoup4 = super.beautifulsoup4.overridePythonAttrs (old: { pytestCheckPhase = "true"; });
}; };
in in

View File

@@ -1,122 +1,114 @@
{ pkgs }: { pkgs }:
with pkgs.vscode-extensions; [ with pkgs.vscode-extensions; [
bbenoist.nix bbenoist.nix
haskell.haskell haskell.haskell
yzhang.markdown-all-in-one yzhang.markdown-all-in-one
james-yu.latex-workshop james-yu.latex-workshop
vscodevim.vim vscodevim.vim
# Doesn't work with vscodium, and unfree # Not supported on Darwin, apparently
# ms-vscode-remote.remote-ssh # ms-dotnettools.csharp
# Not supported on Darwin, apparently
# ms-dotnettools.csharp
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{ {
name = "remote-containers"; name = "remote-containers";
publisher = "ms-vscode-remote"; publisher = "ms-vscode-remote";
version = "0.218.0"; version = "0.218.0";
sha256 = "4Li0sYfHOsJMn5FJtvDTGKoGPcRmoosD9tZ7q9H9DfQ="; sha256 = "4Li0sYfHOsJMn5FJtvDTGKoGPcRmoosD9tZ7q9H9DfQ=";
} }
{ {
name = "remote-ssh"; name = "remote-ssh";
publisher = "ms-vscode-remote"; publisher = "ms-vscode-remote";
version = "0.73.2022020215"; version = "0.73.2022020215";
sha256 = "hTRfoUHKrIOSV8eZ/62ewaII5291huXjOZ++dRUmKoI="; sha256 = "hTRfoUHKrIOSV8eZ/62ewaII5291huXjOZ++dRUmKoI=";
} }
{ {
name = "vscode-docker"; name = "vscode-docker";
publisher = "ms-azuretools"; publisher = "ms-azuretools";
version = "1.18.0"; version = "1.18.0";
sha256 = "UPUfTOc5xJhI5ACm2oyWqtZ4zNxZjy16D6Mf30eHFEI="; sha256 = "UPUfTOc5xJhI5ACm2oyWqtZ4zNxZjy16D6Mf30eHFEI=";
} }
{ {
name = "code-gnu-global"; name = "code-gnu-global";
publisher = "austin"; publisher = "austin";
version = "0.2.2"; version = "0.2.2";
sha256 = "1fz89m6ja25aif6wszg9h2fh5vajk6bj3lp1mh0l2b04nw2mzhd5"; sha256 = "1fz89m6ja25aif6wszg9h2fh5vajk6bj3lp1mh0l2b04nw2mzhd5";
} }
{ {
name = "rust-analyzer"; name = "rust-analyzer";
publisher = "matklad"; publisher = "matklad";
version = "0.3.904"; version = "0.3.904";
sha256 = "t5CCUdFCiSYrMsBHG5eOfg3sXMacFWiR0hmVa7S1i8Y="; sha256 = "t5CCUdFCiSYrMsBHG5eOfg3sXMacFWiR0hmVa7S1i8Y=";
} }
{ {
name = "vscode-lldb"; name = "vscode-lldb";
publisher = "vadimcn"; publisher = "vadimcn";
version = "1.6.10"; version = "1.6.10";
sha256 = "CGVVs//jIZM8uX7Wc9gM4aQGwECi88eIpfPqU2hKbeA="; sha256 = "CGVVs//jIZM8uX7Wc9gM4aQGwECi88eIpfPqU2hKbeA=";
} }
{ {
name = "toml"; name = "toml";
publisher = "be5invis"; publisher = "be5invis";
version = "0.6.0"; version = "0.6.0";
sha256 = "yk7buEyQIw6aiUizAm+sgalWxUibIuP9crhyBaOjC2E="; sha256 = "yk7buEyQIw6aiUizAm+sgalWxUibIuP9crhyBaOjC2E=";
} }
{ {
name = "Ionide-Paket"; name = "Ionide-Paket";
publisher = "Ionide"; publisher = "Ionide";
version = "2.0.0"; version = "2.0.0";
sha256 = "1455zx5p0d30b1agdi1zw22hj0d3zqqglw98ga8lj1l1d757gv6v"; sha256 = "1455zx5p0d30b1agdi1zw22hj0d3zqqglw98ga8lj1l1d757gv6v";
} }
{ {
name = "lean"; name = "lean";
publisher = "jroesch"; publisher = "jroesch";
version = "0.16.44"; version = "0.16.44";
sha256 = "hjflz5JHVr1YWq6QI9DpdNPY1uL7lAuQTMAdwCtLEfY="; sha256 = "hjflz5JHVr1YWq6QI9DpdNPY1uL7lAuQTMAdwCtLEfY=";
} }
{ {
name = "language-haskell"; name = "language-haskell";
publisher = "justusadam"; publisher = "justusadam";
version = "3.4.0"; version = "3.4.0";
sha256 = "0ab7m5jzxakjxaiwmg0jcck53vnn183589bbxh3iiylkpicrv67y"; sha256 = "0ab7m5jzxakjxaiwmg0jcck53vnn183589bbxh3iiylkpicrv67y";
} }
{ {
name = "vscode-clang"; name = "vscode-clang";
publisher = "mitaki28"; publisher = "mitaki28";
version = "0.2.4"; version = "0.2.4";
sha256 = "0sys2h4jvnannlk2q02lprc2ss9nkgh0f0kwa188i7viaprpnx23"; sha256 = "0sys2h4jvnannlk2q02lprc2ss9nkgh0f0kwa188i7viaprpnx23";
} }
{ {
name = "dotnet-interactive-vscode"; name = "dotnet-interactive-vscode";
publisher = "ms-dotnettools"; publisher = "ms-dotnettools";
version = "1.0.2606011"; version = "1.0.2606011";
sha256 = "a3u9NKsqHZKhZkKqJqo+LgJFTL2yhehBepTOFOXE+jY="; sha256 = "a3u9NKsqHZKhZkKqJqo+LgJFTL2yhehBepTOFOXE+jY=";
} }
{ {
name = "python"; name = "python";
publisher = "ms-python"; publisher = "ms-python";
version = "2021.12.1559732655"; version = "2021.12.1559732655";
sha256 = "hXTVZ7gbu234zyAg0ZrZPUo6oULB98apxe79U2yQHD4="; sha256 = "hXTVZ7gbu234zyAg0ZrZPUo6oULB98apxe79U2yQHD4=";
} }
{ {
name = "remote-containers";
publisher = "ms-vscode-remote";
version = "0.212.0";
sha256 = "w7vQRwhqTXHnQDRVNUCMBdX/rP96IhL9ejn0uSTzyyw=";
}
{
name = "mono-debug"; name = "mono-debug";
publisher = "ms-vscode"; publisher = "ms-vscode";
version = "0.16.2"; version = "0.16.2";
sha256 = "10hixqkw5r3cg52xkbky395lv72sb9d9wrngdvmrwx62hkbk5465"; sha256 = "10hixqkw5r3cg52xkbky395lv72sb9d9wrngdvmrwx62hkbk5465";
} }
{ {
name = "Theme-MarkdownKit"; name = "Theme-MarkdownKit";
publisher = "ms-vscode"; publisher = "ms-vscode";
version = "0.1.4"; version = "0.1.4";
sha256 = "1im78k2gaj6cri2jcvy727qdy25667v0f7vv3p3hv13apzxgzl0l"; sha256 = "1im78k2gaj6cri2jcvy727qdy25667v0f7vv3p3hv13apzxgzl0l";
} }
{ {
name = "trailing-spaces"; name = "trailing-spaces";
publisher = "shardulm94"; publisher = "shardulm94";
version = "0.3.1"; version = "0.3.1";
sha256 = "0h30zmg5rq7cv7kjdr5yzqkkc1bs20d72yz9rjqag32gwf46s8b8"; sha256 = "0h30zmg5rq7cv7kjdr5yzqkkc1bs20d72yz9rjqag32gwf46s8b8";
} }
{ {
name = "debug"; name = "debug";
publisher = "webfreak"; publisher = "webfreak";
version = "0.25.1"; version = "0.25.1";
sha256 = "1l01sv6kwh8dlv3kygkkd0z9m37hahflzd5bx1wwij5p61jg7np9"; sha256 = "1l01sv6kwh8dlv3kygkkd0z9m37hahflzd5bx1wwij5p61jg7np9";
} }
] ]